twitter-mcp
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Twitter MCP Server
TypeScript Model Context Protocol server for the Twitter/X API v2.
Transport: Streamable HTTP (stateless)
Auth: OAuth user access token via the
access-tokenheader — required only for tool calls, not for list/initializeRuntime: Node.js 20+, Express,
@modelcontextprotocol/sdkDocker: multi-stage production image included
This server does not run the OAuth dance itself. Obtain a user access token from your OAuth 2.0 (or OAuth 1.0a user-context) flow and send it when invoking tools.
Endpoints
Method | Path | Description |
|
| MCP Streamable HTTP endpoint (tools) |
|
| Liveness probe |
|
|
|
|
|
|
Related MCP server: X.com MCP Server
Authentication
access-token is not required for protocol/list methods (initialize, tools/list, ping, etc.). It is required when calling a tool that hits the Twitter API.
POST /mcp HTTP/1.1
Host: localhost:3000
Content-Type: application/json
Accept: application/json, text/event-stream
access-token: <OAUTH_USER_ACCESS_TOKEN>Fallback (also accepted):
Authorization: Bearer <OAUTH_USER_ACCESS_TOKEN>If a tool is called without a token, the tool returns an error:
Missing access token. Tool calls require an OAuth user access token via the `access-token` header …Suggested OAuth 2.0 scopes for full tool coverage:
tweet.read tweet.write users.read follows.read follows.write media.write offline.accessMedia / video posting requires
media.writein addition totweet.write. Re-authorize users after adding the scope so tokens include it.
Tools
Tool | Description |
| Authenticated user profile |
| User lookup by handle |
| User lookup by ID |
| Single tweet by ID |
| User's recent posts |
| Mentions timeline |
| Recent search (last 7 days) |
| Download a URL and upload image / GIF / video (returns |
| Create a post (optional reply / quote / media) |
| Delete own post |
| Like management |
| Retweet management |
| Follow management |
Posting media
Call
upload_mediawithmedia_url(HTTP(S) URL). Type and category are detected from the file.Wait for
{ "media_id": "..." }(videos are processed before return).Call
post_tweetwithmedia_ids: ["<media_id>"]and optionaltext.
X post media (official limits):
Kind | Formats | Size | Per post |
Image | JPEG, PNG, WEBP | 5 MB each | up to 4 |
GIF | GIF | 15 MB (≤1280×1080, ≤350 frames) | 1 |
Video | H.264 MP4 or MOV, AAC audio | 0.5 s–20 min (125 min Premium); this server loads up to 512 MB | 1 |
Do not mix types. Audio (MP3 / WAV / M4A) is not supported — mux it into an MP4 first.
Local development
npm install
npm run dev
# → http://0.0.0.0:3000/mcpBuild & run production:
npm run build
npm startEnvironment variables:
Variable | Default | Description |
|
| HTTP port |
|
| Bind address |
Docker
# Build
docker build -t twitter-mcp .
# Run
docker run --rm -p 3000:3000 twitter-mcp
# Health check
curl http://localhost:3000/healthExample MCP initialize (curl)
No token needed for initialize / tools/list:
curl -sS http://localhost:3000/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-03-26",
"capabilities": {},
"clientInfo": { "name": "curl", "version": "1.0.0" }
}
}'Tool calls need the token:
curl -sS http://localhost:3000/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H 'access-token: YOUR_TOKEN' \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": { "name": "get_me", "arguments": {} }
}'Architecture notes
Stateless Streamable HTTP — each
POST /mcpcreates a newMcpServer+StreamableHTTPServerTransportwithsessionIdGenerator: undefined, then tears them down when the response finishes. Safe for horizontal scaling and containers.Per-request token isolation —
AsyncLocalStorageholds the optional access token for the duration of the request so concurrent calls never mix credentials. Missing tokens only fail when tools callgetAccessToken().Twitter client —
twitter-api-v2is constructed with the user access token and used as OAuth 2.0 user-context (Bearer).
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Hosted X (Twitter) MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
Twitter/X read-only MCP server — 12 tools: search, users, tweets, followers, timelines, trends.
Official twitterapi.io hosted MCP: Twitter/X tweets, users, followers, trends. OAuth or API key.
FastMCP server for posting formatted content to X (Twitter) — Tollbooth-monetized, DPYC-native
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables AI models and applications to interact directly with Twitter/X, providing capabilities to create posts, reply to tweets, retrieve user data, and manage account actions.7 npm11MIT
- FlicenseAqualityDmaintenanceModel Context Protocol server that enables LLMs to interact with X.com (formerly Twitter) through OAuth 2.0 authentication, supporting major Post-related operations including reading, writing, searching, and managing posts, likes, retweets, and bookmarks.2114 npm8-

X API FastMCP Serverofficial
FlicenseNot gradedqualityFmaintenanceA local MCP server that exposes the X API (formerly Twitter API) as tools, enabling operations like posting, searching, user management, and more via natural language commands.865-- AlicenseBqualityDmaintenanceMCP server for interacting with the X platform (Twitter) via MCP clients like Claude, Cursor AI, and Windsurf AI.206 npm6MIT