catalog/repos/6551team--opentwitter-mcp.md

500 lines
12 KiB
Markdown
Raw Permalink Normal View History

2026-04-06 19:01:37 +08:00
# Twitter MCP 数据服务
2026-04-06 15:47:33 +08:00
2026-04-06 19:01:37 +08:00
`MCP` `Twitter` `AI工具` `实时监控` `推文搜索`
2026-04-06 15:47:33 +08:00
<p align="center">
2026-04-06 19:01:37 +08:00
<b>Twitter MCP 服务器</b><br>
Twitter/X 数据 · 用户资料 · 推文搜索 · 关注者事件 · KOL 追踪
2026-04-06 15:47:33 +08:00
</p>
---
2026-04-06 19:01:37 +08:00
## 快速安装
2026-04-06 15:47:33 +08:00
2026-04-06 19:01:37 +08:00
> **首先,前往 [https://6551.io/mcp](https://6551.io/mcp) 获取您的 API Token。**
2026-04-06 15:47:33 +08:00
### Claude Code
```bash
claude mcp add twitter \
-e TWITTER_TOKEN=<your-token> \
-- uv --directory /path/to/twitter-mcp run twitter-mcp
```
2026-04-06 19:01:37 +08:00
> 将 `/path/to/twitter-mcp` 替换为本地项目路径,将 `<your-token>` 替换为您的 Token。
2026-04-06 15:47:33 +08:00
### OpenClaw
```bash
export TWITTER_TOKEN="<your-token>"
cp -r openclaw-skill/opentwitter ~/.openclaw/skills/
```
---
2026-04-06 19:01:37 +08:00
## 让 AI 帮你审查并安装
2026-04-06 15:47:33 +08:00
2026-04-06 19:01:37 +08:00
不确定这个 MCP 是否安全?将以下提示词发送给您的 AI 助手——它会先审查源码,确认安全后再安装:
2026-04-06 15:47:33 +08:00
2026-04-06 19:01:37 +08:00
> **复制以下提示词发送给您的 AI 助手(将 `<project-path>` 和 `<your-token>` 替换为实际值):**
2026-04-06 15:47:33 +08:00
```text
2026-04-06 19:01:37 +08:00
请帮我审查并安装 twitter-mcp MCP 服务器。项目路径为 <project-path>
步骤:
1. 审查以下文件的安全性:
- src/twitter_mcp/api_client.py — 确认只连接 ai.6551.io不向其他地方发送数据
- src/twitter_mcp/config.py — 确认 Token 只从本地 config.json 或环境变量读取,无硬编码密钥或泄露
- src/twitter_mcp/tools.py — 确认所有工具只执行 API 查询,不写文件、不执行命令、不含危险操作
- pyproject.toml — 确认依赖只有 mcp、httpx无可疑包
2. 告知结论:安全 / 有风险 / 有问题,并说明具体原因
3. 如果安全执行安装Token 从 https://6551.io/mcp 获取):
2026-04-06 15:47:33 +08:00
claude mcp add twitter -e TWITTER_TOKEN=<your-token> -- uv --directory <project-path> run twitter-mcp
```
---
2026-04-06 19:01:37 +08:00
## 能做什么?
2026-04-06 15:47:33 +08:00
2026-04-06 19:01:37 +08:00
连接后,直接向 AI 助手提问:
2026-04-06 15:47:33 +08:00
2026-04-06 19:01:37 +08:00
| 你说 | 它做 |
|------|------|
| "显示 @elonmusk 的 Twitter 资料" | 获取用户资料信息 |
| "查看 @VitalikButerin 最近发了什么推文" | 获取用户最新推文 |
| "搜索比特币相关推文" | 关键词搜索 |
| "查找带 #crypto 话题标签的推文" | 话题标签搜索 |
| "获赞超过 1000 的 ETH 相关热门推文" | 带互动量过滤的搜索 |
| "谁引用了这条推文" | 获取指定推文的引用推文 |
| "谁转发了这条推文" | 获取转发该推文的用户 |
| "最近谁关注了 @elonmusk" | 获取新增关注者事件 |
| "谁取关了 @elonmusk" | 获取取消关注事件 |
| "@elonmusk 删除了哪些推文" | 获取已删除的推文 |
| "哪些 KOL 关注了 @elonmusk" | 获取 KOL 关注者 |
2026-04-06 15:47:33 +08:00
---
2026-04-06 19:01:37 +08:00
## 可用工具
| 工具 | 描述 |
|------|------|
| `get_twitter_user` | 通过用户名获取用户资料 |
| `get_twitter_user_by_id` | 通过数字 ID 获取用户资料 |
| `get_twitter_user_tweets` | 获取用户最近的推文 |
| `search_twitter` | 基础过滤条件搜索推文 |
| `search_twitter_advanced` | 多条件高级搜索 |
| `get_twitter_follower_events` | 获取关注/取关事件 |
| `get_twitter_deleted_tweets` | 获取用户已删除的推文 |
| `get_twitter_kol_followers` | 获取 KOL关键意见领袖关注者 |
| `get_twitter_article_by_id` | 通过 ID 获取 Twitter 文章 |
| `get_twitter_tweet_by_id` | 通过 ID 获取推文(含嵌套回复/引用) |
| `get_twitter_quote_tweets_by_id` | 获取引用指定推文的所有推文 |
| `get_twitter_retweet_users_by_id` | 获取转发指定推文的用户 |
| `get_twitter_watch` | 获取所有 Twitter 监控用户 |
| `add_twitter_watch` | 添加 Twitter 用户到监控列表 |
| `delete_twitter_watch` | 从监控列表中按用户名删除用户 |
2026-04-06 15:47:33 +08:00
---
2026-04-06 19:01:37 +08:00
## 配置
2026-04-06 15:47:33 +08:00
2026-04-06 19:01:37 +08:00
### 获取 API Token
2026-04-06 15:47:33 +08:00
2026-04-06 19:01:37 +08:00
前往 [https://6551.io/mcp](https://6551.io/mcp) 获取您的 API Token。
2026-04-06 15:47:33 +08:00
2026-04-06 19:01:37 +08:00
设置环境变量:
2026-04-06 15:47:33 +08:00
```bash
# macOS / Linux
export TWITTER_TOKEN="<your-token>"
# Windows PowerShell
$env:TWITTER_TOKEN = "<your-token>"
```
2026-04-06 19:01:37 +08:00
| 变量 | 必填 | 描述 |
|------|------|------|
| `TWITTER_TOKEN` | **是** | 6551 API Bearer Token从 https://6551.io/mcp 获取) |
| `TWITTER_API_BASE` | 否 | 覆盖 REST API 地址 |
| `TWITTER_MAX_ROWS` | 否 | 每次查询的最大结果数默认100 |
2026-04-06 15:47:33 +08:00
2026-04-06 19:01:37 +08:00
也支持在项目根目录下放置 `config.json`(环境变量优先级更高):
2026-04-06 15:47:33 +08:00
```json
{
"api_base_url": "https://ai.6551.io",
"api_token": "<your-token>",
"max_rows": 100
}
```
---
2026-04-06 19:01:37 +08:00
## WebSocket 实时订阅
2026-04-06 15:47:33 +08:00
2026-04-06 19:01:37 +08:00
**端点**`wss://ai.6551.io/open/twitter_wss?token=YOUR_TOKEN`
2026-04-06 15:47:33 +08:00
2026-04-06 19:01:37 +08:00
订阅您监控的 Twitter 账号的实时事件。
2026-04-06 15:47:33 +08:00
2026-04-06 19:01:37 +08:00
### 订阅 Twitter 事件
2026-04-06 15:47:33 +08:00
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "twitter.subscribe"
}
```
2026-04-06 19:01:37 +08:00
**响应**
2026-04-06 15:47:33 +08:00
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"success": true
}
}
```
2026-04-06 19:01:37 +08:00
### 取消订阅
2026-04-06 15:47:33 +08:00
```json
{
"jsonrpc": "2.0",
"id": 2,
"method": "twitter.unsubscribe"
}
```
2026-04-06 19:01:37 +08:00
### 服务器推送 - Twitter 事件
2026-04-06 15:47:33 +08:00
2026-04-06 19:01:37 +08:00
当监控账号有动态时,服务器推送:
2026-04-06 15:47:33 +08:00
```json
{
"jsonrpc": "2.0",
"method": "twitter.event",
"params": {
"id": 123456,
"twAccount": "elonmusk",
"twUserName": "Elon Musk",
"profileUrl": "https://twitter.com/elonmusk",
"eventType": "NEW_TWEET",
"content": "...",
"ca": "0x1234...",
2026-04-06 19:01:37 +08:00
"remark": "自定义备注",
2026-04-06 15:47:33 +08:00
"createdAt": "2026-03-06T10:00:00Z"
}
}
```
2026-04-06 19:01:37 +08:00
**注意**`content` 字段的结构因事件类型而异(见下文)。
2026-04-06 15:47:33 +08:00
2026-04-06 19:01:37 +08:00
**事件类型及内容结构**
2026-04-06 15:47:33 +08:00
2026-04-06 19:01:37 +08:00
#### 推文事件
- `NEW_TWEET` - 发布新推文
- `NEW_TWEET_REPLY` - 发布回复推文
- `NEW_TWEET_QUOTE` - 发布引用推文
- `NEW_RETWEET` - 转发推文
- `CA` - 含 CA 地址的推文
2026-04-06 15:47:33 +08:00
2026-04-06 19:01:37 +08:00
推文事件的内容结构:
2026-04-06 15:47:33 +08:00
```json
{
"id": "1234567890",
2026-04-06 19:01:37 +08:00
"text": "推文内容...",
2026-04-06 15:47:33 +08:00
"createdAt": "2026-03-06T10:00:00Z",
"language": "en",
"retweetCount": 100,
"favoriteCount": 500,
"replyCount": 20,
"quoteCount": 10,
"viewCount": 10000,
"userScreenName": "elonmusk",
"userName": "Elon Musk",
"userIdStr": "44196397",
"userFollowers": 170000000,
"userVerified": true,
"conversationId": "1234567890",
"isReply": false,
"isQuote": false,
"hashtags": ["crypto", "bitcoin"],
"media": [
{
"type": "photo",
"url": "https://...",
"thumbUrl": "https://..."
}
],
"urls": [
{
"url": "https://...",
"expandedUrl": "https://...",
"displayUrl": "example.com"
}
],
"mentions": [
{
"username": "VitalikButerin",
"name": "Vitalik Buterin"
}
]
}
```
2026-04-06 19:01:37 +08:00
#### 关注者事件
- `NEW_FOLLOWER` - 新增关注者
- `NEW_UNFOLLOWER` - 取消关注事件
2026-04-06 15:47:33 +08:00
2026-04-06 19:01:37 +08:00
关注者事件的内容结构(数组):
2026-04-06 15:47:33 +08:00
```json
[
{
"id": 123,
"twId": 44196397,
"twAccount": "elonmusk",
"twUserName": "Elon Musk",
"twUserLabel": "Verified",
2026-04-06 19:01:37 +08:00
"description": "用户简介...",
2026-04-06 15:47:33 +08:00
"profileUrl": "https://...",
"bannerUrl": "https://...",
"followerCount": 170000000,
"friendCount": 500,
"createdAt": "2026-03-06T10:00:00Z"
}
]
```
2026-04-06 19:01:37 +08:00
#### 资料更新事件
- `UPDATE_NAME` - 用户名变更(内容:新用户名字符串)
- `UPDATE_DESCRIPTION` - 简介更新(内容:新简介字符串)
- `UPDATE_AVATAR` - 头像变更(内容:新头像 URL 字符串)
- `UPDATE_BANNER` - 横幅图片变更(内容:新横幅 URL 字符串)
2026-04-06 15:47:33 +08:00
2026-04-06 19:01:37 +08:00
#### 其他事件
- `TWEET_TOPPING` - 推文置顶
- `DELETE` - 推文删除
- `SYSTEM` - 系统事件
- `TRANSLATE` - 推文翻译
- `CA_CREATE` - CA 代币创建
2026-04-06 15:47:33 +08:00
---
2026-04-06 19:01:37 +08:00
## 数据结构
2026-04-06 15:47:33 +08:00
2026-04-06 19:01:37 +08:00
### Twitter 用户
2026-04-06 15:47:33 +08:00
```json
{
"userId": "44196397",
"screenName": "elonmusk",
"name": "Elon Musk",
"description": "...",
"followersCount": 170000000,
"friendsCount": 500,
"statusesCount": 30000,
"verified": true
}
```
2026-04-06 19:01:37 +08:00
### 推文
2026-04-06 15:47:33 +08:00
```json
{
"id": "1234567890",
2026-04-06 19:01:37 +08:00
"text": "推文内容...",
2026-04-06 15:47:33 +08:00
"createdAt": "2024-02-20T12:00:00Z",
"retweetCount": 1000,
"favoriteCount": 5000,
"replyCount": 200,
"userScreenName": "elonmusk",
"hashtags": ["crypto", "bitcoin"],
"urls": [{"url": "https://..."}]
}
```
---
<details>
2026-04-06 19:01:37 +08:00
<summary><b>其他客户端 — 手动安装</b>(点击展开)</summary>
2026-04-06 15:47:33 +08:00
2026-04-06 19:01:37 +08:00
> 以下所有配置中,将 `/path/to/twitter-mcp` 替换为本地项目实际路径,将 `<your-token>` 替换为从 [https://6551.io/mcp](https://6551.io/mcp) 获取的 Token。
2026-04-06 15:47:33 +08:00
### Claude Desktop
2026-04-06 19:01:37 +08:00
编辑配置文件macOS`~/Library/Application Support/Claude/claude_desktop_config.json`Windows`%APPDATA%\Claude\claude_desktop_config.json`
2026-04-06 15:47:33 +08:00
```json
{
"mcpServers": {
"twitter": {
"command": "uv",
"args": ["--directory", "/path/to/twitter-mcp", "run", "twitter-mcp"],
"env": {
"TWITTER_TOKEN": "<your-token>"
}
}
}
}
```
### Cursor
2026-04-06 19:01:37 +08:00
`~/.cursor/mcp.json` 或 设置 > MCP Servers
2026-04-06 15:47:33 +08:00
```json
{
"mcpServers": {
"twitter": {
"command": "uv",
"args": ["--directory", "/path/to/twitter-mcp", "run", "twitter-mcp"],
"env": {
"TWITTER_TOKEN": "<your-token>"
}
}
}
}
```
### Windsurf
2026-04-06 19:01:37 +08:00
`~/.codeium/windsurf/mcp_config.json`
2026-04-06 15:47:33 +08:00
```json
{
"mcpServers": {
"twitter": {
"command": "uv",
"args": ["--directory", "/path/to/twitter-mcp", "run", "twitter-mcp"],
"env": {
"TWITTER_TOKEN": "<your-token>"
}
}
}
}
```
### Cline
2026-04-06 19:01:37 +08:00
VS Code 侧边栏 > Cline > MCP Servers > Configure编辑 `cline_mcp_settings.json`
2026-04-06 15:47:33 +08:00
```json
{
"mcpServers": {
"twitter": {
"command": "uv",
"args": ["--directory", "/path/to/twitter-mcp", "run", "twitter-mcp"],
"env": {
"TWITTER_TOKEN": "<your-token>"
},
"disabled": false,
"autoApprove": []
}
}
}
```
### Continue.dev
2026-04-06 19:01:37 +08:00
`~/.continue/config.yaml`
2026-04-06 15:47:33 +08:00
```yaml
mcpServers:
- name: twitter
command: uv
args:
- --directory
- /path/to/twitter-mcp
- run
- twitter-mcp
env:
TWITTER_TOKEN: <your-token>
```
### Cherry Studio
2026-04-06 19:01:37 +08:00
设置 > MCP Servers > 添加 > 类型选 stdio命令填 `uv`,参数填 `--directory /path/to/twitter-mcp run twitter-mcp`,环境变量填 `TWITTER_TOKEN`
2026-04-06 15:47:33 +08:00
2026-04-06 19:01:37 +08:00
### Zed 编辑器
2026-04-06 15:47:33 +08:00
2026-04-06 19:01:37 +08:00
`~/.config/zed/settings.json`
2026-04-06 15:47:33 +08:00
```json
{
"context_servers": {
"twitter": {
"command": {
"path": "uv",
"args": ["--directory", "/path/to/twitter-mcp", "run", "twitter-mcp"],
"env": {
"TWITTER_TOKEN": "<your-token>"
}
}
}
}
}
```
2026-04-06 19:01:37 +08:00
### 任意 stdio MCP 客户端
2026-04-06 15:47:33 +08:00
```bash
TWITTER_TOKEN=<your-token> \
uv --directory /path/to/twitter-mcp run twitter-mcp
```
</details>
---
2026-04-06 19:01:37 +08:00
## 兼容性
2026-04-06 15:47:33 +08:00
2026-04-06 19:01:37 +08:00
| 客户端 | 安装方式 | 状态 |
|--------|----------|------|
| **Claude Code** | `claude mcp add` | 一行命令 |
| **OpenClaw** | 复制 skill 目录 | 一行命令 |
| Claude Desktop | JSON 配置 | 已支持 |
| Cursor | JSON 配置 | 已支持 |
| Windsurf | JSON 配置 | 已支持 |
| Cline | JSON 配置 | 已支持 |
| Continue.dev | YAML / JSON | 已支持 |
| Cherry Studio | 图形界面 | 已支持 |
| Zed | JSON 配置 | 已支持 |
2026-04-06 15:47:33 +08:00
---
2026-04-06 19:01:37 +08:00
## 开发
2026-04-06 15:47:33 +08:00
```bash
cd /path/to/twitter-mcp
uv sync
uv run twitter-mcp
```
```bash
# MCP Inspector
npx @modelcontextprotocol/inspector uv --directory /path/to/twitter-mcp run twitter-mcp
```
2026-04-06 19:01:37 +08:00
### 项目结构
2026-04-06 15:47:33 +08:00
```
├── README.md
├── docs/
│ ├── README_JA.md # 日本語
│ └── README_KO.md # 한국어
├── openclaw-skill/opentwitter/ # OpenClaw Skill
├── pyproject.toml
├── config.json
└── src/twitter_mcp/
2026-04-06 19:01:37 +08:00
├── server.py # 入口点
├── app.py # FastMCP 实例
├── config.py # 配置加载器
├── api_client.py # HTTP 客户端
└── tools.py # 8 个工具
2026-04-06 15:47:33 +08:00
```
2026-04-06 19:01:37 +08:00
## 许可证
2026-04-06 15:47:33 +08:00
2026-04-06 19:01:37 +08:00
MIT