Twitter API服务

一个为Twitter API提供发布、搜索和时间线功能的模型上下文协议(MCP)服务器。

  • by aali-1
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 aali-1/twitter-mcp-server

使用说明

推特MCP服务器

用于Twitter API的模型上下文协议(MCP)服务器,具有发布、搜索和时间轴功能。

特性

  • 发布推文:发布带有可选回复功能的新推文
  • 搜索推文:使用查询字符串搜索推文
  • 获取时间表:检索用户时间线
  • 速率限制:Twitter API调用的基本速率限制
  • TypeScript:完全支持TypeScript,具有严格的类型检查
  • 测试:使用Jest的全面测试套件

先决条件

  • Node.js 18+
  • Twitter API证书(API密钥、API机密、访问令牌、访问令牌机密、承载令牌)

安装

  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

用法

构建并运行

# Build the project
npm run build

# Run the MCP server
npm start

发展

# Run in development mode
npm run dev

# Run tests
npm test

# Lint code
npm run lint

# Format code
npm run format

MCP工具

服务器提供以下MCP工具:

post_tweet

发布带有可选回复功能的新推文。

参数:

  • text (string,必填):推文的文本内容
  • 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 (string,必填):获取时间线的用户名
  • 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承载令牌 必填
NODE_ENV 环境 生产
LOG_LEVEL 日志级别 信息
RATE_LIMIT_WINDOW_MS 速率限制窗口 900000(15分钟)
RATE_LIMIT_MAX_REQUESTS 每个窗口的最大请求数 300

速率限制

服务器实现基本速率限制:

  • 尊重Twitter的API费率限制
  • 通过以下方式提供速率限制信息 get_rate_limit_info 工具
  • 对超出速率限制的情况进行优雅的错误处理

项目结构

src/
├── config.ts          # Configuration management
├── logger.ts          # Logging utilities
├── server.ts          # MCP server implementation
├── twitter.ts         # Twitter API service
├── types.ts           # TypeScript type definitions
├── index.ts           # Main entry point
└── test/              # Test files
    ├── basic.test.ts
    └── twitter.test.ts

测试

该项目包括综合测试:

# Run all tests
npm test

# Run tests with coverage
npm test -- --coverage

测试包括:

  • Twitter服务功能
  • 速率限制
  • 错误处理
  • 工具参数验证

发展

可用脚本

npm run dev          # Start in development mode
npm run build        # Build TypeScript
npm run start        # Start production server
npm run test         # Run tests
npm run lint         # Run ESLint
npm run format       # Format code with Prettier

代码质量

  • TypeScript:严格的类型检查
  • ESLint:使用TypeScript规则进行代码linting
  • 更漂亮:代码格式
  • 开玩笑:测试框架

错误处理

服务器包括全面的错误处理:

  • Twitter API错误(速率限制、身份验证等)
  • 网络错误
  • 验证错误
  • 优雅的停机处理

安全

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

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 添加测试
  5. 提交拉取请求

许可证

MIT许可证