X MCP服务器

一个提供X(前Twitter)API访问的模型上下文协议(MCP)服务器,允许AI助手和其他MCP客户端通过标准化接口与X/Twitter交互。

  • by GeLi2001
  • Rust
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 geli2001/x-mcp-server

使用说明

X MCP服务器

A. 模型上下文协议(MCP) 服务器,为基本实用程序提供对X(以前的Twitter)API的访问。该服务器允许AI助手和其他MCP客户端通过标准化的界面与X/Twitter进行交互。

特性

  • 🔐 简单承载令牌身份验证 -只需一个令牌即可轻松设置
  • 👤 用户信息 -按用户名或ID获取用户配置文件
  • 🐦 只读操作 -获取推文、用户信息和搜索(不发布)
  • 🔍 搜索 -使用各种过滤器和选项搜索推文
  • 📝 用户时间线 -检索用户最近的推文
  • 🛠️ MCP工具 -人工智能集成的标准化工具
  • ⚡ 异步/等待 -采用Tokio制造,性能卓越

安装

来自crates.io

cargo install x-mcp-server

来源

git clone https://github.com/yourusername/x-mcp-server
cd x-mcp-server
cargo build --release

快速开始

1.获取X个API凭据

  1. 转到 X开发者门户
  2. 创建新应用程序或使用现有应用程序
  3. 生成API密钥和访问令牌
  4. 确保你的应用程序具有必要的权限

2.设置环境变量

创建一个 .env 文件或设置环境变量:

export X_CONSUMER_KEY="your_consumer_key"
export X_CONSUMER_SECRET="your_consumer_secret"
export X_ACCESS_TOKEN="your_access_token"
export X_ACCESS_TOKEN_SECRET="your_access_token_secret"

或复制 .env.example 向 .env 并填写您的凭据。

3.运行服务器

x-mcp-server

服务器将启动并监听stdin/stdout上的MCP请求。

配置

可以使用环境变量配置服务器:

变量 描述 必填
X_BEARER_TOKEN 您的X API承载令牌 是
RUST_LOG 日志记录级别(例如。, info, debug) 没有

可用工具

服务器提供以下MCP工具:

get_user

通过用户名或用户ID获取用户信息。

参数:

  • identifier (string):用户名(不带@)或用户ID
  • is_user_id (boolean,可选):标识符是否为用户ID(默认值:false)

例子:

{
  "identifier": "elonmusk",
  "is_user_id": false
}

post_tweet

发布一条新推文。

参数:

  • text (string):推文的文本内容
  • reply_to (字符串,可选):要回复的推特ID

例子:

{
  "text": "Hello, world! 🌍",
  "reply_to": "1234567890"
}

search_tweets

搜索推文。

参数:

  • query (string):搜索查询
  • max_results (整数,可选):最大结果数(1-100,默认值:10)
  • include_users (布尔值,可选):包含用户信息(默认值:false)
  • include_metrics (布尔值,可选):包括推特指标(默认值:false)

例子:

{
  "query": "MCP OR \"Model Context Protocol\"",
  "max_results": 20,
  "include_users": true,
  "include_metrics": true
}

get_tweet

按ID获取特定推文。

参数:

  • tweet_id (string):推特ID

例子:

{
  "tweet_id": "1234567890"
}

get_user_tweets

获取用户最近的推文。

参数:

  • identifier (string):用户名或用户ID
  • is_user_id (boolean,可选):标识符是否为用户ID(默认值:false)
  • max_results (整数,可选):推文的最大数量(1-100,默认值:10)

例子:

{
  "identifier": "elonmusk",
  "max_results": 5
}

图书馆使用情况

您也可以将其用作Rust库:

[dependencies]
x-mcp-server = "0.1"
use x_mcp_server::{XClient, auth::OAuthCredentials};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Create credentials
    let credentials = OAuthCredentials::from_env()?;
    let client = XClient::new(credentials);

    // Get user info
    let user = client.get_user_by_username("elonmusk").await?;
    println!("{:#?}", user);

    // Post a tweet
    let tweet = client.post_tweet("Hello from Rust! 🦀", None).await?;
    println!("Posted tweet: {}", tweet.id);

    Ok(())
}

MCP集成

此服务器实现 模型上下文协议 规范。您可以将其与任何兼容MCP的客户端集成:

克劳德桌面

添加到您的Claude Desktop配置中:

{
  "mcpServers": {
    "x-mcp-server": {
      "command": "x-mcp-server",
      "env": {
        "X_CONSUMER_KEY": "your_key",
        "X_CONSUMER_SECRET": "your_secret",
        "X_ACCESS_TOKEN": "your_token",
        "X_ACCESS_TOKEN_SECRET": "your_token_secret"
      }
    }
  }
}

其他MCP客户端

任何MCP客户端都可以使用stdio传输连接到此服务器。

发展

建筑

cargo build

测试

cargo test

使用调试日志运行

RUST_LOG=debug cargo run

API限值

请注意X API费率限制:

  • 用户查找:每15分钟窗口300个请求
  • 推特发布:每15分钟窗口300条推文
  • 搜索:每15分钟窗口180个请求
  • 用户时间线:每15分钟窗口1500个请求

服务器没有实施速率限制,因此请确保您的使用量保持在这些限制范围内。

安全

  • API凭据从未被记录或公开
  • OAuth 1.0a签名安全生成
  • 所有HTTP请求都使用HTTPS

贡献

欢迎投稿!请随时提交拉取请求。

许可证

该项目根据以下任一方式获得许可

由您选择。

相关