Search, read and publish X posts and manage users, lists and media via the X API v2.
npx @getmcp/cli add io.github.Role1776/mcp-xRequires Docker Engine. Community-contributed server. Review source before installing.
X_API_KEYOAuth 1.0a consumer key. developer.x.com -> your project -> your app -> Keys and tokens.
X_API_KEY_SECRETOAuth 1.0a consumer secret, issued together with X_API_KEY.
X_ACCESS_TOKENUser 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_SECRETUser access token secret, issued together with X_ACCESS_TOKEN.
MEDIA_ROOTAbsolute 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.
Config file: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"io.github.Role1776/mcp-x": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"X_API_KEY",
"-e",
"X_API_KEY_SECRET",
"-e",
"X_ACCESS_TOKEN",
"-e",
"X_ACCESS_TOKEN_SECRET",
"-e",
"MEDIA_ROOT",
"-e",
"MCP_TRANSPORT",
"-e",
"MCP_NAME",
"-e",
"MCP_PATH",
"-e",
"SERVER_PORT",
"-e",
"SERVER_READ_TIMEOUT",
"-e",
"SERVER_WRITE_TIMEOUT",
"-e",
"LOG_MODE",
"-e",
"MAX_IDLE_CONNS_PER_HOST",
"-e",
"X_DEBUG",
"-e",
"POSTS_MAX_QUERIES",
"-e",
"POSTS_MAX_USERNAMES",
"-e",
"POSTS_MAX_IDS",
"-e",
"POSTS_DEFAULT_RESULTS",
"-e",
"POSTS_MAX_RESULTS",
"-e",
"POSTS_DEFAULT_DAYS",
"-e",
"POSTS_MAX_DAYS",
"-e",
"POSTS_DEFAULT_TIMEOUT_MS",
"-e",
"POSTS_MIN_TIMEOUT_MS",
"-e",
"POSTS_MAX_TIMEOUT_MS",
"-e",
"USERS_MAX_USERNAMES",
"-e",
"USERS_MAX_IDS",
"-e",
"USERS_DEFAULT_RESULTS",
"-e",
"USERS_MAX_RESULTS",
"-e",
"USERS_DEFAULT_TIMEOUT_MS",
"-e",
"USERS_MIN_TIMEOUT_MS",
"-e",
"USERS_MAX_TIMEOUT_MS",
"-e",
"LISTS_DEFAULT_RESULTS",
"-e",
"LISTS_MAX_RESULTS",
"-e",
"LISTS_DEFAULT_TIMEOUT_MS",
"-e",
"LISTS_MIN_TIMEOUT_MS",
"-e",
"LISTS_MAX_TIMEOUT_MS",
"-e",
"MEDIA_CHUNK_BYTES",
"-e",
"MEDIA_POLL_INTERVAL_MS",
"-e",
"MEDIA_DEFAULT_TIMEOUT_MS",
"-e",
"MEDIA_MIN_TIMEOUT_MS",
"-e",
"MEDIA_MAX_TIMEOUT_MS",
"ghcr.io/role1776/mcp-x:0.1.1"
],
"env": {
"X_API_KEY": "",
"X_API_KEY_SECRET": "",
"X_ACCESS_TOKEN": "",
"X_ACCESS_TOKEN_SECRET": "",
"MEDIA_ROOT": "",
"MCP_TRANSPORT": "stdio",
"MCP_NAME": "mcp-x",
"MCP_PATH": "/mcp",
"SERVER_PORT": "8080",
"SERVER_READ_TIMEOUT": "60s",
"SERVER_WRITE_TIMEOUT": "60s",
"LOG_MODE": "local",
"MAX_IDLE_CONNS_PER_HOST": "100",
"X_DEBUG": "false",
"POSTS_MAX_QUERIES": "5",
"POSTS_MAX_USERNAMES": "5",
"POSTS_MAX_IDS": "100",
"POSTS_DEFAULT_RESULTS": "10",
"POSTS_MAX_RESULTS": "100",
"POSTS_DEFAULT_DAYS": "7",
"POSTS_MAX_DAYS": "7",
"POSTS_DEFAULT_TIMEOUT_MS": "15000",
"POSTS_MIN_TIMEOUT_MS": "2000",
"POSTS_MAX_TIMEOUT_MS": "60000",
"USERS_MAX_USERNAMES": "100",
"USERS_MAX_IDS": "100",
"USERS_DEFAULT_RESULTS": "100",
"USERS_MAX_RESULTS": "1000",
"USERS_DEFAULT_TIMEOUT_MS": "15000",
"USERS_MIN_TIMEOUT_MS": "2000",
"USERS_MAX_TIMEOUT_MS": "60000",
"LISTS_DEFAULT_RESULTS": "25",
"LISTS_MAX_RESULTS": "100",
"LISTS_DEFAULT_TIMEOUT_MS": "15000",
"LISTS_MIN_TIMEOUT_MS": "2000",
"LISTS_MAX_TIMEOUT_MS": "60000",
"MEDIA_CHUNK_BYTES": "4194304",
"MEDIA_POLL_INTERVAL_MS": "2000",
"MEDIA_DEFAULT_TIMEOUT_MS": "120000",
"MEDIA_MIN_TIMEOUT_MS": "5000",
"MEDIA_MAX_TIMEOUT_MS": "600000"
}
}
}
}Remote MCP server for Tandem docs, install guides, SDKs, workflows, and agent setup help.
Query and update your Odoo ERP in plain language, under your own Odoo access rules.
Ephemeral data sandbox for AI workflows with guardrails and security
MCP server for Anki flashcards: adaptive review, notes, media, and deck management via AnkiConnect.