内容
# 跨平台发布工具
[](https://glama.ai/mcp/servers/Aleksey-Panf/crosspost-mcp)
**一个 MCP 服务器,允许 AI 代理将内容跨平台发布到 Telegram、Discord、Mastodon、Bluesky 和 Reddit — 仅使用免费 API。**
[](https://github.com/Aleksey-Panf/crosspost-mcp/actions/workflows/ci.yml)
[](https://www.python.org/downloads/)
[](LICENSE)
[](https://modelcontextprotocol.io/)
[](https://github.com/jlowin/fastmcp)
## 为什么选择 crosspost-mcp
AI 代理现在可以端到端地草拟、研究和完善内容,但发布到社交媒体仍然是手动瓶颈。**crosspost-mcp** 通过 [模型上下文协议](https://modelcontextprotocol.io/) 暴露发布工具,因此 Claude Desktop、Cursor 和其他 MCP 兼容客户端可以代表您发布内容,只需一个提示。
## 演示
Claude 调用 `post_to_discord`,消息立即出现在您的频道中:

## 功能
- **仅使用免费 API** — 没有付费 SaaS 中间商;Telegram Bot API、Discord webhooks 和即将推出的平台 API 都是免费层友好的
- **异步并行发布** — `post_to_all` 并发到每个配置的平台
- **类型提示** — 工具和平台模块上的完整 Python 类型注释
- **数据类配置** — 每个平台的冻结数据类,带有清晰的缺失变量错误
- **易于扩展** — 通过在 `platforms/` 中添加模块并注册工具来添加新平台
## 支持的平台
| 平台 | 状态 | 免费层 | 备注 |
| --- | --- | --- | --- |
| Telegram | ✅ v0.1.0 | 无限制 | Bot API |
| Discord | ✅ v0.1.0 | 无限制 | webhooks |
| Mastodon | 🚧 v0.2.0 | 无限制 | 需要实例 |
| Bluesky | 🚧 v0.3.0 | 无限制 | App Password |
| Reddit | 🚧 v0.4.0 | 速率限制 | OAuth |
## 🚀 快速开始
### 克隆和安装
```bash
git clone https://github.com/Aleksey-Panf/crosspost-mcp.git
cd crosspost-mcp
pip install -e .
```
### 设置凭证
复制示例环境文件并填写您的令牌:
```bash
cp .env.example .env
```
使用您的 Telegram 机器人令牌、Discord webhook URL 和您计划使用的其他平台凭证编辑 `.env`。
### 添加到 Claude Desktop
打开您的 Claude Desktop MCP 配置:
- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
添加服务器条目(调整到您的克隆路径):
```json
{
"mcpServers": {
"crosspost-mcp": {
"command": "crosspost-mcp",
"cwd": "/path/to/crosspost-mcp",
"env": {
"TELEGRAM_BOT_TOKEN": "your_bot_token",
"TELEGRAM_CHAT_ID": "your_chat_id",
"DISCORD_WEBHOOK_URL": "https://discord.com/api/webhooks/..."
}
}
}
}
```
> **提示:** 如果 `crosspost-mcp` 不在您的 PATH 中,请使用虚拟环境中可执行文件的完整路径,或将 `command` 指向 `python`,并使用 `args: ["-m", "crosspost_mcp.server"]`。
Cursor 用户可以在 **设置 → MCP → 添加服务器** 下添加相同的块。
### 重启 Claude Desktop
完全退出并重新启动 Claude Desktop(或在 Cursor 中重新加载 MCP)。`post_to_telegram`、`post_to_discord` 和 `post_to_all` 工具应该出现在工具列表中。
## 使用示例
为您的 AI 代理提供自然语言指令 — 它会自动选择合适的 MCP 工具。
**示例 1 — 仅限 Discord**
> 发布到 Discord: "v0.1.0 已上线 — crosspost-mcp 现支持 Telegram 和 Discord webhooks."
Claude 调用 `post_to_discord`,并返回 Discord `message_id` 和 `channel_id`。
**示例 2 — 仅限 Telegram**
> 在 Telegram 上宣布我们已经发布了并行跨平台发布功能。使用粗体显示版本号。
Claude 调用 `post_to_telegram`,并使用 HTML 格式化 (`<b>v0.1.0</b>`),并确认 `message_id`。
**示例 3 — 跨平台发布**
> 将此内容发布到所有平台: "新博客文章已上线 — 链接在简介中。"
Claude 调用 `post_to_all`,它并行发布到 Telegram 和 Discord,并返回综合状态 (`ok`、`partial` 或 `error`) 和每个平台的结果。
## 🔧 工具参考
### `post_to_telegram`
将消息发布到配置的 Telegram 频道。
| | |
| --- | --- |
| **签名** | `post_to_telegram(text: str) -> dict` |
| **参数** | `text` — 消息正文(最多 4,096 个字符)。支持 HTML: `<b>`、`<i>`、`<code>`、`<a href="">` |
| **返回** | 平台结果字典 |
**示例响应:**
```json
{
"platform": "telegram",
"status": "ok",
"message_id": 42,
"chat_id": -1001234567890
}
```
### `post_to_discord`
通过 webhook 将消息发布到配置的 Discord 频道。
| | |
| --- | --- |
| **签名** | `post_to_discord(text: str) -> dict` |
| **参数** | `text` — 消息内容(最多 2,000 个字符)。支持 Discord Markdown: `**bold**`、`*italic*`、 `` `code` ``、 `` ```block``` `` |
| **返回** | 平台结果字典 |
**示例响应:**
```json
{
"platform": "discord",
"status": "ok",
"message_id": "1234567890123456789",
"channel_id": "9876543210987654321"
}
```
### `post_to_all`
并行将相同消息发布到所有配置的平台。
| | |
| --- | --- |
| **签名** | `post_to_all(text: str) -> dict` |
| **参数** | `text` — 消息文本。平台独立强制执行其自己的长度限制 |
| **返回** | 聚合结果,包含整体状态和每个平台的条目 |
个别平台的故障不会中止其他平台。每个故障都使用 `status: "error"` 和 `error` 消息报告。
**示例响应:**
```json
{
"status": "ok",
"results": [
{
"platform": "telegram",
"status": "ok",
"message_id": 42,
"chat_id": -1001234567890
},
{
"platform": "discord",
"status": "ok",
"message_id": "1234567890123456789",
"channel_id": "9876543210987654321"
}
]
}
```
## 获取凭证
### Telegram
1. 打开 Telegram 并与 [@BotFather](https://t.me/BotFather) 聊天。
2. 发送 `/newbot`,按照提示操作,并复制 **机器人令牌**。
3. 将机器人添加为目标频道的 **管理员**,并具有 **发布消息** 权限。
4. 获取 **聊天 ID**:
- 对于公共频道,使用 `@channelname`(包括 `@`)。
- 对于私人频道,将频道消息转发到 [@userinfobot](https://t.me/userinfobot) 或在频道中发布后调用 Bot API 的 `getUpdates`。
5. 在您的 `.env` 中设置 `TELEGRAM_BOT_TOKEN` 和 `TELEGRAM_CHAT_ID`。
### Discord
1. 打开您的 Discord 服务器并进入目标 **频道**。
2. 点击齿轮图标 → **集成** → **Webhook** → **新建 Webhook**。
3. 命名 webhook,选择频道,然后点击 **复制 Webhook URL**。
4. 在您的 `.env` 中设置 `DISCORD_WEBHOOK_URL`。
不需要机器人应用程序或 OAuth 流 — webhook 是 AI 代理发布的简单路径。
## 项目结构
```
crosspost-mcp/
├── assets/ # 截图和演示图像
├── src/
│ └── crosspost_mcp/
│ ├── __init__.py
│ ├── config.py # 从 .env 加载的数据类配置
│ ├── server.py # FastMCP 服务器和工具定义
│ └── platforms/
│ ├── __init__.py
│ ├── telegram.py # Telegram Bot API 客户端
│ └── discord.py # Discord webhook 客户端
├── tests/
├── .env.example # 凭证模板
├── pyproject.toml
└── README.md
```
## 路线图
- [x] Telegram 支持
- [x] Discord 支持
- [x] 并行跨平台发布
- [ ] Mastodon 支持 (v0.2.0)
- [ ] Bluesky 支持 (v0.3.0)
- [ ] Reddit 支持 (v0.4.0)
- [ ] 媒体/图像附件
- [ ] 预定发布
## 贡献
欢迎贡献 — 错误报告、平台模块和文档改进都有帮助。在提交拉取请求之前,请打开 [问题](https://github.com/Aleksey-Panf/crosspost-mcp/issues) 讨论较大的更改。
## 自定义 MCP 开发
我根据需求为自定义平台和工作流构建生产就绪的 MCP 服务器。
- 交付:3-7 天
- 工作流:仅异步,无调用
- 付款:USDT
- 联系方式: [Telegram @AlexAi14](https://t.me/AlexAi14) 或 [打开 GitHub 问题](https://github.com/Aleksey-Panf/crosspost-mcp/issues)
## 许可证
MIT — 参见 [LICENSE](LICENSE) 了解详情。
---
**主题:** `mcp` · `模型上下文协议` · `fastmcp` · `telegram-bot` · `discord-webhook` · `ai-agents` · `claude` · `llm-tools`