Skip to content
Windsurf

X (Twitter) for Windsurf

io.github.role1776/mcp-x

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

client:Windsurf transport:stdio runtime:oci

Install X (Twitter) in Windsurf

~/.codeium/windsurf/mcp_config.json · windows: %USERPROFILE%\.codeium\windsurf\mcp_config.json

Held in this page only — never stored, logged, or sent anywhere but back to your screen.

{
  "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>"
      }
    }
  }
}

Global only — Windsurf has no per-project MCP config. Refresh Cascade after saving. Windsurf docs

X (Twitter) in other clients