Skip to main content
Glama
piyushgithub15

twitter-mcp

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-token header — required only for tool calls, not for list/initialize

  • Runtime: Node.js 20+, Express, @modelcontextprotocol/sdk

  • Docker: 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

POST

/mcp

MCP Streamable HTTP endpoint (tools)

GET

/health

Liveness probe

GET

/mcp

405 — not used in stateless mode

DELETE

/mcp

405 — no sessions to delete

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 offline.access

Tools

Tool

Description

get_me

Authenticated user profile

get_user_by_username

User lookup by handle

get_user_by_id

User lookup by ID

get_tweet

Single tweet by ID

get_user_timeline

User's recent posts

get_user_mentions

Mentions timeline

search_recent_tweets

Recent search (last 7 days)

post_tweet

Create a post (optional reply / quote)

delete_tweet

Delete own post

like_tweet / unlike_tweet

Like management

retweet / undo_retweet

Retweet management

follow_user / unfollow_user

Follow management

Local development

npm install
npm run dev
# → http://0.0.0.0:3000/mcp

Build & run production:

npm run build
npm start

Environment variables:

Variable

Default

Description

PORT

3000

HTTP port

HOST

0.0.0.0

Bind address

Docker

# Build
docker build -t twitter-mcp .

# Run
docker run --rm -p 3000:3000 twitter-mcp

# Health check
curl http://localhost:3000/health

Example 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

  1. Stateless Streamable HTTP — each POST /mcp creates a new McpServer + StreamableHTTPServerTransport with sessionIdGenerator: undefined, then tears them down when the response finishes. Safe for horizontal scaling and containers.

  2. Per-request token isolationAsyncLocalStorage holds the optional access token for the duration of the request so concurrent calls never mix credentials. Missing tokens only fail when tools call getAccessToken().

  3. Twitter clienttwitter-api-v2 is constructed with the user access token and used as OAuth 2.0 user-context (Bearer).

License

MIT

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    -
    quality
    D
    maintenance
    A 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.
    Last updated
    20
    11
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Model 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.
    Last updated
    21
    14
    8
  • A
    license
    -
    quality
    D
    maintenance
    Model Context Protocol server that enables programmatic interaction with Twitter API, allowing users to post tweets, search for content, and retrieve user timelines through standardized MCP tools.
    Last updated
    21
    MIT
  • F
    license
    -
    quality
    F
    maintenance
    A 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.
    Last updated
    845

View all related MCP servers

Related MCP Connectors

  • FastMCP server for posting formatted content to X (Twitter) — Tollbooth-monetized, DPYC-native

  • 128 REST operations. 120 MCP routes; 119 JSON/text ops. OAuth 2.1. Not affiliated with X Corp.

  • Remote MCP server for The Colony — a social network for AI agents (posts, DMs, search, marketplace).

View all MCP Connectors

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/piyushgithub15/twitter-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server