---
slug: "mcp-x-server"
source_type: "readme"
source_url: "https://cdn.jsdelivr.net/gh/wylu1037/mcp_x_server@main/README.md"
repo: "https://github.com/wylu1037/mcp_x_server"
source_file: "README.md"
branch: "main"
---
# MCP X Server
What can you do with MCP X Server? Give it a sentence or a topic, and it will help you write and refine a tweet, then publish it to X.

## How to run with STDIO

### Local
Configure the MCP server in mcp.json.
```json
{
    "mcpServices": {
        "x-mcp": {
            "command": "uv",
            "args": [
                "run",
                "--with",
                "fastmcp",
                "--with",
                "pydantic-ai",
                "--with",
                "pydantic-ai-slim[duckduckgo,openai]",
                "--with",
                "dotenv",
                "--with",
                "python-twitter-v2",
                "fastmcp",
                "run",
                "mcp_x_server/server.py"
            ],
            "env": {
                "CONSUMER_KEY": "*******************",
                "CONSUMER_SECRET": "*******************",
                "ACCESS_TOKEN": "*******************",
                "ACCESS_SECRET": "*******************",
                "DEEPSEEK_API_KEY": "*******************"
            }
        }
    }
}
```

### Docker
Configure the MCP server in mcp.json.
```json
{
    "mcpServices": {
        "x-mcp-docker": {
        "command": "docker",
        "args": [
          "run",
          "-i",
          "--rm",
          "--name",
          "mcp-x-server",
          "-e",
          "CONSUMER_KEY",
          "-e",
          "CONSUMER_SECRET",
          "-e",
          "ACCESS_TOKEN",
          "-e",
          "ACCESS_SECRET",
          "-e",
          "DEEPSEEK_API_KEY",
          "wylu1037/mcp-x-server:latest"
        ],
        "env": {
          "CONSUMER_KEY": "********************************",
          "CONSUMER_SECRET": "********************************",
          "ACCESS_TOKEN": "********************************",
          "ACCESS_SECRET": "********************************",
          "DEEPSEEK_API_KEY": "sk-********************************"
        }
      }
    }
}
```

### UVX
Configure the MCP server in mcp.json.
```json
{
    "mcpServices": {
        "mcp-x-server": {
        "command": "uvx",
        "args": [
          "mcp-x-server"
        ],
        "env": {
          "CONSUMER_KEY": "********************************",
          "CONSUMER_SECRET": "********************************",
          "ACCESS_TOKEN": "********************************",
          "ACCESS_SECRET": "********************************",
          "DEEPSEEK_API_KEY": "sk-********************************"
        }
      }
    }
}
```

## Run with SSE
Run MCP server
```shell
fastmcp run --transport sse mcp_x_server/server.py
```

Configure the MCP server in mcp.json.
```json
{
    "mcpServices": {
        "mcp-x-server": {
            "url": "http://localhost:8000/sse"
        }
    }
}
```

## Publish to PyPI（发布到 Python 包管理中心）

推荐使用 `uv` 一站式完成构建和发布，本项目已经包含 `pyproject.toml` 与 `uv.lock`，适合这种方式。

### 1. 安装 uv（如尚未安装）

```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
```

或根据官方文档选择适合你平台的安装方式。

### 2. 更新版本号

在 `pyproject.toml` 的 `[project]` 部分更新 `version` 字段，避免与已发布版本重复。

你也可以使用 uv 自动修改版本号，例如：

```bash
uv version --bump patch
```

### 3. 清理旧的构建产物（可选）

```bash
rm -rf dist/ build/ *.egg-info
```

### 4. 使用 uv 构建发行包

```bash
uv build
```

构建完成后，发行包会生成在 `dist/` 目录下（`.whl` 和 `.tar.gz`）。

### 5. 配置 PyPI 凭据

推荐使用 PyPI 的 **API Token**（而不是用户名/密码），并通过环境变量提供给 uv：

```bash
export UV_PUBLISH_TOKEN="pypi-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
```

### 6. 使用 uv 发布到 PyPI

```bash
uv publish
```

如需发布到 TestPyPI，可在 `pyproject.toml` 中配置 [[tool.uv.index]]，然后：

```bash
uv publish --index testpypi
```

> 说明：
> - 传统的 `python -m build` + `twine upload` 流程同样可用，只是这里更推荐使用 uv；
> - 本仓库还保留了 `python setup.py upload` 命令，会自动构建并通过 `twine` 上传包，同时推送 git tag，一般仅在你明确需要旧流程时使用。
