Back to MCP directory
publicPublicdnsLocal runtime

twitter-mcp-server

一个基于Twitter API的模型上下文协议(MCP)服务器,提供发推、搜索和获取时间线等功能,包含速率限制和完整测试支持。

article

README

🚀 Twitter MCP Server

这是一个用于 Twitter API 的模型上下文协议(MCP)服务器,具备推文发布、搜索和时间线等功能。

🚀 快速开始

该 Twitter MCP 服务器能让你轻松与 Twitter API 交互,实现推文发布、搜索等功能。以下是快速启动的步骤。

✨ 主要特性

  • 发布推文:可发布新推文,还支持可选的回复功能。
  • 搜索推文:使用查询字符串搜索推文。
  • 获取时间线:检索用户的推文时间线。
  • 速率限制:对 Twitter API 调用进行基本的速率限制。
  • TypeScript 支持:全面支持 TypeScript,并进行严格的类型检查。
  • 测试套件:使用 Jest 提供了全面的测试套件。

📦 安装指南

前提条件

  • Node.js 18 及以上版本。
  • Twitter API 凭证(API 密钥、API 密钥密钥、访问令牌、访问令牌密钥、Bearer 令牌)。

安装步骤

  1. 克隆仓库:
git clone https://github.com/aali-1/twitter-mcp-server.git
cd twitter-mcp-server
  1. 安装依赖:
npm install
  1. 设置环境变量:
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 错误(速率限制、身份验证等)。
  • 网络错误。
  • 验证错误。
  • 优雅的关闭处理。

安全

  • 环境变量验证。
  • 输入验证。
  • 无信息泄露的错误处理。
  • 安全的凭证管理。

贡献代码

  1. 分叉仓库。
  2. 创建功能分支。
  3. 进行更改。
  4. 添加测试。
  5. 提交拉取请求。

📄 许可证

本项目采用 MIT 许可证。

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client