使用说明
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凭据
- 转到 X开发者门户
- 创建新应用程序或使用现有应用程序
- 生成API密钥和访问令牌
- 确保你的应用程序具有必要的权限
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):用户名(不带@)或用户IDis_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):用户名或用户IDis_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
贡献
欢迎投稿!请随时提交拉取请求。
许可证
该项目根据以下任一方式获得许可
- Apache许可证2.0版(特许通行证 或http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(许可证-麻省理工学院 或http://opensource.org/licenses/MIT)
由您选择。