Skip to main content
Glama

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

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

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