README
🚀 Twitter MCP 服务器
这是一个模型上下文协议(MCP)服务器,支持Claude和其他AI助手在Twitter/X上发布推文,支持文本和图像,并具备AI图像生成功能。
🚀 快速开始
本项目是一个支持Claude和其他AI助手在Twitter/X上发布推文的MCP服务器。它支持文本和图像推文发布,还具备AI图像生成能力。以下是使用前的准备和操作步骤。
✨ 主要特性
- 通过OAuth 2.0发布文本推文。
- 通过OAuth 1.0a上传并附加图像(每条推文最多4张)。
- 新增:使用Google Gemini进行AI图像生成。
- 自动刷新OAuth 2.0令牌。
- 将凭证安全存储在
~/.twitter_cli/目录中。 - 可配置图像存储目录。
- 通过交互式CLI工具轻松设置。
📦 安装指南
# 克隆或下载此包
cd twitter-package
# 安装依赖
npm install
💻 使用示例
运行MCP服务器
启动Twitter MCP服务器:
npm start
启动图像生成MCP服务器:
npm run start:image
服务器将在标准输入输出上运行,可与Claude Desktop或其他MCP客户端配合使用。
配置Claude Desktop
将以下内容添加到Claude Desktop配置文件中:
macOS:~/Library/Application Support/Claude/claude_desktop_config.json
Windows:%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"twitter": {
"command": "node",
"args": ["/absolute/path/to/twitter-package/src/mcp-server/index.js"]
},
"generate-image": {
"command": "node",
"args": ["/absolute/path/to/twitter-package/src/mcp-server/generate-image.js"]
}
}
}
将/absolute/path/to/twitter-package/替换为实际目录路径。
使用Claude
配置完成后,你可以要求Claude执行以下操作: 发布推文:
Post a tweet saying "Hello from Claude! 👋"
发布带图像的推文:
Post a tweet "Check out this amazing view!" with /path/to/image.jpg
生成AI图像:
Generate an image of a futuristic cityscape at sunset
生成并发布图像推文:
Generate an image of a cute robot, then post it to Twitter with the caption "Meet my new AI friend! 🤖"
📚 详细文档
获取Twitter API凭证
步骤1:创建Twitter开发者账户
- 访问 Twitter开发者门户。
- 使用你的Twitter账户登录。
- 申请开发者账户(如果你还没有)。
- 创建一个新项目和应用。
步骤2:配置你的应用
- 在 开发者门户 中访问你的应用设置。
- 导航到 "用户认证设置"。
- 点击 "设置"。
- 配置以下内容:
- 应用权限:选择 "读取和写入"。
- 应用类型:选择 "Web应用、自动化应用或机器人"。
- 回调URI / 重定向URL:输入
http://localhost:8085/callback。 - 网站URL:输入任何有效URL(例如
https://example.com)。
步骤3:获取OAuth 2.0凭证
- 在你的应用设置中,转到 "密钥和令牌" 标签。
- 在 "OAuth 2.0客户端ID和客户端密钥" 下,你会找到:
- 客户端ID(以随机字符串开头)。
- 客户端密钥(如有需要,点击 "重新生成")。
- 保存这些用于OAuth 2.0设置。
步骤4:获取OAuth 1.0a凭证
- 在同一个 "密钥和令牌" 标签中。
- 在 "认证令牌" 下,你会找到:
- API密钥(也称为消费者密钥)。
- API密钥密钥(也称为消费者密钥)。
- 访问令牌。
- 访问令牌密钥。
- 如果你没有看到访问令牌/密钥,点击 "生成"。
- 保存这些用于OAuth 1.0a设置。
设置
1. 设置OAuth 2.0(发布推文必需)
运行OAuth 2.0设置向导:
npm run setup-oauth2
你将被提示:
- 输入你的 客户端ID。
- 输入你的 客户端密钥。
- 在浏览器中授权应用。
- 完成认证流程。
这将把你的凭证保存到
~/.twitter_cli/config.json和~/.twitter_cli/tokens.json。
2. 设置OAuth 1.0a(图像上传必需)
运行OAuth 1.0a设置向导:
npm run setup-oauth1
你将被提示:
- 输入你的 API密钥(消费者密钥)。
- 输入你的 API密钥密钥(消费者密钥)。
- 输入你的 访问令牌。
- 输入你的 访问令牌密钥。
这将把你的凭证保存到
~/.twitter_cli/oauth1_tokens.json。
3. 设置Google Gemini API(可选 - 用于图像生成)
运行Gemini API设置向导:
npm run setup-gemini
你将被提示:
- 输入你的 Gemini API密钥(从https://aistudio.google.com/apikey获取)。
- 配置 图像存储目录(默认:
~/.twitter_cli/generated_images)。 这将把你的配置保存到~/.twitter_cli/gemini.json。
4. 快速设置(所有服务)
按顺序运行所有设置向导:
# 仅Twitter
npm run setup
# Twitter + Gemini(包含所有内容)
npm run setup:all
MCP工具参考
post_tweet
在Twitter/X上发布带有可选图像的推文。 参数:
text(字符串,必需):推文文本(最多280个字符)。image_paths(字符串数组,可选):图像文件路径(最多4张图像)。 返回:- 包含推文URL和ID的成功消息。 示例:
{
"text": "Hello from the MCP server!",
"image_paths": ["/path/to/image1.jpg", "/path/to/image2.png"]
}
generate_image
使用Google的Gemini API根据文本提示生成AI图像。 参数:
prompt(字符串,必需):要生成图像的文本描述。 返回:- 生成的图像路径和附带文本。 示例:
{
"prompt": "A serene mountain landscape at sunset with a lake reflection"
}
配置: 图像存储目录可以通过以下三种方式配置(优先级顺序):
- 环境变量:
export TWITTER_MCP_IMAGE_DIR="/your/custom/path" - 配置文件:在
~/.twitter_cli/gemini.json中添加"image_storage_dir": "/your/custom/path" - 默认:
~/.twitter_cli/generated_images
文件结构
twitter-package/
├── package.json # 包配置
├── README.md # 本文件
├── SETUP_GUIDE.md # 快速设置指南
├── src/
│ ├── mcp-server/
│ │ ├── index.js # Twitter MCP服务器
│ │ └── generate-image.js # 图像生成MCP服务器
│ ├── auth/
│ │ ├── oauth2-setup.js # OAuth 2.0设置向导
│ │ ├── oauth1-setup.js # OAuth 1.0a设置向导
│ │ └── gemini-setup.js # Gemini API设置向导
│ └── lib/
│ └── config.js # 共享配置实用程序
└── ~/.twitter_cli/ # 设置期间创建
├── config.json # OAuth 2.0客户端凭证
├── tokens.json # OAuth 2.0访问/刷新令牌
├── oauth1_tokens.json # OAuth 1.0a凭证
├── gemini.json # Gemini API配置
└── generated_images/ # 生成图像的存储目录(默认)
配置文件
所有配置文件都存储在~/.twitter_cli/中,具有安全权限(0600)。
config.json(OAuth 2.0客户端凭证)
{
"client_id": "your_client_id",
"client_secret": "your_client_secret"
}
tokens.json(OAuth 2.0访问令牌)
{
"access_token": "...",
"refresh_token": "...",
"expires_at": 1234567890,
"scope": "tweet.read tweet.write users.read offline.access"
}
oauth1_tokens.json(OAuth 1.0a凭证)
{
"oauth1_api_key": "your_api_key",
"oauth1_api_secret": "your_api_secret",
"access_token": "your_access_token",
"access_token_secret": "your_access_token_secret"
}
gemini.json(Gemini API配置)
{
"gemini_api_key": "your_gemini_api_key",
"image_storage_dir": "/custom/path/to/images"
}
故障排除
认证错误
错误:"未认证。请先运行 'npm run setup-oauth2'。"
- 你需要运行OAuth 2.0设置:
npm run setup-oauth2
错误:"未找到OAuth 1.0a凭证。请先运行 'npm run setup-oauth1'。"
- 你需要运行OAuth 1.0a设置:
npm run setup-oauth1
错误:"刷新令牌失败"
- 你的刷新令牌可能已过期。
- 重新运行OAuth 2.0设置:
npm run setup-oauth2
媒体上传错误
错误:"上传媒体失败"
- 确保你已运行OAuth 1.0a设置:
npm run setup-oauth1 - 验证你的应用在Twitter开发者门户中具有 "读取和写入" 权限。
- 检查你的图像文件是否存在且为支持的格式(jpg、png、gif、webp)。
- 确保图像大小不超过15MB。
权限错误
错误:"403禁止访问"
- 你的应用可能没有正确的权限。
- 转到Twitter开发者门户 → 你的应用 → 设置。
- 确保 "读取和写入" 权限已启用。
- 更改权限后,你可能需要重新生成令牌。
图像生成错误
错误:"未找到Gemini API密钥。请先运行 'npm run setup-gemini'。"
- 你需要设置Gemini API:
npm run setup-gemini
错误:"生成图像失败"
- 验证你的Gemini API密钥是否有效。
- 在https://aistudio.google.com/ 检查你的API配额。
- 确保你的提示合适并符合内容政策。
- 尝试更简单或更具体的提示。
错误:"图像存储目录权限被拒绝"
- 检查配置的存储目录是否可写。
- 默认位置:
~/.twitter_cli/generated_images - 如有需要,在
~/.twitter_cli/gemini.json中更改目录。
安全
- 所有凭证都存储在
~/.twitter_cli/中,具有安全文件权限(0600)。 - OAuth 2.0使用PKCE(代码交换证明密钥)以增强安全性。
- 访问令牌在过期时会自动刷新。
- 切勿将
~/.twitter_cli/目录提交到版本控制。
API限制
- 推文长度:280个字符。
- 每条推文的图像数量:最多4张。
- 图像大小:每张图像15MB。
- 支持的格式:JPG、PNG、GIF、WebP。
- 速率限制:适用标准Twitter API速率限制。
📄 许可证
本项目采用MIT许可证。
贡献
欢迎贡献!请随时提交问题或拉取请求。
支持
如有问题和疑问:
- 查看 Twitter API文档。
- 查看 MCP文档。
- 在GitHub上打开一个问题。
致谢
本项目使用了以下工具构建:
Scan to contact