mcpField
T
twscrape Twitter/X (read-only)

twscrape Twitter/X (read-only)

本地服务
github.com/jsilets社交媒体32 天前更新

关于 twscrape Twitter/X (read-only)

twscrape Twitter/X (read-only) 是基于 twscrape 的只读 X/Twitter MCP 服务,供需要读取帖子、对话串、回复和搜索结果的用户使用。它通过用户自己的登录会话读取内容,并以适合 Agent 阅读的 Markdown 返回。

主要功能

  1. 01读取帖子、对话串、回复和引用
  2. 02查看用户动态与个人资料
  3. 03搜索帖子并支持查询筛选
  4. 04以 Markdown 返回内容及媒体链接
  5. 05支持 stdio 和 Streamable HTTP

适用场景

  1. 01汇总帖子及其回复
  2. 02搜索特定主题或条件的帖子
  3. 03查看用户近期动态与资料
  4. 04通过 MCP 客户端读取 X 内容

MCP 相关

作为只读 MCP 服务,提供读取帖子、对话串、回复、引用、时间线、个人资料和搜索的工具。支持 stdio 与 Streamable HTTP 传输。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"jsilets-twscrape-twitter": {
"command": "uvx",
"args": [
"twscrape-twitter-mcp"
]
}
}
}
启动命令uvx twscrape-twitter-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypitwscrape-twitter-mcp0.1.2

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

twscrape-twitter-mcp

PyPI CI Python License: MIT MCP

一个用于读取 X(Twitter)内容的 MCP 服务:帖子、帖子串、回复、引用和搜索。它封装了 twscrape,并使用你自己的已登录会话,因此无需付费的 X API,也无需开发者账号。工具返回格式简洁、便于 Agent 阅读的 Markdown,其中包含图片、视频和 GIF 的 URL,以及帖子中的任何外部链接。

可通过两种标准传输方式与任何 MCP 客户端配合使用:本地 stdio 和托管的 Streamable HTTP。

工具

工具返回内容
read_tweet(url_or_id)以 Markdown 格式返回一条帖子。
read_thread(url_or_id, max_replies=50)根帖子 + 作者的自发布帖串 + 热门回复。
read_replies(url_or_id, limit=50)帖子的回复。
read_quotes(url_or_id, limit=30)引用推文(尽力而为,基于搜索)。
user_timeline(username, limit=40, include_replies=False)用户的最新帖子,按时间从新到旧排列。设置 include_replies=True 可包含回复。
search(query, limit=20, product="Latest")搜索结果。支持 from:、has:media、min_faves: 等。
user_profile(username)以 Markdown 格式返回用户资料:简介、位置、关注者/关注人数/推文数、加入日期。

安装

uv tool install twscrape-twitter-mcp     # or: pipx install twscrape-twitter-mcp

然后完成一次身份验证(见下一节)并验证:

twscrape-twitter-mcp smoke               # reads one public tweet end-to-end

身份验证

读取操作使用你自己的 X 会话。选择一种方式:

1. 启动专用浏览器(推荐)。 打开一个带有 DevTools 端口的独立 Chrome/Brave 配置文件,你只需登录一次 X,即可捕获会话。此操作不会影响你日常使用的浏览器,也不会自动执行 X 的登录流程。

twscrape-twitter-mcp login --launch-browser chrome   # or: brave

2. 附加到专用浏览器配置文件。 仅当你已经运行带有调试端口的独立 Chromium 配置文件时使用。浏览器调试会暴露浏览器数据,而且近期版本的 Chrome 不会为默认配置文件启用此功能。

# macOS
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --remote-debugging-port=9222 --user-data-dir=/tmp/x-mcp-browser
# Linux:   google-chrome --remote-debugging-port=9222 --user-data-dir=/tmp/x-mcp-browser
# Windows: "C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 --user-data-dir=%TEMP%\x-mcp-browser

twscrape-twitter-mcp login --attach                  # add --cdp-url for a non-default port

3. 无头模式 / CI(原始 Cookie)。 服务端无法打开你桌面上的浏览器,因此需使用 auth_token + ct0 Cookie 添加会话。运行时不要带 Cookie 标志,这样可以通过隐藏提示输入值,而不会将密钥留在 shell 历史记录中:

twscrape-twitter-mcp init

捕获的会话会在重启后继续使用。会话过期时,或要添加用于速率限制轮换的备用会话时,再次运行 login --launch-browser chrome。twscrape-twitter-mcp accounts 会列出会话池。

请使用备用账号,而非主账号 — 详见法律。

连接客户端

服务通过 stdio 在本地运行。大多数 MCP 客户端都接受类似这样的 JSON 块:

{
  "mcpServers": {
    "x": {
      "command": "twscrape-twitter-mcp",
      "args": ["serve", "--transport", "stdio"]
    }
  }
}

各客户端的配置方式:

