README
🚀 Twitter MCP Server
这是一个用于 Twitter API 的模型上下文协议(MCP)服务器,具备推文发布、搜索和时间线等功能。
🚀 快速开始
该 Twitter MCP 服务器能让你轻松与 Twitter API 交互,实现推文发布、搜索等功能。以下是快速启动的步骤。
✨ 主要特性
- 发布推文:可发布新推文,还支持可选的回复功能。
- 搜索推文:使用查询字符串搜索推文。
- 获取时间线:检索用户的推文时间线。
- 速率限制:对 Twitter API 调用进行基本的速率限制。
- TypeScript 支持:全面支持 TypeScript,并进行严格的类型检查。
- 测试套件:使用 Jest 提供了全面的测试套件。
📦 安装指南
前提条件
- Node.js 18 及以上版本。
- Twitter API 凭证(API 密钥、API 密钥密钥、访问令牌、访问令牌密钥、Bearer 令牌)。
安装步骤
- 克隆仓库:
git clone https://github.com/aali-1/twitter-mcp-server.git
cd twitter-mcp-server
- 安装依赖:
npm install
- 设置环境变量:
cp env.example .env
编辑 .env 文件,填入你的 Twitter API 凭证:
TWITTER_API_KEY=your_twitter_api_key
TWITTER_API_SECRET=your_twitter_api_secret
TWITTER_ACCESS_TOKEN=your_twitter_access_token
TWITTER_ACCESS_TOKEN_SECRET=your_twitter_access_token_secret
TWITTER_BEARER_TOKEN=your_twitter_bearer_token
💻 使用示例
构建并运行
# 构建项目
npm run build
# 运行 MCP 服务器
npm start
开发模式
# 以开发模式运行
npm run dev
# 运行测试
npm test
# 代码检查
npm run lint
# 代码格式化
npm run format
MCP 工具使用示例
基础用法
该服务器提供了以下 MCP 工具:
发布推文(post_tweet)
发布新推文,支持可选的回复功能。 参数:
text(字符串,必填):推文的文本内容。reply_to_tweet_id(字符串,可选):要回复的推文 ID。 示例:
{
"name": "post_tweet",
"arguments": {
"text": "Hello, world!",
"reply_to_tweet_id": "1234567890123456789"
}
}
搜索推文(search_tweets,需要基本/专业计划)
使用查询字符串搜索推文。 参数:
query(字符串,必填):推文搜索查询。max_results(数字,可选):最大结果数(默认:10)。 示例:
{
"name": "search_tweets",
"arguments": {
"query": "AI",
"max_results": 5
}
}
获取时间线(get_timeline)
获取用户的推文时间线。 参数:
username(字符串,必填):要获取时间线的用户名。max_results(数字,可选):最大结果数(默认:10)。 示例:
{
"name": "get_timeline",
"arguments": {
"username": "elonmusk",
"max_results": 5
}
}
获取速率限制信息(get_rate_limit_info)
获取当前的速率限制信息。 参数:无 示例:
{
"name": "get_rate_limit_info",
"arguments": {}
}
📚 详细文档
配置
环境变量
| 属性 | 详情 |
|------|------|
| TWITTER_API_KEY | Twitter API 密钥,必填 |
| TWITTER_API_SECRET | Twitter API 密钥密钥,必填 |
| TWITTER_ACCESS_TOKEN | Twitter 访问令牌,必填 |
| TWITTER_ACCESS_TOKEN_SECRET | Twitter 访问令牌密钥,必填 |
| TWITTER_BEARER_TOKEN | Twitter Bearer 令牌,必填 |
| NODE_ENV | 环境,默认为 production |
| LOG_LEVEL | 日志级别,默认为 info |
| RATE_LIMIT_WINDOW_MS | 速率限制窗口,默认为 900000(15 分钟) |
| RATE_LIMIT_MAX_REQUESTS | 每个窗口的最大请求数,默认为 300 |
速率限制
服务器实现了基本的速率限制:
- 遵守 Twitter 的 API 速率限制。
- 通过
get_rate_limit_info工具提供速率限制信息。 - 对速率限制超出的情况进行优雅的错误处理。
项目结构
src/
├── config.ts # 配置管理
├── logger.ts # 日志工具
├── server.ts # MCP 服务器实现
├── twitter.ts # Twitter API 服务
├── types.ts # TypeScript 类型定义
├── index.ts # 主入口点
└── test/ # 测试文件
├── basic.test.ts
└── twitter.test.ts
测试
项目包含全面的测试:
# 运行所有测试
npm test
# 运行带覆盖率的测试
npm test -- --coverage
测试覆盖以下方面:
- Twitter 服务功能。
- 速率限制。
- 错误处理。
- 工具参数验证。
开发
可用脚本
npm run dev # 以开发模式启动
npm run build # 构建 TypeScript 代码
npm run start # 启动生产服务器
npm run test # 运行测试
npm run lint # 运行 ESLint 代码检查
npm run format # 使用 Prettier 格式化代码
代码质量
- TypeScript:进行严格的类型检查。
- ESLint:使用 TypeScript 规则进行代码检查。
- Prettier:进行代码格式化。
- Jest:作为测试框架。
错误处理
服务器包含全面的错误处理:
- Twitter API 错误(速率限制、身份验证等)。
- 网络错误。
- 验证错误。
- 优雅的关闭处理。
安全
- 环境变量验证。
- 输入验证。
- 无信息泄露的错误处理。
- 安全的凭证管理。
贡献代码
- 分叉仓库。
- 创建功能分支。
- 进行更改。
- 添加测试。
- 提交拉取请求。
📄 许可证
本项目采用 MIT 许可证。
Scan to join WeChat group