一个用于Twitter API集成的模型上下文协议服务器实现。
npm install
.env.example
复制为.env
并填写你的Twitter API凭证npm run build
npm start
.env
文件中需要配置的Twitter API凭证:
X_API_KEY=你的API密钥 X_API_SECRET=你的API密钥密文 X_ACCESS_TOKEN=你的访问令牌 X_ACCESS_TOKEN_SECRET=你的访问令牌密文
postTweet
:发布新推文
{
"text": "你的推文内容"
}

postTweetWithMedia
:发布带媒体附件的推文
{
"text": "你的推文内容",
"mediaPath": "媒体文件路径",
"mediaType": "image/jpeg|image/png|image/gif|video/mp4",
"altText": "可选的无障碍替代文本"
}

getTweetById
:通过ID获取特定推文
{
"tweetId": "推文ID",
"tweetFields": ["created_at", "public_metrics"]
}

replyToTweet
:回复现有推文
{
"tweetId": "推文ID",
"text": "你的回复内容"
}

deleteTweet
:删除推文
{
"tweetId": "推文ID"
}

searchTweets
:搜索推文
{
"query": "搜索查询",
"maxResults": 10,
"tweetFields": ["created_at", "public_metrics"]
}

getHashtagAnalytics
:获取话题标签分析数据
{
"hashtag": "话题标签",
"startTime": "ISO-8601日期",
"endTime": "ISO-8601日期"
}

getUserInfo
:获取用户信息
{
"username": "推特用户名",
"fields": ["description", "public_metrics"]
}

getUserTimeline
:获取用户的推文
{
"username": "推特用户名",
"maxResults": 10,
"tweetFields": ["created_at", "public_metrics"]
}

getFollowers
:获取用户的关注者
{
"username": "推特用户名",
"maxResults": 100,
"userFields": ["description", "public_metrics"]
}

getFollowing
:获取用户关注的人
{
"username": "推特用户名",
"maxResults": 100,
"userFields": ["description", "public_metrics"]
}

likeTweet
:点赞推文
{
"tweetId": "推文ID"
}

unlikeTweet
:取消点赞推文
{
"tweetId": "推文ID"
}

retweet
:转发推文
{
"tweetId": "推文ID"
}

undoRetweet
:取消转发推文
{
"tweetId": "推文ID"
}

getRetweets
:获取转发某推文的用户
{
"tweetId": "推文ID",
"maxResults": 100,
"userFields": ["description", "public_metrics"]
}

getLikedTweets
:获取用户点赞的推文
{
"userId": "用户ID",
"maxResults": 100,
"tweetFields": ["created_at", "public_metrics"]
}

createList
:创建新列表
{
"name": "列表名称",
"description": "列表描述",
"isPrivate": false
}

addUserToList
:将用户添加到列表
{
"listId": "列表ID",
"username": "推特用户名"
}

removeUserFromList
:从列表中移除用户
{
"listId": "列表ID",
"username": "推特用户名"
}

getListMembers
:获取列表成员
{
"listId": "列表ID",
"maxResults": 100,
"userFields": ["description", "public_metrics"]
}

所有工具返回标准化的错误响应:
缺少必需参数:参数名
所有成功响应遵循以下格式:
{
"content": [
{
"type": "text",
"text": "操作结果消息"
}
]
}

npm run build
npm start
npm run dev
所有Twitter工具的综合状态报告: ### 正常工作的工具 (✓) 1. postTweet
状态:工作完美响应:返回推文ID最新测试:成功
2. getTweetById
状态:工作完美 响应:返回完整的推文数据 最新测试:成功
3. likeTweet & unlikeTweet
状态:工作完美响应:操作确认最新测试:成功
4. retweet & undoRetweet
状态:工作完美响应:操作确认最新测试:成功
5. replyToTweet
状态:工作完美响应:返回回复推文ID最新测试:成功
6. getUserInfo
状态:工作完美响应:完整的用户资料数据最新测试:成功
7. followUser & unfollowUser
状态:工作完美响应:操作确认最新测试:成功
8. createList
状态:工作完美响应:列表创建确认最新测试:成功
9. getUserLists
状态:工作完美响应:返回拥有和成员列表最新测试:成功
### 存在问题的工具 (⚠️) 1. getUserTimeline
状态:错误400错误:无效的请求参数需要修复:参数验证
2. searchTweets
状态:错误400错误:无效的请求参数需要修复:查询参数格式化
3. getLikedTweets
状态:错误400错误:无效的请求参数需要修复:参数验证
### 缺失的工具 (❌) - getHomeTimeline(在可用工具中未找到) - getFollowers(不可用) - getFollowing(不可用) - getHashtagAnalytics(不可用) ## 需要优先修复的问题 1. 参数验证: ```typescript // 为getUserTimeline、searchTweets、getLikedTweets实现 interface TwitterParamValidator { validateTimelineParams(params: any): boolean; validateSearchParams(params: any): boolean; validateLikedTweetsParams(params: any): boolean; }
// 增强400错误的错误处理
interface TwitterErrorHandler {
handle400Error(endpoint: string, params: any): void;
logErrorDetails(error: any): void;
suggestParameterFixes(params: any): string[];
}
