使用说明
X(推特)MCP服务器
一个模型上下文协议(MCP)服务器,用于通过人工智能工具与推特(X)交互。该服务器允许您通过AI Tools中的自然语言命令获取推文、发布推文、搜索推特、管理关注者等。
特性
- 获取用户资料、关注者和关注列表。
- 发布、删除和收藏推文。
- 在推特上搜索推文和趋势。
- 管理书签和时间线。
- Twitter API的内置速率限制处理。
- 使用具有正确身份验证(API密钥和令牌)的Twitter API v2,避免用户名/密码破解,以最大限度地降低帐户暂停的风险。
- 为用户管理、推特管理、时间表和搜索功能提供了Twitter API v2端点的完整实现。
先决条件
- Python 3.10或更高版本:确保您的系统上安装了Python。
- Twitter开发者帐户:您需要来自的API凭据(API密钥、API机密、访问令牌、访问令牌机密和承载令牌) Twitter开发者门户.
- 可选: 克劳德桌面版:从下载并安装Claude Desktop应用程序 Anthropic网站.
- 可选: Node.js (用于MCP集成):在Claude Desktop中运行MCP服务器所需。
- 像这样的包管理器
uv或pip对于Python依赖关系。
安装
选项1:通过Smithery安装(推荐)
通过以下方式自动为Claude Desktop安装X(Twitter)MCP服务器 史密瑟里:
npx -y @smithery/cli install @rafaljanicki/x-twitter-mcp-server --client claude
选项2:从PyPI安装
最简单的安装方法 x-twitter-mcp 通过PyPI:
pip install x-twitter-mcp
选项3:从源代码安装
如果您更喜欢从源代码存储库安装:
-
克隆存储库:
git clone https://github.com/rafaljanicki/x-twitter-mcp-server.git cd x-twitter-mcp-server -
设置虚拟环境 (可选但推荐):
python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate -
再进行: 使用
uv(推荐,因为项目使用uv.lock):uv sync或者,使用
pip:pip install . -
配置环境变量:
- 创建
.env项目根目录中的文件(您可以复制.env.example如果提供)。 - 添加您的Twitter API凭据:
TWITTER_API_KEY=your_api_key TWITTER_API_SECRET=your_api_secret TWITTER_ACCESS_TOKEN=your_access_token TWITTER_ACCESS_TOKEN_SECRET=your_access_token_secret TWITTER_BEARER_TOKEN=your_bearer_token - 使用书签工具(
get_bookmarks,delete_all_bookmarks),同时添加OAuth 2.0用户访问令牌:看 获取OAuth 2.0用户令牌 在......下面TWITTER_OAUTH2_USER_ACCESS_TOKEN=your_oauth2_user_token
- 创建
获取OAuth 2.0用户令牌
书签端点(GET /2/users/:id/bookmarks, DELETE /2/users/:id/bookmarks/:tweet_id)要求 OAuth 2.0用户上下文 --他们拒绝了仅限应用程序的承载令牌和OAuth 1.0a。您需要执行一次PKCE授权流以获取用户范围的令牌。
步骤
-
在 Twitter开发者门户,打开您的应用程序→ 设置 → 用户身份验证设置 并启用OAuth 2.0。设置回调URL(例如。
https://localhost/). -
使用Tweepy运行PKCE流:
import tweepy
handler = tweepy.OAuth2UserHandler(
client_id="YOUR_CLIENT_ID", # OAuth 2.0 Client ID (from Developer Portal)
redirect_uri="https://localhost/",
scope=["bookmark.read", "bookmark.write", "users.read", "offline.access"],
client_secret="YOUR_CLIENT_SECRET", # Optional for public clients
)
print(handler.get_authorization_url())
# Open the URL, authorize, copy the redirected URL, then:
redirected_url = input("Paste redirected URL: ")
token = handler.fetch_token(redirected_url)
print(token["access_token"])
- 将生成的令牌设置为
TWITTER_OAUTH2_USER_ACCESS_TOKEN在您的环境中或.env文件。
运行服务器
首选的传输方式是流式HTTP。使用以下选项之一:
推荐:流式HTTP(Docker/Smithery)
将服务器作为具有Streamable HTTP和SSE端点的HTTP服务运行。
-
构建Docker镜像:
docker build -t x-twitter-mcp . -
运行容器(Smithery使用PORT;这里的默认值是8081):
docker run -p 8081:8081 -e PORT=8081 x-twitter-mcp -
终点:
- 流式HTTP(基于HTTP的JSON-RPC):
POST http://localhost:8081/mcp - SSE(服务器发送事件):
GET http://localhost:8081/sse
- 流式HTTP(基于HTTP的JSON-RPC):
-
通过base64编码按请求传递配置(Smithery推荐)
config查询参数。JSON配置示例:{"twitterApiKey":"...","twitterApiSecret":"...","twitterAccessToken":"...","twitterAccessTokenSecret":"...","twitterBearerToken":"..."}编码和调用
initialize:CONFIG_B64=$(printf '%s' '{"twitterApiKey":"YOUR_KEY","twitterApiSecret":"YOUR_SECRET","twitterAccessToken":"YOUR_TOKEN","twitterAccessTokenSecret":"YOUR_TOKEN_SECRET","twitterBearerToken":"YOUR_BEARER"}' | base64) curl -sS -X POST "http://localhost:8081/mcp?config=${CONFIG_B64}" \ -H 'content-type: application/json' \ -d '{"jsonrpc":"2.0","id":"1","method":"initialize","params":{"capabilities":{}}}'
笔记:
- A.
POST /将返回404;使用/mcp用于流式HTTP和/sse对于SSE。 - 当通过Smithery部署时,
smithery.yaml已配置为runtime: container和startCommand.type: http.
流式HTTP(本地,无Docker)
直接运行ASGI服务器。
如果从PyPI安装:
python -m x_twitter_mcp.http_server
如果从源代码安装 uv:
uv run python -m x_twitter_mcp.http_server
端点和配置传递与上述相同。
传统STDIO(CLI脚本)
该项目还公开了一个STDIO CLI脚本 x-twitter-mcp-server 适用于需要STDIO的桌面客户端。
如果从PyPI安装:
x-twitter-mcp-server
如果从源代码安装 uv:
uv run x-twitter-mcp-server
与Claude Desktop一起使用
要将此MCP服务器与Claude Desktop一起使用,您需要配置Claude以连接到服务器。请按照以下步骤操作:
第一步:安装Node.js
Claude Desktop使用Node.js运行MCP服务器。如果你没有安装Node.js:
- 从下载并安装Node.js nodejs.org.
- 验证安装:
node --version
步骤2:找到Claude桌面配置
Claude Desktop使用 claude_desktop_config.json 配置MCP服务器的文件。
- 视窗:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
如果文件不存在,请创建它。
步骤3:配置MCP服务器
编辑 claude_desktop_config.json 包括 x-twitter-mcp 服务器。替换 /path/to/x-twitter-mcp-server 项目目录的实际路径(如果是从源代码安装的)或Python可执行文件的路径(如果从PyPI安装的)。
如果从PyPI安装:
{
"mcpServers": {
"x-twitter-mcp": {
"command": "x-twitter-mcp-server",
"args": [],
"env": {
"PYTHONUNBUFFERED": "1",
"TWITTER_API_KEY": "your_api_key",
"TWITTER_API_SECRET": "your_api_secret",
"TWITTER_ACCESS_TOKEN": "your_access_token",
"TWITTER_ACCESS_TOKEN_SECRET": "your_access_token_secret",
"TWITTER_BEARER_TOKEN": "your_bearer_token",
"TWITTER_OAUTH2_USER_ACCESS_TOKEN": "your_oauth2_user_token"
}
}
}
}
如果从源代码安装 uv:
{
"mcpServers": {
"x-twitter-mcp": {
"command": "uv",
"args": [
"--directory",
"/path/to/x-twitter-mcp-server",
"run",
"x-twitter-mcp-server"
],
"env": {
"PYTHONUNBUFFERED": "1"
}
}
}
}
"command": "x-twitter-mcp-server":如果从PyPI安装,则直接使用CLI脚本。"env":如果从PyPI安装,您可能需要直接在配置中提供环境变量(因为没有.env文件)。如果从源代码安装.env文件将被使用。"env": {"PYTHONUNBUFFERED": "1"}:确保输出无缓冲,以便在Claude中更好地记录。
步骤4:重新启动克劳德桌面
- 完全退出克劳德桌面。
- 重新打开Claude Desktop以加载新配置。
步骤5:验证连接
- 打开克劳德桌面。
- 在输入区域(右下角)寻找锤子或连接器图标。这表示MCP工具可用。
- 单击图标查看来自的可用工具
x-twitter-mcp,例如post_tweet,search_twitter,get_user_profile等等。
第6步:与克劳德一起测试
现在,您可以在Claude Desktop中使用自然语言与Twitter进行交互。以下是一些示例提示:
-
获取用户配置文件:
Get the Twitter profile for user ID 123456.克劳德会打电话给
get_user_profile工具并返回用户的详细信息。 -
发布推文:
Post a tweet saying "Hello from Claude Desktop! #MCP"克劳德将使用
post_tweet发布推文并确认操作的工具。 -
搜索推特:
Search Twitter for recent tweets about AI.克劳德将调用
search_twitter工具并返回相关推文。 -
获取趋势:
What are the current trending topics on Twitter?克劳德将使用
get_trends获取热门话题的工具。
出现提示时,授予Claude在聊天会话中使用MCP工具的权限。
OpenClaw配套工作流程
当MCP客户端应该直接调用Twitter API v2工具时,此MCP服务器是最好的。如果工作流在OpenClaw中运行,并且需要插件安装元数据、端点发现、监控警报、webhooks、赠品抽奖、媒体上传或下载工作流、直接消息、关注者导出或批准门控的帖子和回复操作,请将TweetClaw用作单独的OpenClaw插件,并在工具之间传递经过审核的推文ID或URL。
看 OpenClaw配套工作流程 用于保持凭据分离并避免重复写入操作的命令流。
可用工具
以下是由提供的所有工具的列表 x-twitter-mcp 服务器,以及使用自然语言提示在Claude Desktop中执行的示例。
用户管理工具
get_user_profile
- 描述:获取用户的详细个人资料信息。
- Claude桌面示例:Claude将返回用户的个人资料详细信息,包括ID、姓名、用户名、个人资料图像URL和描述。
Get the Twitter profile for user ID 123456789.
get_user_by_screen_name
- 描述:按屏幕名称获取用户。
- Claude桌面示例:Claude将返回用户的个人资料详细信息。
Get the Twitter user with screen name "example_user".
get_user_by_id
- 描述:按ID获取用户。
- Claude桌面示例:Claude将返回用户的个人资料详细信息。
Fetch the Twitter user with ID 987654321.
get_user_followers
- 描述:检索给定用户的关注者列表。
- Claude桌面示例:Claude将返回最多50个关注者的列表。
Get the followers of user ID 123456789, limit to 50.
get_user_following
- 描述:检索给定用户所关注的用户。
- Claude桌面示例:Claude将返回最多50个用户的列表。
Who is user ID 123456789 following? Limit to 50 users.
get_user_followers_you_know
- 描述:检索常见关注者列表。
- Claude桌面示例:Claude将返回一个最多50个常见关注者的列表(通过过滤关注者来模拟)。
Get common followers for user ID 123456789, limit to 50.
get_user_subscriptions
- 描述:检索指定用户订阅的用户列表。
- Claude桌面示例:Claude将返回最多50个用户的列表(使用以下内容作为订阅代理)。
Get the subscriptions for user ID 123456789, limit to 50.
推特管理工具
post_tweet
- 描述:发布带有可选媒体、回复和标签的推文。
- Claude桌面示例:克劳德将发布推文并返回推文详细信息。
Post a tweet saying "Hello from Claude Desktop! #MCP"
delete_tweet
- 描述:按ID删除推文。
- Claude桌面示例:克劳德将删除推文并确认操作。
Delete the tweet with ID 123456789012345678.
get_tweet_details
- 描述:获取特定推文的详细信息。
- Claude桌面示例:Claude将返回推特的详细信息,包括ID、文本、创建日期和作者ID。
Get details for tweet ID 123456789012345678.
create_poll_tweet
- 描述:创建带有投票的推文。
- Claude桌面示例:Claude将创建投票推文并返回推文详细信息。
Create a poll tweet with the question "What's your favorite color?" and options "Red", "Blue", "Green" for 60 minutes.
vote_on_poll
- 描述:投票表决。
- Claude桌面示例:Claude将返回一个模拟响应(因为Twitter API v2不支持投票)。
Vote "Blue" on the poll in tweet ID 123456789012345678.
favorite_tweet
- 描述:收藏推特。
- Claude桌面示例:克劳德会喜欢这条推文并确认这一行动。
Like the tweet with ID 123456789012345678.
unfavorite_tweet
- 描述:不公开推文。
- Claude桌面示例:克劳德将对这条推文表示不满,并确认这一行动。
Unlike the tweet with ID 123456789012345678.
bookmark_tweet
- 描述:将推特添加到书签中。
- Claude桌面示例:克劳德将为推特添加书签并确认操作。
Bookmark the tweet with ID 123456789012345678.
delete_bookmark
- 描述:从书签中删除推文。
- Claude桌面示例:Claude将删除书签并确认操作。
Remove the bookmark for tweet ID 123456789012345678.
delete_all_bookmarks
- 描述:破坏性和不可逆转。通过获取每个页面并逐一删除它们来永久删除所有书签。需要
TWITTER_OAUTH2_USER_ACCESS_TOKEN. - Claude桌面示例:Claude将首先与用户确认,然后删除所有书签并报告计数。
Delete all my Twitter bookmarks.
get_bookmarks
- 描述:检索经过身份验证的用户的书签推文。每次通话最多返回100条推文;使用
cursor分页参数。需要TWITTER_OAUTH2_USER_ACCESS_TOKEN. - Claude桌面示例:Claude将返回多达25条书签推文,包括ID、文本、创建日期和作者ID。
Show my Twitter bookmarks, limit to 25.
时间线和搜索工具
get_timeline
- 描述:从您的家庭时间线获取推文(For You)。
- Claude桌面示例:Claude将从您的For You时间线返回最多20条推文。
Show my Twitter For You timeline, limit to 20 tweets.
get_latest_timeline
- 描述:从您的家庭时间线获取推文(以下)。
- Claude桌面示例:Claude将从您的关注时间线返回最多20条推文。
Show my Twitter Following timeline, limit to 20 tweets.
search_twitter
- 描述:使用查询搜索推特。
- Claude桌面示例:克劳德将返回最近10条关于人工智能的推文。
Search Twitter for recent tweets about AI, limit to 10.
get_trends
- 描述:检索推特上的热门话题。
- Claude桌面示例:克劳德将返回多达10个热门话题。
What are the current trending topics on Twitter? Limit to 10.
get_highlights_tweets
- 描述:从用户的时间线中检索突出显示的推文。
- Claude桌面示例:Claude将返回用户时间线中最多20条推文(模拟为亮点)。
Get highlighted tweets from user ID 123456789, limit to 20.
get_user_mentions
- 描述:获取提及特定用户的推文。
- Claude桌面示例:克劳德将返回多达20条提及该用户的推文。
Get tweets mentioning user ID 123456789, limit to 20.
故障排除
-
服务器未启动:
- 确保您的
.env文件具有所有必需的Twitter API凭据(若从源安装)。 - 如果从PyPI安装,请确保在
claude_desktop_config.json或者你的壳。 - 运行时检查终端输出是否有错误
x-twitter-mcp-server. - 核实一下
uv或者您的Python可执行文件已正确安装并可访问。
- 确保您的
-
Claude未检测到服务器:
- 确认路径
claude_desktop_config.json是正确的。 - 确保
command和args指向正确的可执行文件和脚本。 - 更新配置文件后重新启动Claude Desktop。
- 检查Claude的开发人员模式日志(帮助→ 启用开发人员模式→ 打开MCP日志文件)查看错误。
- 确认路径
-
速率限制错误:
- 服务器包括速率限制处理,但如果您达到Twitter API限制,则可能需要等待重置窗口(例如,15分钟用于Twitter操作)。
-
书签工具返回403:
get_bookmarks和delete_all_bookmarks需要TWITTER_OAUTH2_USER_ACCESS_TOKEN仅限应用程序的承载令牌和OAuth 1.0a被书签端点拒绝。- 看 获取OAuth 2.0用户令牌 有关设置说明。
-
语法警告:
- 如果你看到
SyntaxWarning来自Tweepy的消息,它们是由于Tweepy和Python 3.13中的文档字符串问题造成的。服务器包含一个警告抑制功能来处理此问题。
- 如果你看到
贡献
欢迎投稿!请在上打开问题或提交拉取请求 GitHub 仓库.
许可证
该项目根据MIT许可证获得许可。请参阅 LICENSE 文件以获取详细信息。
作者
- 拉法尔·贾尼茨基 - rafal@kult.io