内容
<div align="center">
# 光谱MCP
### 最快的X/Twitter自动化工具,用于AI代理
**104种X/Twitter自动化工具 — 无需浏览器,无需API密钥,无需每月费用。**
[](https://python.org)
[](LICENSE)
[](https://modelcontextprotocol.io)
[](https://pypi.org/project/spectre-mcp/)
[快速开始](#-快速开始) · [所有工具](#-所有104种工具) · [为什么选择Spectre?](#-为什么选择Spectre) · [安全指南](#-安全指南) · [集成](#-集成)
</div>
---
## 为什么选择Spectre?
Spectre是一个MCP服务器,为AI代理提供104种X/Twitter自动化工具 — 从搜索和发布到私信、列表和社区。底层直接与X的内部GraphQL和REST API通信。无需启动浏览器,无需维护Puppeteer,无需DOM抓取(这些可能会因UI更改而中断)。
| | **Spectre** | **XActions** | **twikit** |
|--|:-:|:-:|:-:|
| **架构** | 直接GraphQL/REST | Puppeteer(无头浏览器) | Python API包装器 |
| **速度** | <1秒每请求 | 3–10秒(浏览器启动) | ~1秒每请求 |
| **内存** | ~10 MB | ~200 MB+(Chromium) | ~10 MB |
| **MCP服务器** | ✅ 104种工具 | ⚠️ ~50种API工具 | ❌ 无 |
| **账户池** | ✅ 多账户自动轮换 | ❌ 单个身份验证令牌 | ❌ 单个会话 |
| **浏览器需求** | ❌ 从不 | ✅ 始终 | ❌ 从不 |
| **DOM中断风险** | ❌ 无 | ⚠️ 因UI更改而中断 | ❌ 无 |
| **媒体上传** | ✅ 基于Cookie(无需API密钥) | ⚠️ 需要API密钥 | ❌ |
| **列表** | ✅ 完整的CRUD + 成员 + 订阅 | ❌ | ❌ |
| **草稿和计划** | ✅ 完整的CRUD | ⚠️ 基本 | ❌ |
| **书签文件夹** | ✅ 完整的CRUD + 时间线 | ❌ | ❌ |
| **私信搜索** | ✅ 所有/群组/人员 | ❌ | ❌ |
| **社区笔记** | ✅ 读取 + 评分 | ❌ | ❌ |
| **精选** | ✅ 创建、删除、获取 | ❌ | ❌ |
| **通知** | ✅ 完整的时间线 | ❌ | ❌ |
| **语言** | Python | JavaScript | Python |
**总结:** Spectre涵盖了104种X功能 — 搜索、推文、私信、列表、社区、书签、草稿、计划、个人资料等 — 所有这些都不需要启动浏览器。
---
## 🚀 快速开始
### 1. 安装
```bash
# 推荐 — 独立,自动更新
pipx install spectre-mcp
# 或使用uv
uv tool install spectre-mcp
```
### 2. 添加您的X账户
从浏览器中提取Cookie:
1. 打开 **x.com** 并确保您已登录
2. 打开 **开发工具** (`F12` 或 `Ctrl+Shift+I`)
3. 进入 **存储** → **Cookie** → 选择 **`https://x.com`**
4. 查找并复制这两个值:
- **`auth_token`** — 长十六进制字符串(例如 `a1b2c3d4...`)
- **`ct0`** — 160个字符的十六进制字符串
```bash
spectre add myaccount "auth_token=a1b2c3d4...; ct0=e5f6a7b8..."
```
> **提示:** `ct0` 正好是160个十六进制字符。请仔细检查您复制的值 — 部分Cookie将静默失败。
### 3. 配置您的MCP客户端
#### Hermes Agent
添加到 `~/.hermes/config.yaml`:
```yaml
mcp_servers:
spectre:
command: "uvx"
args: ["spectre-mcp"]
timeout: 120
```
然后在您的Hermes会话中运行 `/reload-mcp`。
#### Claude Desktop
将以下内容添加到您的Claude Desktop配置(`claude_desktop_config.json`):
```json
{
"mcpServers": {
"spectre": {
"command": "uvx",
"args": ["spectre-mcp"]
}
}
}
```
#### Cursor / Windsurf
将以下内容添加到您的MCP配置(`.cursor/mcp.json` 或等效):
```json
{
"mcpServers": {
"spectre": {
"command": "uvx",
"args": ["spectre-mcp"]
}
}
}
```
#### 任意MCP客户端
Spectre与支持 [模型上下文协议](https://modelcontextprotocol.io) 的任何客户端配合使用。使用 `uvx spectre-mcp` 作为命令。
> **没有 `uv`?** 安装它: `curl -LsSf https://astral.sh/uv/install.sh | sh`
> 或使用 `python3 -m spectre.server` 从本地克隆运行。
### 更新
`uvx` 始终自动从PyPI拉取最新版本。对于手动升级:
```bash
pipx upgrade spectre-mcp # pipx
uv tool upgrade spectre-mcp # uv
```
---
## 📦 所有104种工具
### 账户池(5种)
管理多个X账户,自动轮换速率限制。
| 工具 | 描述 |
|------|-------------|
| `list_accounts()` | 列出所有账户状态 |
| `pool_status()` | 池健康统计 |
| `set_active_account(username)` | 设置主要账户 |
| `set_auto_rotate(enabled)` | 启用/禁用自动轮换 |
| `remove_account(username)` | ⚠️ 从池中删除账户 |
### 搜索(2种)
| 工具 | 描述 |
|------|-------------|
| `search(query, limit, mode)` | 搜索推文。支持 `from:username`、`since:2026-01-01`、`#hashtag`、`filter:media` |
| `search_users(query, limit)` | 按名称/关键词搜索用户 |
### 用户(12种)
| 工具 | 描述 |
|------|-------------|
| `get_user(username)` | 按@handle获取用户资料 |
| `get_user_tweets(username, limit)` | 用户最近的推文 |
| `get_user_tweets_and_replies(username, limit)` | 用户的推文和回复 |
| `get_user_media(username, limit)` | 用户的照片/视频/GIF |
| `get_followers(username, limit)` | 用户的关注者 |
| `get_following(username, limit)` | 用户关注的人 |
| `get_user_likes(user_id, limit)` | 用户喜欢的推文 |
| `get_user_highlights(user_id, limit)` | 用户精选的推文 |
| `get_verified_followers(user_id, limit)` | 蓝色验证关注者 |
| `get_followers_you_know(user_id, limit)` | 共同关注者 |
| `get_list_memberships(user_id, limit)` | 用户所属的列表 |
| `get_list_ownerships(user_id, limit)` | 用户拥有的列表 |
### 推文(8种)
| 工具 | 描述 |
|------|-------------|
| `get_tweet(tweet_id)` | 按ID获取单个推文 |
| `get_tweet_replies(tweet_id, limit)` | 推文的回复 |
| `get_thread(tweet_id, limit)` | 完整的对话线程 |
| `get_retweeters(tweet_id, limit)` | 转发推文的用户 |
| `get_favoriters(tweet_id, limit)` | 喜欢推文的用户 |
| `get_tweet_edit_history(tweet_id)` | 推文的编辑历史 |
| `get_similar_posts(tweet_id, limit)` | 相似/相关帖子 |
| `get_community_notes(tweet_id)` | 推文的社区笔记 |
### 时间线和通知(3种)
| 工具 | 描述 |
|------|-------------|
| `get_trends(category, limit)` | 趋势话题(trending, news, sport, entertainment) |
| `get_home_timeline(limit)` | 首页 |
| `get_notifications(limit)` | 通知时间线 |
### 发布和媒体(3种)
| 工具 | 描述 |
|------|-------------|
| `post_tweet(text, reply_to?, quote_tweet?, media_ids?)` | 发布推文,可选媒体 |
| `upload_media(file_path)` | 上传图像或视频(jpg, png, gif, mp4, mov)— 无需API密钥 |
| `delete_tweet(tweet_id)` | ⚠️ 删除推文 |
### 互动(6种)
| 工具 | 描述 |
|------|-------------|
| `like_tweet(tweet_id)` | 喜欢推文 |
| `unlike_tweet(tweet_id)` | 不喜欢推文 |
| `retweet(tweet_id)` | 转发 |
| `unretweet(tweet_id)` | 取消转发 |
| `bookmark_tweet(tweet_id)` | 书签推文 |
| `unbookmark_tweet(tweet_id)` | 删除书签 |
### 社交(6种)
| 工具 | 描述 |
|------|-------------|
| `follow_user(user_id)` | ⚠️ 关注用户 |
| `unfollow_user(user_id)` | ⚠️ 取消关注用户 |
| `mute_user(user_id)` | 静音用户 |
| `unmute_user(user_id)` | 取消静音用户 |
| `block_user(user_id)` | ⚠️ 阻止用户 |
| `unblock_user(user_id)` | ⚠️ 取消阻止用户 |
### 社交扩展(3种)
| 工具 | 描述 |
|------|-------------|
| `remove_follower(user_id)` | ⚠️ 删除关注者 |
| `pin_reply(tweet_id)` | 置顶回复 |
| `unpin_reply(tweet_id)` | 取消置顶 |
### 私信(9种)
| 工具 | 描述 |
|------|-------------|
| `send_dm(user_id, text)` | ⚠️ 发送私信 |
| `get_dm_inbox(limit)` | 最近的私信对话 |
| `get_dm_conversation(conversation_id, limit)` | 对话中的消息 |
| `search_dm(query, limit)` | 按文本搜索所有私信 |
| `search_dm_groups(query, limit)` | 搜索群组私信 |
| `search_dm_people(query, limit)` | 搜索私信中的人员 |
| `get_dm_muted(limit)` | 静音的私信对话 |
| `dm_block_user(user_id)` | 在私信中阻止用户 |
| `dm_unblock_user(user_id)` | 在私信中取消阻止用户 |
### 列表(10种)
完整的生命周期:创建 → 管理成员 → 订阅 → 删除。
| 工具 | 描述 |
|------|-------------|
| `create_list(name, description?)` | 创建新列表 |
| `update_list(list_id, name, description?)` | 更新列表名称/描述 |
| `delete_list(list_id)` | ⚠️ 删除列表 |
| `add_list_member(list_id, user_id)` | 将用户添加到列表 |
| `remove_list_member(list_id, user_id)` | 从列表中删除用户 |
| `get_list_timeline(list_id, limit)` | 列表中的推文 |
| `get_list_members(list_id, limit)` | 列表成员 |
| `get_list_subscribers(list_id, limit)` | 列表订阅者 |
| `subscribe_list(list_id)` | 订阅列表 |
| `unsubscribe_list(list_id)` | 取消订阅列表 |
### 书签文件夹(8种)
| 工具 | 描述 |
|------|-------------|
| `get_bookmark_folders()` | 列出所有书签文件夹 |
| `create_bookmark_folder(name)` | 创建文件夹 |
| `edit_bookmark_folder(folder_id, name)` | 重命名文件夹 |
| `delete_bookmark_folder(folder_id)` | ⚠️ 删除文件夹 |
| `add_tweet_to_folder(folder_id, tweet_id)` | 将推文添加到文件夹 |
| `remove_tweet_from_folder(folder_id, tweet_id)` | 从文件夹中删除推文 |
| `get_bookmark_folder_timeline(folder_id, limit)` | 文件夹中的推文 |
| `search_bookmarks(query, limit)` | 按文本搜索书签 |
### 书签(2种)
| 工具 | 描述 |
|------|-------------|
| `get_bookmarks(limit)` | 您的书签推文 |
| `clear_all_bookmarks()` | ⚠️ 删除所有书签 |
### 计划推文(4种)
| 工具 | 描述 |
|------|-------------|
| `schedule_tweet(text, execute_at, reply_to?)` | 计划未来发布(ISO 8601日期时间) |
| `get_scheduled_tweets()` | 列出所有计划推文 |
| `edit_scheduled_tweet(id, text, execute_at)` | 编辑计划推文 |
| `delete_scheduled_tweet(tweet_id)` | ⚠️ 删除计划推文 |
### 草稿推文(4种)
| 工具 | 描述 |
|------|-------------|
| `create_draft(text)` | 保存推文草稿 |
| `get_drafts()` | 列出所有草稿 |
| `edit_draft(draft_id, text)` | 编辑草稿 |
| `delete_draft(tweet_id)` | ⚠️ 删除草稿 |
### 社区(4种)
| 工具 | 描述 |
|------|-------------|
| `get_community_info(community_id)` | 社区详情 |
| `get_community_tweets(community_id, limit)` | 社区动态 |
| `join_community(community_id)` | 加入社区 |
| `leave_community(community_id)` | ⚠️ 离开社区 |
### 主题(3种)
| 工具 | 描述 |
|------|-------------|
| `get_topic_info(topic_id)` | 获取主题详情 |
| `follow_topic(topic_id)` | 关注主题 |
| `unfollow_topic(topic_id)` | 不关注主题 |
### 社区笔记(2种)
| 工具 | 描述 |
|------|-------------|
| `get_community_notes(tweet_id)` | 获取推文的社区笔记 |
| `rate_community_note(note_id, rating)` | 评级为有帮助 / 不帮助 |
> **注意:** 社区笔记 *创建* 需要符合条件的账户(6个月以上,验证电话,加入计划)。阅读和评级笔记适用于所有账户。
### 账户设置和个人资料(5种)
| 工具 | 描述 |
|------|-------------|
| `get_account_settings()` | 查看账户设置 |
| `update_profile(name?, bio?, location?, website?)` | ⚠️ 更新个人资料信息 |
| `update_profile_image(file_path)` | ⚠️ 更改头像图像 |
| `update_profile_banner(file_path)` | ⚠️ 更改横幅图像 |
| `delete_profile_banner()` | ⚠️ 删除横幅图像 |
### 工具提示:
* **社区笔记** *创建* 需要符合条件的账户(6个月以上,验证电话,加入计划)。阅读和评分笔记适用于所有账户。
---
## 🎛 集成
### Hermes Agent(推荐)
Spectre 是为 [Hermes Agent](https://github.com/NousResearch/hermes-agent) 构建的。安装 MCP 服务器和技能以获得最佳效果:
1. 将MCP服务器添加到 `~/.hermes/config.yaml`:
```yaml
mcp_servers:
spectre:
command: "uvx"
args: ["spectre-mcp"]
timeout: 120
```
2. 安装技能(Hermes 在 `~/.hermes/skills/<category>/<name>/SKILL.md` 处发现技能):
```bash
mkdir -p ~/.hermes/skills/mcp/spectre
cp SKILL.md ~/.hermes/skills/mcp/spectre/SKILL.md
```
3. 在您的Hermes会话中重新加载:
```
/reload-mcp
/reload-skills
```
该技能为Hermes提供了所有104种工具的完整上下文 — 参数类型、安全与破坏性工具、使用模式和错误处理。
### Claude Desktop
将以下内容添加到 `claude_desktop_config.json`:
```json
{
"mcpServers": {
"spectre": {
"command": "uvx",
"args": ["spectre-mcp"]
}
}
}
```
Claude会自动发现所有104种工具。不需要技能文件 — 工具描述是自文档的。
### Cursor / Windsurf / Cline
将以下内容添加到 `.cursor/mcp.json`(或等效文件):
```json
{
"mcpServers": {
"spectre": {
"command": "uvx",
"args": ["spectre-mcp"]
}
}
}
```
### 自定义集成(Python)
```python
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
server = StdioServerParameters(command="uvx", args=["spectre-mcp"])
async with stdio_client(server) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
# 使用任意一种工具
```
---
## ⚠️ 安全指南
Spectre 标记每个破坏性工具为 **⚠️**。代理应尊重这些警告。
### 调用前请务必确认
| 工具 | 原因 |
|------|-----|
| `post_tweet` | 公开,立即生效 |
| `delete_tweet` | 永久 |
| `pin_tweet` | 静默替换现有内容 |
| `update_profile*` | 更改您的公开个人资料 |
| `follow_user` / `unfollow_user` | 对方用户可见 |
| `block_user` | 被阻止的用户失去访问您内容权限 |
| `send_dm` | 立即发送,无法撤回 |
| `create_highlight` | 添加到您的公开个人资料 |
### 可以安全使用的工具(仅限读取)
所有 `get_*`、`search_*`、`list_*` 工具。`pool_status`、`get_muted_accounts`、`get_blocked_accounts`、`get_scheduled_tweets`、`get_drafts`、`get_bookmarks`、`get_trends`、`get_home_timeline`、`get_notifications`.
### 速率限制
- ~300 请求/小时/账户
- Spectre 在速率限制时自动轮换到下一个账户
- 使用 `set_auto_rotate(false)` 锁定到单个账户
- 速率限制错误包括 `retry_after_seconds`
---
## 🔍 X 查询运算符
| 运算符 | 示例 | 描述 |
|----------|---------|-------------|
| `from:username` | `from:elonmusk` | 用户发布的推文 |
| `since:YYYY-MM-DD` | `since:2026-01-01` | 发布时间后 |
| `until:YYYY-MM-DD` | `until:2026-06-01` | 发布时间前 |
| `#hashtag` | `#python` | 标签搜索 |
| `filter:media` | `AI filter:media` | 仅媒体推文 |
| `filter:links` | `AI filter:links` | 仅带有链接的推文 |
| `lang:en` | `AI lang:en` | 语言过滤器 |
| `min_retweets:N` | `AI min_retweets:100` | 最小转发数 |
| `min_faves:N` | `AI min_faves:50` | 最小点赞数 |
| `-"term"` | `AI -"GPT"` | 排除术语 |
| `OR` | `python OR rust` | 任意术语 |
---
## CLI
```bash
spectre add <username> <cookies> 使用浏览器Cookie添加账户
spectre remove <username> 删除账户
spectre list 列出所有账户
spectre status 池健康检查
spectre serve 启动MCP服务器(默认)
spectre help 显示帮助
```
---
## 环境变量
| 变量 | 默认值 | 描述 |
|----------|---------|-------------|
| `SPECTRE_DB` | `~/.spectre/accounts.db` | 账户池数据库路径 |
| `SPECTRE_PROXY` | 无 | 全局代理 (`socks5://user:pass@host:port`) |
| `TWS_HTTP_BACKEND` | `httpx` | 设置为 `curl_cffi` 进行TLS指纹识别 |
| `TWS_TELEMETRY` | `0` | 禁用遥测 |
| `SPECTRE_OP_*` | 内置 | 重写GraphQL操作ID(当它们旋转时) |
---
## 限制
- **需要认证账户** — X 阻止未经认证的访问
- **速率限制** — ~300 请求/小时/账户(自动轮换处理)
- **~3200 条推文上限** 用户时间线(X自身的限制)
- **服务条款风险** — 自动访问违反X的服务条款
- **Cookie过期** — 每 ~2 周重新添加 Cookie,当搜索返回空结果时
---
## License
MIT
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器