XMCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@XMCPSearch for recent tweets about AI and summarize the top discussions."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
XMCP
The most comprehensive MCP server for X/Twitter with permission-based access control, 70+ tools, and Playwright-powered article fetching.
Highlights
70+ tools across research, engagement, publishing, social, lists, DMs
Permission profiles with runtime enforcement
Playwright-powered article fetching for X articles
Full engagement metrics and thread support
Broad MCP client compatibility
Quick Start
1. Install
pip install "xmcp[articles] @ git+https://github.com/vibeforge1111/xmcp.git"
python -m playwright install chromiumNote: The package name is xmcp and the server command is xmcp-server.
2. Get API Keys (Required)
XMCP requires X/Twitter API credentials to run. If you see errors about missing API keys, follow this quick guide:
Go to https://developer.twitter.com and sign in.
Create a Project and App (or open an existing one).
In the App Keys and Tokens tab, generate:
API Key and API Secret
Access Token and Access Token Secret
Bearer Token
Copy
.env.exampleto.envand paste your keys.
Common error messages and fixes:
"Missing required environment variable" -> add the missing key to
.envor your MCP config."403 Forbidden" / "Error 453" -> your X API access tier does not include that endpoint.
Get your credentials from developer.twitter.com:
API Key & Secret
Access Token & Secret
Bearer Token
You can store them in a local .env file:
# Windows (PowerShell)
copy .env.example .env
# macOS/Linux
cp .env.example .envDo not commit .env. It is ignored by default.
3. Configure
Add to your Claude settings (~/.claude.json):
{
"mcpServers": {
"xmcp": {
"type": "stdio",
"command": "xmcp-server",
"env": {
"TWITTER_API_KEY": "your_key",
"TWITTER_API_SECRET": "your_secret",
"TWITTER_ACCESS_TOKEN": "your_token",
"TWITTER_ACCESS_TOKEN_SECRET": "your_token_secret",
"TWITTER_BEARER_TOKEN": "your_bearer",
"X_MCP_PROFILE": "researcher"
}
}
}
}If you name the server xmcp, tools will appear as mcp__xmcp__* in clients that show tool prefixes.
4. Use
"Search for tweets about AI" -> search_twitter
"Read this article: x.com/..." -> get_article (Playwright)
"Post: Hello world!" -> post_tweet (requires creator profile)Permission Profiles
Choose what capabilities to enable:
Profile | Tools | Use Case |
researcher | 23 | Monitoring, analysis, research (read-only) |
creator | 41 | Content creation, audience engagement |
manager | 55 | Full account management |
automation | 70 | Bots, full automation (including DMs) |
custom | varies | Pick exactly what you need |
Setting a Profile
"env": {
"X_MCP_PROFILE": "creator"
}Permissions are evaluated at runtime. You can switch profiles or groups without restarting the server.
Custom Profile
"env": {
"X_MCP_PROFILE": "custom",
"X_MCP_GROUPS": "research,engage,publish"
}Tool Groups
research (18 tools) - Read-only, safe
Search, user lookup, tweet details, timelines, trends, article fetching
engage (9 tools) - Low risk
Like, unlike, bookmark, retweet, unretweet
publish (7 tools) - Medium risk
Post tweet, delete, quote, create thread, polls
social (8 tools) - Medium-high risk
Follow, unfollow, block, unblock, mute, unmute
conversations (5 tools) - Safe
Get full threads, replies, quote tweets, hide/unhide replies
lists (14 tools) - Low risk
Create, delete, manage lists and members
dms (3 tools) - High risk
Send and read direct messages
account (1 tool) - High risk
Get authenticated user profile
Key Tools
Search & Discovery
Tool | Description |
| Search with full engagement metrics |
| Find tweets containing X articles |
| Worldwide trending topics |
| Fetch article content (Playwright) |
User & Tweet Info
Tool | Description |
| User by @handle |
| User by ID with metrics |
| Full tweet info |
| Complete thread |
| Replies to a tweet |
Engagement
Tool | Description |
| Like |
| Retweet |
| Bookmark |
| Quote with comment |
Publishing
Tool | Description |
| Post with media, tags, reply |
| Post multiple tweets as thread |
| Create a poll |
Social
Tool | Description |
| Follow management |
| Block management |
| Mute management |
Human-In-The-Loop Advisory
This MCP is designed to improve research and workflows, not to replace human judgment.
Publishing tools return an advisory field that recommends a human review for posts and replies.
Real-Time Use Cases (No Extra Telemetry)
You can drive real-time workflows by polling tools on a schedule from your client or a cron job. Common patterns:
Trend snapshots every hour using
get_trendsKeyword monitoring using
search_twitterArticle tracking using
search_articles+get_article
This keeps the server simple while still enabling real-time visibility.
Article Fetching
X articles require JavaScript to render. This MCP uses Playwright.
# Correct - uses Playwright internally
result = await get_article("https://x.com/user/status/123")
# Returns: {title, author, content, url}
# WRONG - will fail
WebFetch("https://x.com/...") # Returns empty contentSetup
pip install playwright
python -m playwright install chromiumConfiguration Reference
Environment Variables
Variable | Description | Default |
| Permission profile |
|
| Groups for custom profile |
|
| Tools to disable | none |
| Tools to force-enable | none |
Credentials are read locally and only used to authenticate requests to X/Twitter.
Examples
Research only (safest):
"X_MCP_PROFILE": "researcher"Content creator:
"X_MCP_PROFILE": "creator"Custom - research + likes only:
"X_MCP_PROFILE": "custom",
"X_MCP_GROUPS": "research,engage",
"X_MCP_DISABLED_TOOLS": "retweet,unretweet"Runtime Permissions
Permissions are evaluated at runtime. This means you can:
Switch profiles or groups without restarting the server
Use different profiles per request in HTTP mode
Error Responses
Errors return a consistent envelope:
{
"ok": false,
"error": {
"type": "rate_limit_exceeded",
"message": "Rate limit exceeded",
"status": 429,
"details": {
"action_type": "tweet_actions",
"retry_after_seconds": 10
}
},
"tool": "post_tweet",
"timestamp": "2026-02-03T12:00:00+00:00"
}Rate Limits
Built-in protection:
Action | Limit | Window |
Tweets | 300 | 15 min |
Likes | 1000 | 24 hours |
Follows | 400 | 24 hours |
DMs | 1000 | 15 min |
Note: These limits are local guardrails, not official Twitter API limits.
Limitations
get_user_followers_you_knowandget_highlights_tweetsare simulated with available API datavote_on_pollreturnsnot_supportedbecause the API does not support programmatic votingArticle fetching requires Playwright and a Chromium install
Compatible Clients
Works with all major MCP clients. See COMPATIBILITY.md for full setup guides.
Client | Config Location | Status |
Claude Desktop |
| Native |
Claude Code |
| Native |
Cursor |
| Native |
Cline |
| Native |
Windsurf |
| Native |
Continue.dev |
| Native |
OpenClaw |
| Native |
Zed |
| Native |
ChatGPT Desktop |
| Native |
Sourcegraph Cody | OpenCTX | Native |
Firebase Genkit | genkitx-mcp plugin | Plugin |
Taal |
| Sync |
VS Code + OpenMCP | Extension settings | Plugin |
Ollama + Continue | Continue config | Native |
Pre-made Config Files
Ready-to-use configs in configs/ directory:
configs/
|-- continue.yaml # Continue.dev (YAML)
|-- continue.json # Continue.dev (JSON)
|-- openclaw-skill.yaml # OpenClaw skill
|-- zed-settings.json # Zed editor
|-- chatgpt-mcp.json # ChatGPT Desktop
|-- taal.yaml # Taal cross-client sync
|-- sourcegraph-openctx.json # Sourcegraph Cody
|-- genkit-plugin.ts # Firebase Genkit
`-- vscode-openmcp.json # VS Code OpenMCPFor AI Agents
This package includes rules files for AI code editors:
File | Editor |
| Cursor |
| Cline |
| Windsurf |
| Claude Code |
| Any LLM (copy to prompt) |
| Comprehensive rules |
Key rule: Use get_article for X URLs, not WebFetch.
HTTP Server Mode
For cloud deployments:
xmcp-http # Runs on port 8081
PORT=8080 xmcp-http # Custom portInstallation Options
From GitHub (recommended)
pip install "xmcp[articles] @ git+https://github.com/vibeforge1111/xmcp.git"From PyPI (when published)
pip install xmcp[articles]From Source
git clone https://github.com/vibeforge1111/xmcp.git
cd xmcp
pip install -e .[articles]
python -m playwright install chromiumDocumentation
Document | Description |
This file - full documentation | |
5-minute setup guide | |
Instructions for AI agents | |
Context block for LLM prompts | |
Rules for all AI editors |
Credits
Built on the upstream project by Rafal Janicki:
https://github.com/rafaljanicki/x-twitter-mcp-server
Update Log
See CHANGELOG.md for a summary of enhancements made in XMCP.
Enhanced by VibeShip with:
Permission-based access control (5 profiles, 8 groups)
70+ tools (vs ~20 original)
Playwright article fetching
Thread creation and reading
Full Lists, DMs, Social actions
Comprehensive engagement metrics
AI agent documentation
License
MIT License - see LICENSE
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/vibeforge1111/xmcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server