X MCP Server
A Model Context Protocol (MCP) server that provides access to X (formerly Twitter) API for basic utilities. This server allows AI assistants and other MCP clients to interact with X/Twitter through a standardized interface.
Features
- 🔐 Simple Bearer Token Authentication - Easy setup with just one token
- 👤 User Information - Get user profiles by username or ID
- 🐦 Read-Only Operations - Get tweets, user information, and search (no posting)
- 🔍 Search - Search for tweets with various filters and options
- 📝 User Timeline - Retrieve a user's recent tweets
- 🛠️ MCP Tools - Standardized tools for AI integration
- ⚡ Async/Await - Built with Tokio for high performance
Installation
From crates.io
From source
Quick Start
1. Get X API Credentials
- Go to the X Developer Portal
- Create a new app or use an existing one
- Generate your API keys and access tokens
- Make sure your app has the necessary permissions
2. Set Environment Variables
Create a .env file or set environment variables:
Or copy .env.example to .env and fill in your credentials.
3. Run the Server
The server will start and listen for MCP requests on stdin/stdout.
Configuration
The server can be configured using environment variables:
| Variable | Description | Required |
|---|---|---|
X_BEARER_TOKEN |
Your X API Bearer Token | Yes |
RUST_LOG |
Logging level (e.g., info, debug) |
No |
Available Tools
The server provides the following MCP tools:
get_user
Get user information by username or user ID.
Parameters:
identifier(string): Username (without @) or user IDis_user_id(boolean, optional): Whether the identifier is a user ID (default: false)
Example:
post_tweet
Post a new tweet.
Parameters:
text(string): The text content of the tweetreply_to(string, optional): Tweet ID to reply to
Example:
search_tweets
Search for tweets.
Parameters:
query(string): Search querymax_results(integer, optional): Maximum number of results (1-100, default: 10)include_users(boolean, optional): Include user information (default: false)include_metrics(boolean, optional): Include tweet metrics (default: false)
Example:
get_tweet
Get a specific tweet by ID.
Parameters:
tweet_id(string): The tweet ID
Example:
get_user_tweets
Get a user's recent tweets.
Parameters:
identifier(string): Username or user IDis_user_id(boolean, optional): Whether the identifier is a user ID (default: false)max_results(integer, optional): Maximum number of tweets (1-100, default: 10)
Example:
Library Usage
You can also use this as a Rust library:
[]
= "0.1"
use ;
async
MCP Integration
This server implements the Model Context Protocol specification. You can integrate it with any MCP-compatible client:
Claude Desktop
Add to your Claude Desktop configuration:
Other MCP Clients
Any MCP client can connect to this server using stdio transport.
Development
Building
Testing
Running with Debug Logs
RUST_LOG=debug
API Limits
Please be aware of X API rate limits:
- User lookup: 300 requests per 15-minute window
- Tweet posting: 300 tweets per 15-minute window
- Search: 180 requests per 15-minute window
- User timeline: 1500 requests per 15-minute window
The server does not implement rate limiting, so ensure your usage stays within these limits.
Security
- API credentials are never logged or exposed
- OAuth 1.0a signatures are generated securely
- All HTTP requests use HTTPS
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.