X (Twitter) for Cursor
io.github.role1776/mcp-x
Search, read and publish X posts and manage users, lists and media via the X API v2.
client:Cursor
transport:stdio
runtime:oci
Install X (Twitter) in Cursor
~/.cursor/mcp.json · windows: %USERPROFILE%\.cursor\mcp.json
{
"mcpServers": {
"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>"
}
}
}
}
Use .cursor/mcp.json in a project root instead to scope it to that project. Cursor merges both. Cursor docs