NestDaddy

X (Twitter)

io.github.Role1776/mcp-x ยท v0.1.1

Search, read and publish X posts and manage users, lists and media via the X API v2.

Connect Runs on your machine

Terminal
claude mcp add mcp-x -e X_API_KEY=<X_API_KEY> -e X_API_KEY_SECRET=<X_API_KEY_SECRET> -e X_ACCESS_TOKEN=<X_ACCESS_TOKEN> -e X_ACCESS_TOKEN_SECRET=<X_ACCESS_TOKEN_SECRET> -e MEDIA_ROOT=<MEDIA_ROOT> -e MCP_TRANSPORT=<MCP_TRANSPORT> -e MCP_NAME=<MCP_NAME> -e MCP_PATH=<MCP_PATH> -e SERVER_PORT=<SERVER_PORT> -e SERVER_READ_TIMEOUT=<SERVER_READ_TIMEOUT> -e SERVER_WRITE_TIMEOUT=<SERVER_WRITE_TIMEOUT> -e LOG_MODE=<LOG_MODE> -e MAX_IDLE_CONNS_PER_HOST=<MAX_IDLE_CONNS_PER_HOST> -e X_DEBUG=<X_DEBUG> -e POSTS_MAX_QUERIES=<POSTS_MAX_QUERIES> -e POSTS_MAX_USERNAMES=<POSTS_MAX_USERNAMES> -e POSTS_MAX_IDS=<POSTS_MAX_IDS> -e POSTS_DEFAULT_RESULTS=<POSTS_DEFAULT_RESULTS> -e POSTS_MAX_RESULTS=<POSTS_MAX_RESULTS> -e POSTS_DEFAULT_DAYS=<POSTS_DEFAULT_DAYS> -e POSTS_MAX_DAYS=<POSTS_MAX_DAYS> -e POSTS_DEFAULT_TIMEOUT_MS=<POSTS_DEFAULT_TIMEOUT_MS> -e POSTS_MIN_TIMEOUT_MS=<POSTS_MIN_TIMEOUT_MS> -e POSTS_MAX_TIMEOUT_MS=<POSTS_MAX_TIMEOUT_MS> -e USERS_MAX_USERNAMES=<USERS_MAX_USERNAMES> -e USERS_MAX_IDS=<USERS_MAX_IDS> -e USERS_DEFAULT_RESULTS=<USERS_DEFAULT_RESULTS> -e USERS_MAX_RESULTS=<USERS_MAX_RESULTS> -e USERS_DEFAULT_TIMEOUT_MS=<USERS_DEFAULT_TIMEOUT_MS> -e USERS_MIN_TIMEOUT_MS=<USERS_MIN_TIMEOUT_MS> -e USERS_MAX_TIMEOUT_MS=<USERS_MAX_TIMEOUT_MS> -e LISTS_DEFAULT_RESULTS=<LISTS_DEFAULT_RESULTS> -e LISTS_MAX_RESULTS=<LISTS_MAX_RESULTS> -e LISTS_DEFAULT_TIMEOUT_MS=<LISTS_DEFAULT_TIMEOUT_MS> -e LISTS_MIN_TIMEOUT_MS=<LISTS_MIN_TIMEOUT_MS> -e LISTS_MAX_TIMEOUT_MS=<LISTS_MAX_TIMEOUT_MS> -e MEDIA_CHUNK_BYTES=<MEDIA_CHUNK_BYTES> -e MEDIA_POLL_INTERVAL_MS=<MEDIA_POLL_INTERVAL_MS> -e MEDIA_DEFAULT_TIMEOUT_MS=<MEDIA_DEFAULT_TIMEOUT_MS> -e MEDIA_MIN_TIMEOUT_MS=<MEDIA_MIN_TIMEOUT_MS> -e MEDIA_MAX_TIMEOUT_MS=<MEDIA_MAX_TIMEOUT_MS> -- docker run -i --rm ghcr.io/role1776/mcp-x:0.1.1
claude_desktop_config.json
{
  "mcpServers": {
    "mcp-x": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/role1776/mcp-x:0.1.1"
      ],
      "env": {
        "X_API_KEY": "<X_API_KEY>",
        "X_API_KEY_SECRET": "<X_API_KEY_SECRET>",
        "X_ACCESS_TOKEN": "<X_ACCESS_TOKEN>",
        "X_ACCESS_TOKEN_SECRET": "<X_ACCESS_TOKEN_SECRET>",
        "MEDIA_ROOT": "<MEDIA_ROOT>",
        "MCP_TRANSPORT": "<MCP_TRANSPORT>",
        "MCP_NAME": "<MCP_NAME>",
        "MCP_PATH": "<MCP_PATH>",
        "SERVER_PORT": "<SERVER_PORT>",
        "SERVER_READ_TIMEOUT": "<SERVER_READ_TIMEOUT>",
        "SERVER_WRITE_TIMEOUT": "<SERVER_WRITE_TIMEOUT>",
        "LOG_MODE": "<LOG_MODE>",
        "MAX_IDLE_CONNS_PER_HOST": "<MAX_IDLE_CONNS_PER_HOST>",
        "X_DEBUG": "<X_DEBUG>",
        "POSTS_MAX_QUERIES": "<POSTS_MAX_QUERIES>",
        "POSTS_MAX_USERNAMES": "<POSTS_MAX_USERNAMES>",
        "POSTS_MAX_IDS": "<POSTS_MAX_IDS>",
        "POSTS_DEFAULT_RESULTS": "<POSTS_DEFAULT_RESULTS>",
        "POSTS_MAX_RESULTS": "<POSTS_MAX_RESULTS>",
        "POSTS_DEFAULT_DAYS": "<POSTS_DEFAULT_DAYS>",
        "POSTS_MAX_DAYS": "<POSTS_MAX_DAYS>",
        "POSTS_DEFAULT_TIMEOUT_MS": "<POSTS_DEFAULT_TIMEOUT_MS>",
        "POSTS_MIN_TIMEOUT_MS": "<POSTS_MIN_TIMEOUT_MS>",
        "POSTS_MAX_TIMEOUT_MS": "<POSTS_MAX_TIMEOUT_MS>",
        "USERS_MAX_USERNAMES": "<USERS_MAX_USERNAMES>",
        "USERS_MAX_IDS": "<USERS_MAX_IDS>",
        "USERS_DEFAULT_RESULTS": "<USERS_DEFAULT_RESULTS>",
        "USERS_MAX_RESULTS": "<USERS_MAX_RESULTS>",
        "USERS_DEFAULT_TIMEOUT_MS": "<USERS_DEFAULT_TIMEOUT_MS>",
        "USERS_MIN_TIMEOUT_MS": "<USERS_MIN_TIMEOUT_MS>",
        "USERS_MAX_TIMEOUT_MS": "<USERS_MAX_TIMEOUT_MS>",
        "LISTS_DEFAULT_RESULTS": "<LISTS_DEFAULT_RESULTS>",
        "LISTS_MAX_RESULTS": "<LISTS_MAX_RESULTS>",
        "LISTS_DEFAULT_TIMEOUT_MS": "<LISTS_DEFAULT_TIMEOUT_MS>",
        "LISTS_MIN_TIMEOUT_MS": "<LISTS_MIN_TIMEOUT_MS>",
        "LISTS_MAX_TIMEOUT_MS": "<LISTS_MAX_TIMEOUT_MS>",
        "MEDIA_CHUNK_BYTES": "<MEDIA_CHUNK_BYTES>",
        "MEDIA_POLL_INTERVAL_MS": "<MEDIA_POLL_INTERVAL_MS>",
        "MEDIA_DEFAULT_TIMEOUT_MS": "<MEDIA_DEFAULT_TIMEOUT_MS>",
        "MEDIA_MIN_TIMEOUT_MS": "<MEDIA_MIN_TIMEOUT_MS>",
        "MEDIA_MAX_TIMEOUT_MS": "<MEDIA_MAX_TIMEOUT_MS>"
      }
    }
  }
}
~/.cursor/mcp.json
{
  "mcpServers": {
    "mcp-x": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/role1776/mcp-x:0.1.1"
      ],
      "env": {
        "X_API_KEY": "<X_API_KEY>",
        "X_API_KEY_SECRET": "<X_API_KEY_SECRET>",
        "X_ACCESS_TOKEN": "<X_ACCESS_TOKEN>",
        "X_ACCESS_TOKEN_SECRET": "<X_ACCESS_TOKEN_SECRET>",
        "MEDIA_ROOT": "<MEDIA_ROOT>",
        "MCP_TRANSPORT": "<MCP_TRANSPORT>",
        "MCP_NAME": "<MCP_NAME>",
        "MCP_PATH": "<MCP_PATH>",
        "SERVER_PORT": "<SERVER_PORT>",
        "SERVER_READ_TIMEOUT": "<SERVER_READ_TIMEOUT>",
        "SERVER_WRITE_TIMEOUT": "<SERVER_WRITE_TIMEOUT>",
        "LOG_MODE": "<LOG_MODE>",
        "MAX_IDLE_CONNS_PER_HOST": "<MAX_IDLE_CONNS_PER_HOST>",
        "X_DEBUG": "<X_DEBUG>",
        "POSTS_MAX_QUERIES": "<POSTS_MAX_QUERIES>",
        "POSTS_MAX_USERNAMES": "<POSTS_MAX_USERNAMES>",
        "POSTS_MAX_IDS": "<POSTS_MAX_IDS>",
        "POSTS_DEFAULT_RESULTS": "<POSTS_DEFAULT_RESULTS>",
        "POSTS_MAX_RESULTS": "<POSTS_MAX_RESULTS>",
        "POSTS_DEFAULT_DAYS": "<POSTS_DEFAULT_DAYS>",
        "POSTS_MAX_DAYS": "<POSTS_MAX_DAYS>",
        "POSTS_DEFAULT_TIMEOUT_MS": "<POSTS_DEFAULT_TIMEOUT_MS>",
        "POSTS_MIN_TIMEOUT_MS": "<POSTS_MIN_TIMEOUT_MS>",
        "POSTS_MAX_TIMEOUT_MS": "<POSTS_MAX_TIMEOUT_MS>",
        "USERS_MAX_USERNAMES": "<USERS_MAX_USERNAMES>",
        "USERS_MAX_IDS": "<USERS_MAX_IDS>",
        "USERS_DEFAULT_RESULTS": "<USERS_DEFAULT_RESULTS>",
        "USERS_MAX_RESULTS": "<USERS_MAX_RESULTS>",
        "USERS_DEFAULT_TIMEOUT_MS": "<USERS_DEFAULT_TIMEOUT_MS>",
        "USERS_MIN_TIMEOUT_MS": "<USERS_MIN_TIMEOUT_MS>",
        "USERS_MAX_TIMEOUT_MS": "<USERS_MAX_TIMEOUT_MS>",
        "LISTS_DEFAULT_RESULTS": "<LISTS_DEFAULT_RESULTS>",
        "LISTS_MAX_RESULTS": "<LISTS_MAX_RESULTS>",
        "LISTS_DEFAULT_TIMEOUT_MS": "<LISTS_DEFAULT_TIMEOUT_MS>",
        "LISTS_MIN_TIMEOUT_MS": "<LISTS_MIN_TIMEOUT_MS>",
        "LISTS_MAX_TIMEOUT_MS": "<LISTS_MAX_TIMEOUT_MS>",
        "MEDIA_CHUNK_BYTES": "<MEDIA_CHUNK_BYTES>",
        "MEDIA_POLL_INTERVAL_MS": "<MEDIA_POLL_INTERVAL_MS>",
        "MEDIA_DEFAULT_TIMEOUT_MS": "<MEDIA_DEFAULT_TIMEOUT_MS>",
        "MEDIA_MIN_TIMEOUT_MS": "<MEDIA_MIN_TIMEOUT_MS>",
        "MEDIA_MAX_TIMEOUT_MS": "<MEDIA_MAX_TIMEOUT_MS>"
      }
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "mcp-x": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/role1776/mcp-x:0.1.1"
      ],
      "env": {
        "X_API_KEY": "<X_API_KEY>",
        "X_API_KEY_SECRET": "<X_API_KEY_SECRET>",
        "X_ACCESS_TOKEN": "<X_ACCESS_TOKEN>",
        "X_ACCESS_TOKEN_SECRET": "<X_ACCESS_TOKEN_SECRET>",
        "MEDIA_ROOT": "<MEDIA_ROOT>",
        "MCP_TRANSPORT": "<MCP_TRANSPORT>",
        "MCP_NAME": "<MCP_NAME>",
        "MCP_PATH": "<MCP_PATH>",
        "SERVER_PORT": "<SERVER_PORT>",
        "SERVER_READ_TIMEOUT": "<SERVER_READ_TIMEOUT>",
        "SERVER_WRITE_TIMEOUT": "<SERVER_WRITE_TIMEOUT>",
        "LOG_MODE": "<LOG_MODE>",
        "MAX_IDLE_CONNS_PER_HOST": "<MAX_IDLE_CONNS_PER_HOST>",
        "X_DEBUG": "<X_DEBUG>",
        "POSTS_MAX_QUERIES": "<POSTS_MAX_QUERIES>",
        "POSTS_MAX_USERNAMES": "<POSTS_MAX_USERNAMES>",
        "POSTS_MAX_IDS": "<POSTS_MAX_IDS>",
        "POSTS_DEFAULT_RESULTS": "<POSTS_DEFAULT_RESULTS>",
        "POSTS_MAX_RESULTS": "<POSTS_MAX_RESULTS>",
        "POSTS_DEFAULT_DAYS": "<POSTS_DEFAULT_DAYS>",
        "POSTS_MAX_DAYS": "<POSTS_MAX_DAYS>",
        "POSTS_DEFAULT_TIMEOUT_MS": "<POSTS_DEFAULT_TIMEOUT_MS>",
        "POSTS_MIN_TIMEOUT_MS": "<POSTS_MIN_TIMEOUT_MS>",
        "POSTS_MAX_TIMEOUT_MS": "<POSTS_MAX_TIMEOUT_MS>",
        "USERS_MAX_USERNAMES": "<USERS_MAX_USERNAMES>",
        "USERS_MAX_IDS": "<USERS_MAX_IDS>",
        "USERS_DEFAULT_RESULTS": "<USERS_DEFAULT_RESULTS>",
        "USERS_MAX_RESULTS": "<USERS_MAX_RESULTS>",
        "USERS_DEFAULT_TIMEOUT_MS": "<USERS_DEFAULT_TIMEOUT_MS>",
        "USERS_MIN_TIMEOUT_MS": "<USERS_MIN_TIMEOUT_MS>",
        "USERS_MAX_TIMEOUT_MS": "<USERS_MAX_TIMEOUT_MS>",
        "LISTS_DEFAULT_RESULTS": "<LISTS_DEFAULT_RESULTS>",
        "LISTS_MAX_RESULTS": "<LISTS_MAX_RESULTS>",
        "LISTS_DEFAULT_TIMEOUT_MS": "<LISTS_DEFAULT_TIMEOUT_MS>",
        "LISTS_MIN_TIMEOUT_MS": "<LISTS_MIN_TIMEOUT_MS>",
        "LISTS_MAX_TIMEOUT_MS": "<LISTS_MAX_TIMEOUT_MS>",
        "MEDIA_CHUNK_BYTES": "<MEDIA_CHUNK_BYTES>",
        "MEDIA_POLL_INTERVAL_MS": "<MEDIA_POLL_INTERVAL_MS>",
        "MEDIA_DEFAULT_TIMEOUT_MS": "<MEDIA_DEFAULT_TIMEOUT_MS>",
        "MEDIA_MIN_TIMEOUT_MS": "<MEDIA_MIN_TIMEOUT_MS>",
        "MEDIA_MAX_TIMEOUT_MS": "<MEDIA_MAX_TIMEOUT_MS>"
      }
    }
  }
}

Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.

