XMCP

XMCP

A comprehensive MCP server for X/Twitter featuring over 70 tools for research, engagement, and publishing with granular permission-based access control. It includes specialized Playwright-powered tools for fetching X articles and supports extensive account management and thread operations.

Category
Visit Server

README

XMCP

The most comprehensive MCP server for X/Twitter with permission-based access control, 70+ tools, and Playwright-powered article fetching.

License: MIT Python 3.10+

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 chromium

Note: 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:

  1. Go to https://developer.twitter.com and sign in.
  2. Create a Project and App (or open an existing one).
  3. In the App Keys and Tokens tab, generate:
    • API Key and API Secret
    • Access Token and Access Token Secret
    • Bearer Token
  4. Copy .env.example to .env and paste your keys.

Common error messages and fixes:

  • "Missing required environment variable" -> add the missing key to .env or 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 .env

Do 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_twitter Search with full engagement metrics
search_articles Find tweets containing X articles
get_trends Worldwide trending topics
get_article Fetch article content (Playwright)

User & Tweet Info

Tool Description
get_user_by_screen_name User by @handle
get_user_profile User by ID with metrics
get_tweet_details Full tweet info
get_conversation Complete thread
get_replies Replies to a tweet

Engagement

Tool Description
favorite_tweet Like
retweet Retweet
bookmark_tweet Bookmark
quote_tweet Quote with comment

Publishing

Tool Description
post_tweet Post with media, tags, reply
create_thread Post multiple tweets as thread
create_poll_tweet Create a poll

Social

Tool Description
follow_user / unfollow_user Follow management
block_user / unblock_user Block management
mute_user / unmute_user 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_trends
  • Keyword monitoring using search_twitter
  • Article 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 content

Setup

pip install playwright
python -m playwright install chromium

Configuration Reference

Environment Variables

Variable Description Default
X_MCP_PROFILE Permission profile researcher
X_MCP_GROUPS Groups for custom profile research
X_MCP_DISABLED_TOOLS Tools to disable none
X_MCP_ENABLED_TOOLS 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_know and get_highlights_tweets are simulated with available API data
  • vote_on_poll returns not_supported because the API does not support programmatic voting
  • Article 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 ~/.claude.json Native
Claude Code CLAUDE.md Native
Cursor .cursorrules Native
Cline .clinerules Native
Windsurf .windsurfrules Native
Continue.dev .continue/mcpServers/ Native
OpenClaw ~/.openclaw/skills/ Native
Zed .zed/settings.json Native
ChatGPT Desktop ~/.chatgpt/mcp.json Native
Sourcegraph Cody OpenCTX Native
Firebase Genkit genkitx-mcp plugin Plugin
Taal taal.yaml (sync all) 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 OpenMCP

For AI Agents

This package includes rules files for AI code editors:

File Editor
.cursorrules Cursor
.clinerules Cline
.windsurfrules Windsurf
CLAUDE.md Claude Code
LLM_CONTEXT.md Any LLM (copy to prompt)
docs/AGENT_RULES.md 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 port

Installation 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 chromium

Documentation

Document Description
README.md This file - full documentation
QUICKSTART.md 5-minute setup guide
CLAUDE.md Instructions for AI agents
LLM_CONTEXT.md Context block for LLM prompts
docs/AGENT_RULES.md 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

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured