一个全面的模型上下文协议服务器实现,用于与X(推特)API集成的专业工作流程自动化、增强的错误处理和实时文档。
克隆并安装
git clone <repository-url>
cd twitter-server
npm install
环境设置
cp .env.example .env
# 使用你的凭证编辑 .env
必需的环境变量:
# 推特API凭证(必需)
X_API_KEY=your_api_key_here
X_API_SECRET=your_api_secret_here
X_ACCESS_TOKEN=your_access_token_here
X_ACCESS_TOKEN_SECRET=your_access_token_secret_here
# 社交数据工具API密钥(可选 - 启用增强的研究工具)
SOCIALDATA_API_KEY=your_socialdata_api_key_here
SOCIALDATA_BASE_URL=https://api.socialdata.tools # 可选,默认使用此URL
构建并运行
npm run build
npm start
测试服务器
# 使用JSON-RPC调用测试
source .env && echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}' | node dist/index.js
# 测试特定工具
source .env && echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "getUserInfo", "arguments": {"username": "elonmusk"}}}' | node dist/index.js
添加到你的.env文件中:
X_API_KEY=your_api_key_here
X_API_SECRET=your_api_secret_here
X_ACCESS_TOKEN=your_access_token_here
X_ACCESS_TOKEN_SECRET=your_access_token_secret_here
| 层级 | 成本 | 正常工作的工具 | 有限的工具 |
|---|---|---|---|
| 基础 | $200/月 | 18/22个工具 | searchTweets, getHashtagAnalytics |
| 专业 | $5,000/月 | 所有22个工具 | 无 |
postTweet - 发布新推文getTweetById - 获取特定推文replyToTweet - 回复推文deleteTweet - 删除自己的推文likeTweet / unlikeTweet - 点赞/取消点赞推文retweet / undoRetweet - 转发/取消转发getRetweets - 获取转发用户getUserInfo - 获取用户资料 ✅getUserTimeline - 获取用户推文 ✅followUser / unfollowUser - 关注/取消关注用户 ✅getFollowers - 获取粉丝 ⚠️(需要特殊权限)getFollowing - 获取关注者 ⚠️(需要特殊权限)createList - 创建X(推特)列表getUserLists - 获取用户的列表addUserToList / removeUserFromList - 管理列表成员getListMembers - 获取列表成员searchTweets - 搜索推文(需要专业层级 - 每月$5,000)getHashtagAnalytics - 带标签分析(需要专业层级)getLikedTweets - 获取点赞的推文(API访问问题)注意:这些工具在缺少API密钥时会显示有用的设置说明
advancedTweetSearch - 复杂查询,绕过API层级限制historicalTweetSearch - 访问超出标准API限制的历史推文trendingTopicsSearch - 实时趋势分析和热门内容发现bulkUserProfiles - 单次请求多用户资料分析userGrowthAnalytics - 时间跨度上的用户增长模式分析userInfluenceMetrics - 互动评分和影响力计算getFullThread - 重建完整的推特线程及其互动指标getConversationTree - 映射对话结构,包括回复和引用getThreadMetrics - 线程性能分析和互动分布findMutualConnections - 通过互动发现共同联系人analyzeFollowerDemographics - 分析粉丝模式和人口统计mapInfluenceNetwork - 影响力映射和连接强度分析getHashtagTrends - 带标签表现跟踪及趋势分析analyzeSentiment - 情感分析及关键词频率跟踪trackVirality - 病毒传播模式及互动速度分析从推特开发者门户获取:
X_API_KEY=your_api_key_here
X_API_SECRET=your_api_secret_here
X_ACCESS_TOKEN=your_access_token_here
X_ACCESS_TOKEN_SECRET=your_access_token_secret_here
启用20个增强的研究工具,绕过推特API限制:
SOCIALDATA_API_KEY=your_socialdata_api_key_here
没有社交数据API密钥: 增强的研究工具将显示有用的设置说明而不是错误。
# 测试高级推文搜索(绕过推特API专业层级要求)
source .env && echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "advancedTweetSearch", "arguments": {"query": "AI OR machine learning", "maxResults": 5}}}' | node dist/index.js
# 测试情感分析
source .env && echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "analyzeSentiment", "arguments": {"query": "ChatGPT", "sampleSize": 20}}}' | node dist/index.js
# 测试用户影响力指标
source .env && echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "userInfluenceMetrics", "arguments": {"username": "openai"}}}' | node dist/index.js
# 测试线程分析
source .env && echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "getFullThread", "arguments": {"tweetId": "1234567890123456789"}}}' | node dist/index.js
# 这些将显示有用的设置说明而不是错误
SOCIALDATA_API_KEY="" echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "advancedTweetSearch", "arguments": {"query": "test"}}}' | node dist/index.js
| 使用场景 | 推特API工具 | 社交数据工具替代方案 | 优势 |
|---|---|---|---|
| 基本搜索 | searchTweets ⚠️(专业层级$5k/月) | advancedTweetSearch ✅ | 绕过API限制 |
| 用户分析 | getUserInfo ✅ | userInfluenceMetrics ✅ | 增强分析 |
| 历史数据 | 受API层级限制 | historicalTweetSearch ✅ | 访问旧推文 |
| 情感分析 | 不可用 | analyzeSentiment ✅ | 内置情感评分 |
| 线程分析 | 手动重建 | getFullThread ✅ | 自动化线程映射 |
| 网络映射 | 不可用 | mapInfluenceNetwork ✅ | 连接分析 |
| 带标签趋势 | getHashtagAnalytics ⚠️(专业层级) | getHashtagTrends ✅ | 无层级限制 |
我们的服务器包含5个专业工作流模板:
compose-tweet)交互式指导创建带有标签、提及和媒体的吸引人的推文。
analytics-report)全面的X(推特)分析工作流,提供商业洞察。
content-strategy)战略内容规划和受众互动工作流。
community-management)客户服务和社区互动最佳实践。
hashtag-research)行业特定的带标签研究和趋势分析。
实时信息可通过MCP访问:
# 测试正常工作的工具
source .env && echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "postTweet", "arguments": {"text": "来自MCP的问候!"}}}' | node dist/index.js
# 测试用户信息
source .env && echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "getUserInfo", "arguments": {"username": "elonmusk"}}}' | node dist/index.js
# 测试受限工具(将显示升级指导)
source .env && echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "searchTweets", "arguments": {"query": "MCP"}}}' | node dist/index.js
{
"mcpServers": {
"x-twitter": {
"command": "node",
"args": ["/path/to/twitter-server/dist/index.js"],
"env": {
"X_API_KEY": "your_api_key",
"X_API_SECRET": "your_api_secret",
"X_ACCESS_TOKEN": "your_access_token",
"X_ACCESS_TOKEN_SECRET": "your_access_token_secret"
}
}
}
}
# 总是先源环境
source .env
# 列出所有工具
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}' | node dist/index.js
# 调用特定工具
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "toolName", "arguments": {"param": "value"}}}' | node dist/index.js
postTweet
{
"text": "您的推文内容(最多280个字符)"
}
getTweetById
{
"tweetId": "1234567890123456789",
"tweetFields": ["created_at", "public_metrics", "author_id"]
}
replyToTweet
{
"tweetId": "1234567890123456789",
"text": "您的回复内容"
}
getUserInfo
{
"username": "elonmusk",
"fields": ["description", "public_metrics", "profile_image_url"]
}
followUser
{
"username": "目标用户名"
}
likeTweet
{
"tweetId": "1234567890123456789"
}
retweet
{
"tweetId": "1234567890123456789"
}
我们增强的错误处理提供了:
示例错误响应:
{
"error": "此端点需要X(推特)API专业层级访问(每月$5,000)。访问 https://developer.twitter.com/en/docs/twitter-api/getting-started/about-twitter-api#v2-access-level 升级您的访问级别。"
}
twitter-server/
├── src/
│ ├── handlers/ # API端点处理器
│ ├── prompts.ts # MCP工作流提示
│ ├── resources.ts # 动态MCP资源
│ └── index.ts # 主MCP服务器
├── dist/ # 编译JavaScript
├── scripts/ # 文档及PRD
└── package.json
npm run build # 编译TypeScript
npm start # 启动生产服务器
npm run dev # 开发模式,监视更改
src/handlers/文件中添加处理函数src/index.ts中注册工具错误:“fetch未定义”
# 确保Node.js版本为18+
node --version
403权限错误