Tools

This server runs locally, so its tools are listed by your MCP client once it starts.

Environment variables

NameDescription
X_API_KEY
Required, secret
OAuth 1.0a consumer key. developer.x.com -> your project -> your app -> Keys and tokens.
X_API_KEY_SECRET
Required, secret
OAuth 1.0a consumer secret, issued together with X_API_KEY.
X_ACCESS_TOKEN
Required, secret
User access token. Set the app permissions to Read and Write BEFORE generating it: a token keeps the permissions it was created with, and a read-only one fails every write until it is regenerated.
X_ACCESS_TOKEN_SECRET
Required, secret
User access token secret, issued together with X_ACCESS_TOKEN.
MEDIA_ROOT
Required
Absolute path to an existing directory - the only one x_media_upload may read files from. Anything outside it is refused, symlinks included. Checked at startup.
MCP_TRANSPORT
Optional
stdio (client spawns the process) or http (streamable HTTP listener).
MCP_NAME
Optional
Server name reported in the MCP initialize handshake.
MCP_PATH
Optional
HTTP path the MCP endpoint is served on. Used only when MCP_TRANSPORT=http.
SERVER_PORT
Optional
TCP port to listen on. Used only when MCP_TRANSPORT=http.
SERVER_READ_TIMEOUT
Optional
HTTP read timeout as a Go duration. Used only when MCP_TRANSPORT=http.
SERVER_WRITE_TIMEOUT
Optional
HTTP write timeout as a Go duration. Used only when MCP_TRANSPORT=http.
LOG_MODE
Optional
local (text, debug) or prod (JSON, info). Logs go to stderr.
MAX_IDLE_CONNS_PER_HOST
Optional
Idle connections the outbound HTTP client keeps per host.
X_DEBUG
Optional
Log the raw requests sent to the X API. Verbose; the output can contain request details, so keep it off outside debugging.
POSTS_MAX_QUERIES
Optional
Queries accepted in one x_posts_search or x_posts_count call.
POSTS_MAX_USERNAMES
Optional
Usernames accepted in one x_posts_by_user call.
POSTS_MAX_IDS
Optional
Post ids accepted in one x_posts_lookup call. The X API caps this at 100.
POSTS_DEFAULT_RESULTS
Optional
Posts returned per query when the call does not ask for a count. Every post returned is billed.
POSTS_MAX_RESULTS
Optional
Upper bound for posts per query. The X API caps this at 100.
POSTS_DEFAULT_DAYS
Optional
How far back post searches look when the call does not say, in days.
POSTS_MAX_DAYS
Optional
Furthest back a post search may look, in days. Recent search cannot exceed 7.
POSTS_DEFAULT_TIMEOUT_MS
Optional
Timeout for a posts call in milliseconds when the call does not request one.
POSTS_MIN_TIMEOUT_MS
Optional
Lowest timeout a posts call may request, in milliseconds.
POSTS_MAX_TIMEOUT_MS
Optional
Highest timeout a posts call may request, in milliseconds.
USERS_MAX_USERNAMES
Optional
Usernames accepted in one x_users_lookup call. The X API caps this at 100.
USERS_MAX_IDS
Optional
User ids accepted in one x_users_lookup call. The X API caps this at 100.
USERS_DEFAULT_RESULTS
Optional
Users returned per page when the call does not ask for a count.
USERS_MAX_RESULTS
Optional
Upper bound for users per page.
USERS_DEFAULT_TIMEOUT_MS
Optional
Timeout for a users call in milliseconds when the call does not request one.
USERS_MIN_TIMEOUT_MS
Optional
Lowest timeout a users call may request, in milliseconds.
USERS_MAX_TIMEOUT_MS
Optional
Highest timeout a users call may request, in milliseconds.
LISTS_DEFAULT_RESULTS
Optional
Items returned per list page when the call does not ask for a count.
LISTS_MAX_RESULTS
Optional
Upper bound for items per list page. The X API caps this at 100.
LISTS_DEFAULT_TIMEOUT_MS
Optional
Timeout for a lists call in milliseconds when the call does not request one.
LISTS_MIN_TIMEOUT_MS
Optional
Lowest timeout a lists call may request, in milliseconds.
LISTS_MAX_TIMEOUT_MS
Optional
Highest timeout a lists call may request, in milliseconds.
MEDIA_CHUNK_BYTES
Optional
Bytes per upload segment. The X APPEND endpoint caps a segment at 5 MB.
MEDIA_POLL_INTERVAL_MS
Optional
How often the upload status is polled while X transcodes a video, in milliseconds.
MEDIA_DEFAULT_TIMEOUT_MS
Optional
Timeout for a whole upload in milliseconds when the call does not request one.
MEDIA_MIN_TIMEOUT_MS
Optional
Lowest timeout an upload may request, in milliseconds.
MEDIA_MAX_TIMEOUT_MS
Optional
Highest timeout an upload may request, in milliseconds.

Details

Packageghcr.io/role1776/mcp-x:0.1.1 (OCI, stdio)
Packagehttps://github.com/Role1776/mcp-x/releases/download/v0.1.1/[email protected] (MCPB, stdio)
Packagehttps://github.com/Role1776/mcp-x/releases/download/v0.1.1/[email protected] (MCPB, stdio)
Packagehttps://github.com/Role1776/mcp-x/releases/download/v0.1.1/[email protected] (MCPB, stdio)
Packagehttps://github.com/Role1776/mcp-x/releases/download/v0.1.1/[email protected] (MCPB, stdio)
Packagehttps://github.com/Role1776/mcp-x/releases/download/v0.1.1/[email protected] (MCPB, stdio)
Packagehttps://github.com/Role1776/mcp-x/releases/download/v0.1.1/[email protected] (MCPB, stdio)
First published9 Sep 2026
Last updated9 Sep 2026
Registry nameio.github.Role1776/mcp-x

More marketing and seo servers See all

Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.