Claude Code
claude mcp add x --scope user -- twscrape-twitter-mcp serve --transport stdio
Claude Desktop

将上面的 JSON 块添加到 claude_desktop_config.json (Settings → Developer → Edit Config)。

Codex — ~/.codex/config.toml
[mcp_servers.x]
command = "twscrape-twitter-mcp"
args = ["serve", "--transport", "stdio"]
Cursor — ~/.cursor/mcp.json
{
  "mcpServers": {
    "x": {
      "command": "twscrape-twitter-mcp",
      "args": ["serve", "--transport", "stdio"]
    }
  }
}
VS Code — .vscode/mcp.json
{
  "servers": {
    "x": {
      "command": "twscrape-twitter-mcp",
      "args": ["serve", "--transport", "stdio"]
    }
  }
}
远程(Streamable HTTP)

对于托管的私有实例(见部署),将预配置的客户端指向带有 bearer token 的 HTTP 端点。这是静态 bearer 身份验证,并非 OAuth 登录流程。

{
  "mcpServers": {
    "x": {
      "url": "https://YOUR-APP.example.com/mcp",
      "headers": { "Authorization": "Bearer YOUR_TOKEN" }
    }
  }
}

然后可以询问,例如:“读取此帖子串:<url>”。

部署

始终运行服务,并确保可通过 HTTP 访问(POST /mcp)。它以容器形式提供;Cloudflare Workers 无法运行,因为 twscrape 是带有原生依赖项的 Python 程序。

无头容器无法打开你的桌面浏览器,因此请先在本地完成身份验证(login --attach 会在 TWSCRAPE_TWITTER_MCP_HOME 下写入 storage_state.json),然后将该会话传到主机上——把文件复制到挂载卷,或通过 SSH 运行基于 Cookie 的 init。服务会在启动时重新加载已持久化的会话。

通过 HTTP 暴露服务时,务必设置令牌——任何能够访问该端点的人都可以使用你的 X 会话:

export TWSCRAPE_TWITTER_MCP_AUTH_TOKEN=$(openssl rand -hex 32)
Fly.io
fly launch --no-deploy
fly volumes create twscrape_twitter_mcp_data --size 1
fly secrets set TWSCRAPE_TWITTER_MCP_AUTH_TOKEN=$(openssl rand -hex 32)
fly deploy
# seed a session onto the volume through hidden prompts:
fly ssh console -C "twscrape-twitter-mcp init"
Railway

将 Railway 指向此仓库(它会读取 railway.json 和 Dockerfile),添加挂载到 /data 的卷,设置 TWSCRAPE_TWITTER_MCP_AUTH_TOKEN,并通过 Railway shell 运行 twscrape-twitter-mcp init 来初始化会话。

客户端发送 Authorization: Bearer <token>。

配置

环境变量默认值用途
TWSCRAPE_TWITTER_MCP_HOME~/.config/twscrape-twitter-mcpSQLite 账号池的存储位置。在生产环境中,请将其指向一个卷。
TWSCRAPE_TWITTER_MCP_DB$TWSCRAPE_TWITTER_MCP_HOME/accounts.db直接覆盖账号池路径。
TWSCRAPE_TWITTER_MCP_AUTH_TOKEN(未设置)HTTP 传输所需的 Bearer 令牌。
TWSCRAPE_TWITTER_MCP_PROXY(未设置)所有账号使用的全局代理。
TWSCRAPE_TWITTER_MCP_CDP_URLhttp://127.0.0.1:9222login --attach 使用的浏览器 DevTools 端点。
TWSCRAPE_TWITTER_MCP_DEFAULT_LIMIT40时间线和搜索结果的默认数量(1–100)。
PORT8080HTTP 端口(Railway 会注入此值)。

工作原理

读取 X 的难点——GraphQL 签名、x-client-transaction-id 标头和 TLS 指纹识别——完全由固定版本的 twscrape 处理。此软件包是在其之上的只读 MCP 层,不会触及这些机制。当 X 更改某些内容导致读取失效时,只需升级版本,无需逆向工程。

限制

  • X 可能会使你会话对应的账号登录过期、限制其速率,或暂停该账号。
  • 受保护、已删除、被地理位置屏蔽或受到其他限制的帖子可能无法读取。
  • 引用推文的覆盖范围基于搜索,且并不完整。
  • 搜索结果取决于 X 当前的搜索行为,并可能因会话而异。
  • 它不会解密浏览器 Cookie 存储——请使用浏览器连接或 Cookie init。

法律声明

使用你自己的已登录会话读取 X 可能违反 X 的服务条款,用于抓取内容的账号也可能受到速率限制或被暂停。请使用备用账号,不要使用主账号。本软件按原样提供,仅供研究和个人使用;你需对自己的使用方式负责。

许可证

MIT。

致谢

抓取工作的核心由 vladkens 编写的 twscrape 完成。本项目是在其之上的只读 MCP 层——欢迎为它点星。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。