Xengager
FreeNot checkedProvides programmatic X (Twitter) engagement via MCP, offering 24 tools for search, timelines, notifications, bookmarks, profiles, and tweet actions through a h
About
Provides programmatic X (Twitter) engagement via MCP, offering 24 tools for search, timelines, notifications, bookmarks, profiles, and tweet actions through a headless browser.
README
X (Twitter) engagement via Model Context Protocol — programmatic access through a headless browser.
24 tools across 6 domains: search, timelines, notifications, bookmarks, profiles, and tweet interactions. Designed for Claude Code, Cursor, and any MCP-compatible client.
Features
| Domain | Tools | Description |
|---|---|---|
| Timeline | x_home_timeline, x_following_timeline, x_explore, x_trends |
Home feed, following feed, explore tab, trending topics |
| Search | x_search |
Full-text search with operators (from:, since:, lang:, min_likes:, etc.) |
| Notifications | x_notifications |
All notifications or filtered to mentions, with pagination |
| Bookmarks | x_bookmarks |
Authenticated user's saved tweets |
| Profile | x_user_profile, x_user_posts, x_user_replies, x_user_following, x_user_followers, x_user_likes, x_user_media, x_user_articles |
Full profile access including media, articles, and social graph |
| Tweet Actions | x_get_tweet, x_tweet_replies, x_like, x_unlike, x_repost, x_unrepost, x_bookmark, x_unbookmark, x_quote_tweet, x_reply, x_post_tweet |
Read, engage, compose, and post threads |
All tools are idempotent and return errors inside the JSON payload — never as MCP protocol errors.
Architecture
┌──────────────────────────────────────────┐
│ MCP Client (Claude Code, Cursor, etc.) │
└──────────────────┬───────────────────────┘
│ Streamable HTTP / stdio
┌──────────────────▼───────────────────────┐
│ xengager-mcp Server │
│ ┌──────────┐ ┌──────────────────────┐ │
│ │ GraphQL │ │ DOM Scraping │ │
│ │ (primary) │ │ (Puppeteer fallback) │ │
│ └──────────┘ └──────────────────────┘ │
│ ┌──────────────────────────────────────┐│
│ │ Puppeteer + stealth plugin ││
│ │ (anti-bot detection evasion) ││
│ └──────────────────────────────────────┘│
└──────────────────────────────────────────┘
- GraphQL-first: Most read operations use X's internal GraphQL API for speed and reliability
- DOM fallback: Actions (like, repost, reply) use Puppeteer with randomized delays and human-like mouse movement
- Single browser instance: All tools share one page — calls are serialized naturally via MCP transport
Prerequisites
- Bun ≥ 1.1
- Chrome/Chromium (auto-installed by Puppeteer, or use system Chrome in Docker)
- X (Twitter) account with valid auth cookies
Obtaining X Credentials
- Log into x.com in Chrome
- Open DevTools → Application → Cookies → x.com
- Copy the values for
auth_tokenandct0
Quick Start
# Clone and install
git clone https://github.com/YOUR_USERNAME/xengager-mcp.git
cd xengager-mcp
bun install
# Configure credentials
cp .env.example .env
# Edit .env — paste your X_AUTH_TOKEN and X_CT0 values
# Run (stdio transport — for local MCP integration)
bun run stdio
# Or run as HTTP server (for remote/Cloudflare Tunnel setups)
bun run start
Docker
# With Cloudflare Tunnel (public MCP endpoint, requires CLOUDFLARE_TUNNEL_TOKEN in .env)
docker compose up
# Without tunnel
docker compose up mcp
The Cloudflare Tunnel URL is configured via TUNNEL_HOSTNAME in .env and printed on startup. Point your MCP client at it.
MCP Client Configuration
Claude Code
{
"mcpServers": {
"xengager": {
"command": "bun",
"args": ["run", "stdio"],
"cwd": "/path/to/xengager-mcp"
}
}
}
Remote (Cloudflare Tunnel)
{
"mcpServers": {
"xengager": {
"type": "http",
"url": "https://your-tunnel.yourdomain.com/mcp",
"headers": {
"Authorization": "Bearer your-mcp-api-key"
}
}
}
}
Set MCP_API_KEY in .env to enable Bearer token authentication on the HTTP server.
Quick Usage Examples
"What's trending?" → x_trends
"Search for AI news" → x_search("AI news", tab: "top")
"Show me @OpenAI's tweets" → x_user_posts("OpenAI")
"Get my notifications" → x_notifications
"Like and bookmark this" → x_like(url) → x_bookmark(url)
"Post a thread" → x_post_tweet(["Part 1", "Part 2", "Part 3"])
See SKILL.md for the complete agent usage guide with response shapes, pagination patterns, and workflow recipes.
Environment Variables
| Variable | Required | Description |
|---|---|---|
X_AUTH_TOKEN |
Yes | X.com auth_token cookie |
X_CT0 |
Yes | X.com ct0 cookie (CSRF token) |
PORT |
No | HTTP server port (default: 3000) |
MCP_API_KEY |
No | Bearer token for HTTP auth |
ALLOWED_ORIGINS |
No | Comma-separated CORS origins (default: *) |
CLOUDFLARE_TUNNEL_TOKEN |
No | Tunnel token from Cloudflare Zero Trust dashboard |
TUNNEL_HOSTNAME |
No | Static hostname for the tunnel (e.g., mcp.yourdomain.com) |
Testing
bun test
Tests cover browser lifecycle, pagination logic, GraphQL client/parser/cache, and individual tools.
License
MIT © [Your Name]
Installing Xengager
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/ogunbaysal/xengager-mcpFAQ
Is Xengager MCP free?
Yes, Xengager MCP is free — one-click install via Unyly at no cost.
Does Xengager need an API key?
No, Xengager runs without API keys or environment variables.
Is Xengager hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Xengager in Claude Desktop, Claude Code or Cursor?
Open Xengager on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
Playwright
Browser automation, scraping, screenshots
by MicrosoftPuppeteer
Browser automation and web scraping.
by modelcontextprotocolopentabs-dev/opentabs
Plugin-based MCP server + Chrome extension that gives AI agents access to web applications through the user's authenticated browser session. 100+ plugins with a
by opentabs-devrobhunter/agentdeals
1,500+ developer infrastructure deals, free tiers, and startup programs across 54 categories. Search deals, compare vendors, plan stacks, and track pricing chan
by robhunterCompare Xengager with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All browse MCPs
