使用说明
X MCP服务器
用于X(Twitter)集成的模型上下文协议(MCP)服务器。提供26个工具,用于阅读时间线、发布、搜索、参与(点赞、转发、书签)、用户查找、关注者导出、提及、点赞、文章和列表。专为与Claude桌面和其他MCP兼容客户端一起使用而设计。
特征
- 时间线和搜索 -主页时间线,搜索最近的帖子(7天窗口)
- 帖子管理 -使用可选媒体创建、回复、引用、删除帖子
- 参与 -喜欢/不喜欢、转发/撤消、书签/取消书签标记
- 用户数据 -提及、点赞帖子、关注者、关注、阻止、静音、拥有列表、关注列表和列表成员资格
- 用户查找 -获取用户资料和他们最近的帖子
- 媒体上传 -通过v2上传API的图像(PNG、JPEG、GIF、WEBP)和视频(MP4、MOV、AVI、WEBM、M4V)
- 双重身份验证 -OAuth 1.0a用于后期操作,OAuth 2.0用于媒体上传(v1.1上传于2025年6月日落)
- 速率限制 -自动跟踪每个端点的速率限制,并显示清晰的错误消息
- TypeScript -全类型安全,模块化文件结构
先决条件
- Node.js>=18.0.0
- X(推特)开发者帐户
- Claude桌面应用程序(或任何兼容MCP的客户端)
X API访问和定价
| 层级 | 成本 | 文章阅读 | 文章写作 | 注释 |
|---|---|---|---|---|
| 自由 | $0 | ~100/月 | ~500/月 | 没有点赞/关注;媒体上传需要OAuth 2.0 |
| 基本 | 每月200美元 | 每月10000美元 | 每月3000美元 | 搜索,有限读取权限 |
| 专业版 | 每月5000美元 | 每月1000000美元 | 每月300000美元 | 完整搜索,过滤流 |
| 按使用付费 | 基于信用 | ~0.005美元/读 | 变化 | 2026年2月推出,200万读上限 |
Like和Follow端点于2025年8月从免费等级中删除。 截至2025年,Follows/Blocks端点仅适用于企业。
安装
git clone https://github.com/DataWhisker/x-mcp-server.git
cd x-mcp-server
npm install
npm run build
认证
服务器支持两种身份验证方法。你需要 至少一个 已配置。
OAuth 1.0a(基本操作所需)
适用于所有发布/参与/搜索/用户操作。
| 环境变量 | 描述 |
|---|---|
TWITTER_API_KEY |
消费者密钥(API密钥) |
TWITTER_API_SECRET |
消费者秘密(API密钥秘密) |
TWITTER_ACCESS_TOKEN |
用户访问令牌 |
TWITTER_ACCESS_SECRET |
用户访问令牌密钥 |
设置: 在 X开发者门户:
- 创建项目和应用程序
- 在“用户身份验证设置”下启用OAuth 1.0a
- 将权限设置为“读写”
- 生成消费者密钥和访问令牌
OAuth 2.0(媒体上传所需)
v1.1媒体上传端点于2025年6月日落。媒体上传现在需要通过v2上传API的OAuth 2.0。
选项A-直接访问令牌:
| 变量 | 描述 |
|---|---|
TWITTER_OAUTH2_ACCESS_TOKEN |
OAuth 2.0用户访问令牌(2小时后过期) |
选项B-自动刷新(建议用于长时间运行的服务器):
| 变量 | 描述 |
|---|---|
TWITTER_CLIENT_ID |
OAuth 2.0客户端ID |
TWITTER_CLIENT_SECRET |
OAuth 2.0客户端密码(公共客户端可选) |
TWITTER_OAUTH2_REFRESH_TOKEN |
OAuth 2.0刷新令牌 |
令牌会自动刷新并持久化到 ~/.x-mcp-tokens.json.
设置: 在 X开发者门户:
- 在您的应用设置中,启用OAuth 2.0
- 将类型设置为“机密客户端”或“公共客户端”
- 添加回调URL
- 请求范围:
tweet.read,tweet.write,users.read,media.write,offline.access,like.read,like.write,bookmark.read,bookmark.write,follows.read,block.read,mute.read,list.read
Claude桌面配置
添加 %APPDATA%/Claude/claude_desktop_config.json:
{
"mcpServers": {
"x": {
"command": "node",
"args": ["C:/path/to/x-mcp-server/build/index.js"],
"env": {
"TWITTER_API_KEY": "your-api-key",
"TWITTER_API_SECRET": "your-api-secret",
"TWITTER_ACCESS_TOKEN": "your-access-token",
"TWITTER_ACCESS_SECRET": "your-access-secret",
"TWITTER_OAUTH2_ACCESS_TOKEN": "your-oauth2-token"
}
}
}
}
可选Xquik搜索后端
search_tweets 可以使用Xquik,而服务器的其余部分保持默认值
X API客户端。设置:
| 变量 | 描述 |
|---|---|
X_MCP_SEARCH_BACKEND=xquik |
仅限路线 search_tweets 致Xquik |
XQUIK_API_KEY |
Xquik API密钥 |
XQUIK_API_BASE_URL |
可选基本URL,默认为 https://xquik.com/api/v1 |
可用工具(26)
时间线和搜索
| 工具 | 说明 | 关键参数 |
|---|---|---|
get_home_timeline |
从主页时间线获取最新帖子 | limit (1-100) |
search_tweets |
搜索最近的帖子(7天窗口) | query, limit |
帖子管理
| 工具 | 说明 | 关键参数 |
|---|---|---|
get_tweet |
按ID查找帖子 | tweet_id |
create_tweet |
使用可选媒体创建帖子 | text, image_path?, video_path? |
reply_to_tweet |
使用可选媒体回复帖子 | tweet_id, text, image_path?, video_path? |
quote_tweet |
引用带有评论的帖子 | tweet_id, text |
delete_tweet |
删除您的帖子 | tweet_id |
参与
| 工具 | 说明 | 关键参数 |
|---|---|---|
like_tweet |
喜欢帖子(基本+级别) | tweet_id |
unlike_tweet |
删除赞 | tweet_id |
retweet |
重新定位到您的时间线 | tweet_id |
undo_retweet |
删除转发 | tweet_id |
bookmark_tweet |
稍后添加书签 | tweet_id |
unbookmark_tweet |
删除书签 | tweet_id |
get_bookmarks |
获取您的书签 | limit (1-100) |
用户
| 工具 | 说明 | 关键参数 |
|---|---|---|
get_user |
按用户名查找用户 | username |
get_user_tweets |
获取用户的最新帖子 | username, limit |
get_user_mentions |
获取提及用户的帖子 | username, limit |
get_user_liked_tweets |
获取用户的点赞帖子 | username, limit |
get_user_followers |
获取用户的关注者 | username, limit |
get_user_following |
获取用户关注的帐户 | username, limit |
get_blocking_users |
让用户被经过身份验证的帐户阻止 | limit |
get_muting_users |
使用经过身份验证的帐户使用户静音 | limit |
get_owned_lists |
获取用户拥有的列表 | username, limit |
get_followed_lists |
获取用户后面的列表 | username, limit |
get_list_memberships |
获取用户所属的列表 | username, limit |
条款
| 工具 | 说明 | 关键参数 |
|---|---|---|
get_article |
获取X文章的全文内容 | tweet_id |
媒体支持
- 图像: PNG、JPEG、GIF、WEBP(最大5MB)
- 视频: MP4、MOV、AVI、WEBM、M4V(最大512MB,流式分块上传)
- 无法将图像和视频附加到同一帖子
- 需要OAuth 2.0凭据(2025年6月日落时上传v1.1)
- 路径限制: 只能上传主目录或系统临时目录中的文件(防止路径遍历)
安全
- 输入验证: 推特ID必须是数字(1-20位数字),用户名必须匹配
[A-Za-z0-9_]{1,15} - 媒体路径限制: 根据允许列表(主目录、临时目录)验证上传路径
- 令牌存储: OAuth 2.0令牌持久化
~/.x-mcp-tokens.json随着0o600权限(Unix)。在Windows上,文件权限不是由操作系统强制执行的,而是通过NTFS ACL保护文件或使用环境变量。 - 错误清理: X API错误详细信息仅记录在服务器端;经过净化的消息将返回给MCP客户端
- 刷新互斥体: 对并发令牌刷新尝试进行重复数据消除,以防止出现竞争情况
发展
npm run build # Compile TypeScript
npm run dev # Watch mode
npm start # Run the server
项目结构
src/
index.ts # MCP server entry point & handler dispatch
client.ts # Twitter client setup (OAuth 1.0a + OAuth 2.0)
media.ts # v2 media upload (simple + chunked)
rate-limit.ts # Per-endpoint rate limiting
tools/
definitions.ts # All 16 tool schemas
handlers.ts # Tool handler implementations
与GetXAPI配对,实现更便宜的读取操作(可选)
对于需要更便宜或更高的速率限制选项来进行推特(X)只读操作(如推特搜索、个人资料查找和关注者列表)的用户,此项目可以与 GetXAPI,预算Twitter/X数据API定价为每1K条推文0.05美元,而官方的X API基本层定价为每月200美元。
两种集成模式:
-
在AI客户端中并排运行。 保留此项目作为其主要工作流,并添加 GetXAPI MCP官方服务器 用于阅读繁重的任务。每个工具名称都会路由到最适合该操作的后端。
-
添加后端切换。 有关单个env变量后面可选替代后端的代码级引用,请参阅 PR模式合并为兄弟项目.
GetXAPI快速入门:
- 使用0.50美元的免费信用卡注册(无需信用卡):https://getxapi.com/signup
- GetXAPI MCP官方服务器:https://github.com/getxapi/getxapi-mcp
- npm:
@getxapi/mcp - 按通话付费定价:每次通话0.001美元,每条推文0.05美元
这种配对是完全可选的。现有用户的行为没有变化。
许可证
麻省理工学院
贡献
- 分叉存储库
- 创建功能分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add some amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求