x-twikit-mcp
Health Gecti
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 13 GitHub stars
Code Uyari
- network request — Outbound network request in server.py
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
一个基于 twikit 实现的 X (Twitter) MCP 服务端,轻量级工具。支持AI调用X平台功能,包含发推、回复评论、读取推文回复、私信收发、抓取用户主页详细信息、查看推文互动数据、推文搜索、点赞、转推、删推等多项工具。适用于 Claude Desktop、Cursor 等支持 MCP 协议的客户端。
X (Twitter) MCP 服务
本项目是基于 twikit 实现的 Model Context Protocol (MCP) 服务,专门为 AI 助手、大语言模型及各类 AI Agent 提供与 X (Twitter) 交互的能力。通过本服务,AI 能够自主调用工具完成状态感知、发推(含图片)、读写评论、收发私信、关注互动、趋势发现以及重点账号追踪等全流程操作。
服务通过普通账号的浏览器 Cookie(auth_token 与 ct0)与 X 官方 Web 端通信。所有工具统一采用结构化 JSON 响应,确保状态判定与字段解析的稳定性。
功能列表
服务目前为 AI 助手提供以下 29 个 MCP 工具,按模块划分如下:
1. 推文发布与社交互动
| 工具名称 | 功能描述 | 参数 |
|---|---|---|
post_tweet |
发布新推文(支持带本地图片/媒体) | text(推文文字), media_paths(可选,图片文件路径或路径列表) |
reply_tweet |
回复指定推文或评论(支持带图片) | tweet_id(目标推文 ID), text(回复文字), media_paths(可选) |
quote_tweet |
引用转发推文(Quote Tweet) | tweet_id(目标推文 ID), text(评论文字), media_paths(可选) |
delete_tweet |
删除自己发布的推文 | tweet_id(推文 ID) |
favorite_tweet |
点赞指定推文 | tweet_id(推文 ID) |
unfavorite_tweet |
取消对推文的点赞 | tweet_id(推文 ID) |
retweet |
转发/转推指定推文 | tweet_id(推文 ID) |
unretweet |
取消对推文的转推 | tweet_id(原推文 ID) |
bookmark_tweet |
收藏指定推文到书签 | tweet_id(推文 ID) |
unbookmark_tweet |
从书签中移除指定推文 | tweet_id(推文 ID) |
get_bookmarks |
查看当前账号保存的书签推文列表 | count(获取数量,默认 10,最大 40) |
2. 推文与评论检索
| 工具名称 | 功能描述 | 参数 |
|---|---|---|
get_tweet_by_id |
获取单条推文详情与全面统计(点赞、收藏、转推、回复、浏览量) | tweet_id(推文 ID) |
get_tweet_replies |
获取指定推文下方的评论与回复列表(定制 GraphQL 线程解析) | tweet_id(推文 ID), count(获取数量,默认 10,最大 50) |
get_tweet_quotes |
获取引用转发该推文的推文列表 | tweet_id(推文 ID), count(获取数量,默认 10,最大 20) |
search_tweets |
高级推文搜索(支持关键词、作者、时间范围及互动量门槛) | query(关键词), count(默认 10), from_user(可选作者), since_date(起始日期 YYYY-MM-DD), until_date(截止日期), min_faves(最低点赞数), min_retweets(最低转推数), min_replies(最低回复数) |
3. 用户资料与社交关系
| 工具名称 | 功能描述 | 参数 |
|---|---|---|
get_user_info |
获取指定用户的个人资料及粉丝、关注数等统计 | username(用户名,可带或不带 @) |
get_user_tweets |
获取指定用户最近发布的推文列表 | username(用户名), count(获取数量,默认 5,最大 20) |
get_user_followers |
获取指定用户的粉丝(关注者)列表 | username(用户名或用户 ID), count(默认 20,最大 50) |
get_user_following |
获取指定用户正在关注的用户列表 | username(用户名或用户 ID), count(默认 20,最大 50) |
follow_user |
关注指定用户 | username(用户名或用户 ID) |
unfollow_user |
取消关注指定用户 | username(用户名或用户 ID) |
4. 状态感知与趋势发现
| 工具名称 | 功能描述 | 参数 |
|---|---|---|
get_notifications |
感知全部状态(通知中心:汇总点赞、新粉丝、回复提及,含具体对象 ID) | category(分类:'All', 'Verified', 'Mentions',默认 'All'), count(默认 15,最大 40) |
get_trends |
查看实时热门话题与趋势榜单 | category(分类:'trending', 'for-you', 'news', 'sports', 'entertainment',默认 'trending'), count(默认 20,最大 50) |
5. 私信交流与推文分享
| 工具名称 | 功能描述 | 参数 |
|---|---|---|
read_direct_messages |
获取与指定用户的私信聊天记录 | username(对方用户名或用户 ID), count(默认 10,最大 30) |
send_direct_message |
向指定用户发送或回复私信 | username(目标用户名), text(私信内容), reply_to_message_id(可选) |
share_tweet_via_dm |
通过私信将推文卡片分享给指定用户 | username(接收人用户名), tweet_id(分享推文 ID), comment(可选附带留言) |
6. 特定关注账号追踪 (VIP Watchlist)
| 工具名称 | 功能描述 | 参数 |
|---|---|---|
set_priority_accounts |
设置特定优先关注账号名单 | usernames(用户名或逗号分隔列表), mode('add' 增加, 'remove' 移除, 'replace' 覆盖) |
get_priority_accounts |
查看当前已设置的特定优先关注账号名单 | 无 |
get_priority_timeline |
一键聚合抓取所有特定关注账号的最新推文动态 | count_per_user(每个账号抓取推文数,默认 3,最大 10) |
统一响应数据结构
所有工具的返回值均采用规范的 JSON 文本格式输出,便于大语言模型进行条件判断与进一步工具链编排:
{
"status": "success",
"tool": "get_notifications",
"message": "最新通知感知概览 (共 6 条):点赞 3 条 | 新粉丝 1 人 | 回复 2 条",
"data": {
"total": 6,
"summary": { "likes": 3, "follows": 1, "replies": 2 },
"notifications": [
{
"id": "HVdLtUjaAAAAAAABSQ3bEYMUcp7plCkwmRQ",
"type": "like",
"message": "UserA liked your post",
"from_user": { "screen_name": "UserA", "name": "Alice", "id": "123456" },
"tweet": { "id": "2115110580302557481", "text": "Hello world" },
"timestamp_ms": "1730100000000"
}
]
}
}
若操作遇到错误、网络超时或触发限额,返回格式严格标明失败状态,避免误报成功:
{
"status": "failed",
"tool": "follow_user",
"message": "关注用户失败: User @invalid_name not found.",
"error": "User not found"
}
安装与部署
1. 克隆仓库与安装依赖
环境要求:Python 3.10 及以上。
git clone https://github.com/yxiy171866-boop/x-twikit-mcp.git
cd x-twikit-mcp
pip install -r requirements.txt
2. 获取与配置 Cookie
运行服务需要两个 Cookie 字段:auth_token 与 ct0。
- 在电脑浏览器中打开并登录 x.com。
- 按
F12打开浏览器开发者工具。 - 进入 Application(Chrome/Edge)或 存储 (Storage)(Firefox)标签页。
- 展开左侧的 Cookies,选择
https://x.com。 - 在列表中找到并复制以下两项的值:
auth_tokenct0
配置方式(二选一)
方式一:通过环境变量配置(推荐)
export TWITTER_AUTH_TOKEN="你的 auth_token" export TWITTER_CT0="你的 ct0"方式二:通过配置文件配置
复制根目录下的cookies.json.example为cookies.json:{ "auth_token": "你的 auth_token", "ct0": "你的 ct0" }服务会优先读取环境变量,未设置时读取当前目录下的
cookies.json。
客户端配置示例
Claude Desktop
在 Claude Desktop 配置文件中添加服务配置:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"twitter": {
"command": "python3",
"args": ["/绝对路径/x-twikit-mcp/server.py"],
"env": {
"TWITTER_AUTH_TOKEN": "你的 auth_token",
"TWITTER_CT0": "你的 ct0"
}
}
}
}
Cursor
在项目目录的 .cursor/mcp.json 或全局 Cursor 设置中添加:
{
"mcpServers": {
"twitter": {
"command": "python3",
"args": ["/绝对路径/x-twikit-mcp/server.py"],
"env": {
"TWITTER_AUTH_TOKEN": "你的 auth_token",
"TWITTER_CT0": "你的 ct0"
}
}
}
}
通用第三方客户端与 Agent 平台(如 Cherry Studio、Chatbox 等)
方式一:一键粘贴 JSON
在客户端的 JSON 配置框中粘贴以下内容:
{
"command": "python3",
"args": ["/绝对路径/x-twikit-mcp/server.py"],
"env": {
"TWITTER_AUTH_TOKEN": "你的 auth_token",
"TWITTER_CT0": "你的 ct0"
}
}
方式二:表单填写
- 服务名称 / 标识符:
twitter(或自定义名称) - 传输协议 (Transport):
stdio - 启动命令 (Command):
python3 - 启动参数 (Arguments):
/绝对路径/x-twikit-mcp/server.py - 环境变量 (Environment):
{ "TWITTER_AUTH_TOKEN": "你的 auth_token", "TWITTER_CT0": "你的 ct0" }
常见问题与使用限制
1. 网络与代理设置
若处于无法直连 X (Twitter) 的网络环境中,客户端调用可能出现 ConnectTimeout 或 ConnectError。
可以在客户端配置的环境变量(env)中补充代理地址:
"env": {
"TWITTER_AUTH_TOKEN": "你的 auth_token",
"TWITTER_CT0": "你的 ct0",
"HTTP_PROXY": "http://127.0.0.1:7890",
"HTTPS_PROXY": "http://127.0.0.1:7890"
}
2. 官方风控与错误码排查
当调用频率过高或触发平台规则时,接口可能返回以下错误码:
| 错误码 / 报错 | 原因说明 | 处理方式 |
|---|---|---|
344 (Rate limit) |
发推或回复频率过快,触发当前时间段限额 | 暂停 15 至 30 分钟后再发起请求 |
226 (Automated request) |
请求被判定为疑似自动化行为 | 在浏览器中正常访问推特做一次手动互动,或使用注册时间较长的账号 |
187 (Status is a duplicate) |
发送了与上一条完全相同的推文内容 | 调整推文内容后再发布 |
186 (Tweet needs to be shorter) |
推文字数超出单条上限(普通账号约 280 字符 / 140 个汉字) | 缩减推文内容长度 |
88 (Rate limit exceeded) |
搜索或数据读取接口达到频次上限 | 等待约 15 分钟频次重置 |
3. 业务场景与环境限制
- 私信权限限制:若目标用户关闭了陌生人私信接收权限(例如设置为仅允许互关好友或认证用户私信),发送私信会调用失败。
- 依赖库更新:底层依赖的
twikit库基于网页端 GraphQL 接口实现。若平台调整接口结构,可运行pip install -U twikit更新底层库。 - 本地环境与路径:若系统中安装了多个 Python 版本,导致提示
ModuleNotFoundError: No module named 'twikit',请将配置文件中的"command": "python3"替换为安装了对应依赖的 Python 解释器绝对路径。
更新日志
详情可参考 CHANGELOG.md。
- v1.2.0 (2026-10-29): 新增通知感知、热门趋势、重点关注账号名单(VIP Watchlist)、关注/取关、粉丝/关注列表读取、书签管理、引用推文、私信分享推文、图片多媒体发推、高级搜索过滤条件,统一 29 个工具的结构化 JSON 返回规范。
- v1.1.0 (2026-10-28): 增加单条推文全指标详情查询(含收藏与浏览量)、用户主页资料与用户推文精准抓取,优化 GraphQL 回复线程解析。
- v1.0.0 (2026-10-28): 首个公开版本发布,提供发推、回复、读评、私信与基础搜索能力。
开源协议
本项目采用 MIT License 授权。
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi