Search / io.github.Role1776/mcp-x
X (Twitter)
L0· runs locallySearch, read and publish X posts and manage users, lists and media via the X API v2.
v0.1.1 · active · repository · website · descriptor JSON · versions
Search / io.github.Role1776/mcp-x
L0· runs locallySearch, read and publish X posts and manage users, lists and media via the X API v2.
v0.1.1 · active · repository · website · descriptor JSON · versions
{
"mcpServers": {
"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}",
"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": "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"
}
}
}
}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=stdio" -e "MCP_NAME=mcp-x" -e "MCP_PATH=/mcp" -e "SERVER_PORT=8080" -e "SERVER_READ_TIMEOUT=60s" -e "SERVER_WRITE_TIMEOUT=60s" -e "LOG_MODE=local" -e "MAX_IDLE_CONNS_PER_HOST=100" -e "X_DEBUG=false" -e "POSTS_MAX_QUERIES=5" -e "POSTS_MAX_USERNAMES=5" -e "POSTS_MAX_IDS=100" -e "POSTS_DEFAULT_RESULTS=10" -e "POSTS_MAX_RESULTS=100" -e "POSTS_DEFAULT_DAYS=7" -e "POSTS_MAX_DAYS=7" -e "POSTS_DEFAULT_TIMEOUT_MS=15000" -e "POSTS_MIN_TIMEOUT_MS=2000" -e "POSTS_MAX_TIMEOUT_MS=60000" -e "USERS_MAX_USERNAMES=100" -e "USERS_MAX_IDS=100" -e "USERS_DEFAULT_RESULTS=100" -e "USERS_MAX_RESULTS=1000" -e "USERS_DEFAULT_TIMEOUT_MS=15000" -e "USERS_MIN_TIMEOUT_MS=2000" -e "USERS_MAX_TIMEOUT_MS=60000" -e "LISTS_DEFAULT_RESULTS=25" -e "LISTS_MAX_RESULTS=100" -e "LISTS_DEFAULT_TIMEOUT_MS=15000" -e "LISTS_MIN_TIMEOUT_MS=2000" -e "LISTS_MAX_TIMEOUT_MS=60000" -e "MEDIA_CHUNK_BYTES=4194304" -e "MEDIA_POLL_INTERVAL_MS=2000" -e "MEDIA_DEFAULT_TIMEOUT_MS=120000" -e "MEDIA_MIN_TIMEOUT_MS=5000" -e "MEDIA_MAX_TIMEOUT_MS=600000" -- docker 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[mcp_servers.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}", "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" = "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" }
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"mcp-x": {
"type": "local",
"command": [
"docker",
"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"
],
"enabled": true,
"environment": {
"X_API_KEY": "{env:X_API_KEY}",
"X_API_KEY_SECRET": "{env:X_API_KEY_SECRET}",
"X_ACCESS_TOKEN": "{env:X_ACCESS_TOKEN}",
"X_ACCESS_TOKEN_SECRET": "{env:X_ACCESS_TOKEN_SECRET}",
"MEDIA_ROOT": "{env: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"
}
}
}
}{
"mcpServers": {
"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}",
"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": "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"
}
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=mcp-x&config=eyJjb21tYW5kIjoiZG9ja2VyIiwiYXJncyI6WyJydW4iLCItaSIsIi0tcm0iLCItZSIsIlhfQVBJX0tFWSIsIi1lIiwiWF9BUElfS0VZX1NFQ1JFVCIsIi1lIiwiWF9BQ0NFU1NfVE9LRU4iLCItZSIsIlhfQUNDRVNTX1RPS0VOX1NFQ1JFVCIsIi1lIiwiTUVESUFfUk9PVCIsIi1lIiwiTUNQX1RSQU5TUE9SVCIsIi1lIiwiTUNQX05BTUUiLCItZSIsIk1DUF9QQVRIIiwiLWUiLCJTRVJWRVJfUE9SVCIsIi1lIiwiU0VSVkVSX1JFQURfVElNRU9VVCIsIi1lIiwiU0VSVkVSX1dSSVRFX1RJTUVPVVQiLCItZSIsIkxPR19NT0RFIiwiLWUiLCJNQVhfSURMRV9DT05OU19QRVJfSE9TVCIsIi1lIiwiWF9ERUJVRyIsIi1lIiwiUE9TVFNfTUFYX1FVRVJJRVMiLCItZSIsIlBPU1RTX01BWF9VU0VSTkFNRVMiLCItZSIsIlBPU1RTX01BWF9JRFMiLCItZSIsIlBPU1RTX0RFRkFVTFRfUkVTVUxUUyIsIi1lIiwiUE9TVFNfTUFYX1JFU1VMVFMiLCItZSIsIlBPU1RTX0RFRkFVTFRfREFZUyIsIi1lIiwiUE9TVFNfTUFYX0RBWVMiLCItZSIsIlBPU1RTX0RFRkFVTFRfVElNRU9VVF9NUyIsIi1lIiwiUE9TVFNfTUlOX1RJTUVPVVRfTVMiLCItZSIsIlBPU1RTX01BWF9USU1FT1VUX01TIiwiLWUiLCJVU0VSU19NQVhfVVNFUk5BTUVTIiwiLWUiLCJVU0VSU19NQVhfSURTIiwiLWUiLCJVU0VSU19ERUZBVUxUX1JFU1VMVFMiLCItZSIsIlVTRVJTX01BWF9SRVNVTFRTIiwiLWUiLCJVU0VSU19ERUZBVUxUX1RJTUVPVVRfTVMiLCItZSIsIlVTRVJTX01JTl9USU1FT1VUX01TIiwiLWUiLCJVU0VSU19NQVhfVElNRU9VVF9NUyIsIi1lIiwiTElTVFNfREVGQVVMVF9SRVNVTFRTIiwiLWUiLCJMSVNUU19NQVhfUkVTVUxUUyIsIi1lIiwiTElTVFNfREVGQVVMVF9USU1FT1VUX01TIiwiLWUiLCJMSVNUU19NSU5fVElNRU9VVF9NUyIsIi1lIiwiTElTVFNfTUFYX1RJTUVPVVRfTVMiLCItZSIsIk1FRElBX0NIVU5LX0JZVEVTIiwiLWUiLCJNRURJQV9QT0xMX0lOVEVSVkFMX01TIiwiLWUiLCJNRURJQV9ERUZBVUxUX1RJTUVPVVRfTVMiLCItZSIsIk1FRElBX01JTl9USU1FT1VUX01TIiwiLWUiLCJNRURJQV9NQVhfVElNRU9VVF9NUyIsImdoY3IuaW8vcm9sZTE3NzYvbWNwLXg6MC4xLjEiXSwiZW52Ijp7IlhfQVBJX0tFWSI6IiR7WF9BUElfS0VZfSIsIlhfQVBJX0tFWV9TRUNSRVQiOiIke1hfQVBJX0tFWV9TRUNSRVR9IiwiWF9BQ0NFU1NfVE9LRU4iOiIke1hfQUNDRVNTX1RPS0VOfSIsIlhfQUNDRVNTX1RPS0VOX1NFQ1JFVCI6IiR7WF9BQ0NFU1NfVE9LRU5fU0VDUkVUfSIsIk1FRElBX1JPT1QiOiIke01FRElBX1JPT1R9IiwiTUNQX1RSQU5TUE9SVCI6InN0ZGlvIiwiTUNQX05BTUUiOiJtY3AteCIsIk1DUF9QQVRIIjoiL21jcCIsIlNFUlZFUl9QT1JUIjoiODA4MCIsIlNFUlZFUl9SRUFEX1RJTUVPVVQiOiI2MHMiLCJTRVJWRVJfV1JJVEVfVElNRU9VVCI6IjYwcyIsIkxPR19NT0RFIjoibG9jYWwiLCJNQVhfSURMRV9DT05OU19QRVJfSE9TVCI6IjEwMCIsIlhfREVCVUciOiJmYWxzZSIsIlBPU1RTX01BWF9RVUVSSUVTIjoiNSIsIlBPU1RTX01BWF9VU0VSTkFNRVMiOiI1IiwiUE9TVFNfTUFYX0lEUyI6IjEwMCIsIlBPU1RTX0RFRkFVTFRfUkVTVUxUUyI6IjEwIiwiUE9TVFNfTUFYX1JFU1VMVFMiOiIxMDAiLCJQT1NUU19ERUZBVUxUX0RBWVMiOiI3IiwiUE9TVFNfTUFYX0RBWVMiOiI3IiwiUE9TVFNfREVGQVVMVF9USU1FT1VUX01TIjoiMTUwMDAiLCJQT1NUU19NSU5fVElNRU9VVF9NUyI6IjIwMDAiLCJQT1NUU19NQVhfVElNRU9VVF9NUyI6IjYwMDAwIiwiVVNFUlNfTUFYX1VTRVJOQU1FUyI6IjEwMCIsIlVTRVJTX01BWF9JRFMiOiIxMDAiLCJVU0VSU19ERUZBVUxUX1JFU1VMVFMiOiIxMDAiLCJVU0VSU19NQVhfUkVTVUxUUyI6IjEwMDAiLCJVU0VSU19ERUZBVUxUX1RJTUVPVVRfTVMiOiIxNTAwMCIsIlVTRVJTX01JTl9USU1FT1VUX01TIjoiMjAwMCIsIlVTRVJTX01BWF9USU1FT1VUX01TIjoiNjAwMDAiLCJMSVNUU19ERUZBVUxUX1JFU1VMVFMiOiIyNSIsIkxJU1RTX01BWF9SRVNVTFRTIjoiMTAwIiwiTElTVFNfREVGQVVMVF9USU1FT1VUX01TIjoiMTUwMDAiLCJMSVNUU19NSU5fVElNRU9VVF9NUyI6IjIwMDAiLCJMSVNUU19NQVhfVElNRU9VVF9NUyI6IjYwMDAwIiwiTUVESUFfQ0hVTktfQllURVMiOiI0MTk0MzA0IiwiTUVESUFfUE9MTF9JTlRFUlZBTF9NUyI6IjIwMDAiLCJNRURJQV9ERUZBVUxUX1RJTUVPVVRfTVMiOiIxMjAwMDAiLCJNRURJQV9NSU5fVElNRU9VVF9NUyI6IjUwMDAiLCJNRURJQV9NQVhfVElNRU9VVF9NUyI6IjYwMDAwMCJ9fQ%3D%3D"
}{
"servers": {
"mcp-x": {
"type": "stdio",
"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}",
"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": "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"
}
}
}
}{
"mcpServers": {
"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}",
"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": "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"
}
}
}
}extensions:
"mcp-x":
enabled: true
name: "mcp-x"
type: stdio
cmd: "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"
envs:
"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": "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"
timeout: 300
Placeholders to fill from your own secret store: ${X_API_KEY}, ${X_API_KEY_SECRET}, ${X_ACCESS_TOKEN}, ${X_ACCESS_TOKEN_SECRET}. The registry never accepts secret values.
This is a local package: the command runs on your machine.
Not scored: fewer than three checks apply, usually because no remote answered a credential-free probe or the server is a local package.
protocol.modern, protocol.stateless, protocol.transport, protocol.list_ttlno remote answered a protocol handshake (not probed yet, unreachable, or local-only)auth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptions, tools.description_length, tools.schemas, tools.annotations, tools.directory_hints, tools.token_cost, tools.api_dumptool list unknown (behind auth, not probed, or empty)stability.changes, stability.rug_pulltool list unknowndeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packageNo tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+repository +namespace-matches-repo +website ~liveness-unmeasured ~updated-41d-ago -unpinned-packages(1)
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| package | registry | version | runtime | secrets |
|---|---|---|---|---|
ghcr.io/role1776/mcp-x:0.1.1 | oci | unpinned | – | X_API_KEY, X_API_KEY_SECRET, X_ACCESS_TOKEN, X_ACCESS_TOKEN_SECRET |
https://github.com/Role1776/mcp-x/releases/download/v0.1.1/mcp-x_0.1.1_darwin_amd64.mcpb | mcpb | 0.1.1 | – | X_API_KEY, X_API_KEY_SECRET, X_ACCESS_TOKEN, X_ACCESS_TOKEN_SECRET |
https://github.com/Role1776/mcp-x/releases/download/v0.1.1/mcp-x_0.1.1_darwin_arm64.mcpb | mcpb | 0.1.1 | – | X_API_KEY, X_API_KEY_SECRET, X_ACCESS_TOKEN, X_ACCESS_TOKEN_SECRET |
https://github.com/Role1776/mcp-x/releases/download/v0.1.1/mcp-x_0.1.1_linux_amd64.mcpb | mcpb | 0.1.1 | – | X_API_KEY, X_API_KEY_SECRET, X_ACCESS_TOKEN, X_ACCESS_TOKEN_SECRET |
https://github.com/Role1776/mcp-x/releases/download/v0.1.1/mcp-x_0.1.1_linux_arm64.mcpb | mcpb | 0.1.1 | – | X_API_KEY, X_API_KEY_SECRET, X_ACCESS_TOKEN, X_ACCESS_TOKEN_SECRET |
https://github.com/Role1776/mcp-x/releases/download/v0.1.1/mcp-x_0.1.1_windows_amd64.mcpb | mcpb | 0.1.1 | – | X_API_KEY, X_API_KEY_SECRET, X_ACCESS_TOKEN, X_ACCESS_TOKEN_SECRET |
https://github.com/Role1776/mcp-x/releases/download/v0.1.1/mcp-x_0.1.1_windows_arm64.mcpb | mcpb | 0.1.1 | – | X_API_KEY, X_API_KEY_SECRET, X_ACCESS_TOKEN, X_ACCESS_TOKEN_SECRET |
No tools observed. Local packages are never executed by the registry.
Schemas: list_tools.
{
"name": "io.github.Role1776/mcp-x",
"title": "X (Twitter)",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"version": "0.1.1",
"packages": [
{
"transport": {
"type": "stdio"
},
"identifier": "ghcr.io/role1776/mcp-x:0.1.1",
"registryType": "oci",
"environmentVariables": [
{
"name": "X_API_KEY",
"isSecret": true,
"isRequired": true,
"description": "OAuth 1.0a consumer key. developer.x.com -> your project -> your app -> Keys and tokens."
},
{
"name": "X_API_KEY_SECRET",
"isSecret": true,
"isRequired": true,
"description": "OAuth 1.0a consumer secret, issued together with X_API_KEY."
},
{
"name": "X_ACCESS_TOKEN",
"isSecret": true,
"isRequired": true,
"description": "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."
},
{
"name": "X_ACCESS_TOKEN_SECRET",
"isSecret": true,
"isRequired": true,
"description": "User access token secret, issued together with X_ACCESS_TOKEN."
},
{
"name": "MEDIA_ROOT",
"format": "filepath",
"isRequired": true,
"description": "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.",
"placeholder": "/tmp/mcp-x-media"
},
{
"name": "MCP_TRANSPORT",
"choices": [
"stdio",
"http"
],
"default": "stdio",
"description": "stdio (client spawns the process) or http (streamable HTTP listener)."
},
{
"name": "MCP_NAME",
"default": "mcp-x",
"description": "Server name reported in the MCP initialize handshake."
},
{
"name": "MCP_PATH",
"default": "/mcp",
"description": "HTTP path the MCP endpoint is served on. Used only when MCP_TRANSPORT=http."
},
{
"name": "SERVER_PORT",
"default": "8080",
"description": "TCP port to listen on. Used only when MCP_TRANSPORT=http."
},
{
"name": "SERVER_READ_TIMEOUT",
"default": "60s",
"description": "HTTP read timeout as a Go duration. Used only when MCP_TRANSPORT=http."
},
{
"name": "SERVER_WRITE_TIMEOUT",
"default": "60s",
"description": "HTTP write timeout as a Go duration. Used only when MCP_TRANSPORT=http."
},
{
"name": "LOG_MODE",
"choices": [
"local",
"prod"
],
"default": "local",
"description": "local (text, debug) or prod (JSON, info). Logs go to stderr."
},
{
"name": "MAX_IDLE_CONNS_PER_HOST",
"format": "number",
"default": "100",
"description": "Idle connections the outbound HTTP client keeps per host."
},
{
"name": "X_DEBUG",
"format": "boolean",
"choices": [
"false",
"true"
],
"default": "false",
"description": "Log the raw requests sent to the X API. Verbose; the output can contain request details, so keep it off outside debugging."
},
{
"name": "POSTS_MAX_QUERIES",
"format": "number",
"default": "5",
"description": "Queries accepted in one x_posts_search or x_posts_count call."
},
{
"name": "POSTS_MAX_USERNAMES",
"format": "number",
"default": "5",
"description": "Usernames accepted in one x_posts_by_user call."
},
{
"name": "POSTS_MAX_IDS",
"format": "number",
"default": "100",
"description": "Post ids accepted in one x_posts_lookup call. The X API caps this at 100."
},
{
"name": "POSTS_DEFAULT_RESULTS",
"format": "number",
"default": "10",
"description": "Posts returned per query when the call does not ask for a count. Every post returned is billed."
},
{
"name": "POSTS_MAX_RESULTS",
"format": "number",
"default": "100",
"description": "Upper bound for posts per query. The X API caps this at 100."
},
{
"name": "POSTS_DEFAULT_DAYS",
"format": "number",
"default": "7",
"description": "How far back post searches look when the call does not say, in days."
},
{
"name": "POSTS_MAX_DAYS",
"format": "number",
"default": "7",
"description": "Furthest back a post search may look, in days. Recent search cannot exceed 7."
},
{
"name": "POSTS_DEFAULT_TIMEOUT_MS",
"format": "number",
"default": "15000",
"description": "Timeout for a posts call in milliseconds when the call does not request one."
},
{
"name": "POSTS_MIN_TIMEOUT_MS",
"format": "number",
"default": "2000",
"description": "Lowest timeout a posts call may request, in milliseconds."
},
{
"name": "POSTS_MAX_TIMEOUT_MS",
"format": "number",
"default": "60000",
"description": "Highest timeout a posts call may request, in milliseconds."
},
{
"name": "USERS_MAX_USERNAMES",
"format": "number",
"default": "100",
"description": "Usernames accepted in one x_users_lookup call. The X API caps this at 100."
},
{
"name": "USERS_MAX_IDS",
"format": "number",
"default": "100",
"description": "User ids accepted in one x_users_lookup call. The X API caps this at 100."
},
{
"name": "USERS_DEFAULT_RESULTS",
"format": "number",
"default": "100",
"description": "Users returned per page when the call does not ask for a count."
},
{
"name": "USERS_MAX_RESULTS",
"format": "number",
"default": "1000",
"description": "Upper bound for users per page."
},
{
"name": "USERS_DEFAULT_TIMEOUT_MS",
"format": "number",
"default": "15000",
"description": "Timeout for a users call in milliseconds when the call does not request one."
},
{
"name": "USERS_MIN_TIMEOUT_MS",
"format": "number",
"default": "2000",
"description": "Lowest timeout a users call may request, in milliseconds."
},
{
"name": "USERS_MAX_TIMEOUT_MS",
"format": "number",
"default": "60000",
"description": "Highest timeout a users call may request, in milliseconds."
},
{
"name": "LISTS_DEFAULT_RESULTS",
"format": "number",
"default": "25",
"description": "Items returned per list page when the call does not ask for a count."
},
{
"name": "LISTS_MAX_RESULTS",
"format": "number",
"default": "100",
"description": "Upper bound for items per list page. The X API caps this at 100."
},
{
"name": "LISTS_DEFAULT_TIMEOUT_MS",
"format": "number",
"default": "15000",
"description": "Timeout for a lists call in milliseconds when the call does not request one."
},
{
"name": "LISTS_MIN_TIMEOUT_MS",
"format": "number",
"default": "2000",
"description": "Lowest timeout a lists call may request, in milliseconds."
},
{
"name": "LISTS_MAX_TIMEOUT_MS",
"format": "number",
"default": "60000",
"description": "Highest timeout a lists call may request, in milliseconds."
},
{
"name": "MEDIA_CHUNK_BYTES",
"format": "number",
"default": "4194304",
"description": "Bytes per upload segment. The X APPEND endpoint caps a segment at 5 MB."
},
{
"name": "MEDIA_POLL_INTERVAL_MS",
"format": "number",
"default": "2000",
"description": "How often the upload status is polled while X transcodes a video, in milliseconds."
},
{
"name": "MEDIA_DEFAULT_TIMEOUT_MS",
"format": "number",
"default": "120000",
"description": "Timeout for a whole upload in milliseconds when the call does not request one."
},
{
"name": "MEDIA_MIN_TIMEOUT_MS",
"format": "number",
"default": "5000",
"description": "Lowest timeout an upload may request, in milliseconds."
},
{
"name": "MEDIA_MAX_TIMEOUT_MS",
"format": "number",
"default": "600000",
"description": "Highest timeout an upload may request, in milliseconds."
}
]
},
{
"version": "0.1.1",
"transport": {
"type": "stdio"
},
"fileSha256": "a03708ee99d959ba85805da75626da672ff23b95265114241b639c8d69cba20d",
"identifier": "https://github.com/Role1776/mcp-x/releases/download/v0.1.1/mcp-x_0.1.1_darwin_amd64.mcpb",
"registryType": "mcpb",
"environmentVariables": [
{
"name": "X_API_KEY",
"isSecret": true,
"isRequired": true,
"description": "OAuth 1.0a consumer key. developer.x.com -> your project -> your app -> Keys and tokens."
},
{
"name": "X_API_KEY_SECRET",
"isSecret": true,
"isRequired": true,
"description": "OAuth 1.0a consumer secret, issued together with X_API_KEY."
},
{
"name": "X_ACCESS_TOKEN",
"isSecret": true,
"isRequired": true,
"description": "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."
},
{
"name": "X_ACCESS_TOKEN_SECRET",
"isSecret": true,
"isRequired": true,
"description": "User access token secret, issued together with X_ACCESS_TOKEN."
},
{
"name": "MEDIA_ROOT",
"format": "filepath",
"isRequired": true,
"description": "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.",
"placeholder": "/tmp/mcp-x-media"
},
{
"name": "MCP_TRANSPORT",
"choices": [
"stdio",
"http"
],
"default": "stdio",
"description": "stdio (client spawns the process) or http (streamable HTTP listener)."
},
{
"name": "MCP_NAME",
"default": "mcp-x",
"description": "Server name reported in the MCP initialize handshake."
},
{
"name": "MCP_PATH",
"default": "/mcp",
"description": "HTTP path the MCP endpoint is served on. Used only when MCP_TRANSPORT=http."
},
{
"name": "SERVER_PORT",
"default": "8080",
"description": "TCP port to listen on. Used only when MCP_TRANSPORT=http."
},
{
"name": "SERVER_READ_TIMEOUT",
"default": "60s",
"description": "HTTP read timeout as a Go duration. Used only when MCP_TRANSPORT=http."
},
{
"name": "SERVER_WRITE_TIMEOUT",
"default": "60s",
"description": "HTTP write timeout as a Go duration. Used only when MCP_TRANSPORT=http."
},
{
"name": "LOG_MODE",
"choices": [
"local",
"prod"
],
"default": "local",
"description": "local (text, debug) or prod (JSON, info). Logs go to stderr."
},
{
"name": "MAX_IDLE_CONNS_PER_HOST",
"format": "number",
"default": "100",
"description": "Idle connections the outbound HTTP client keeps per host."
},
{
"name": "X_DEBUG",
"format": "boolean",
"choices": [
"false",
"true"
],
"default": "false",
"description": "Log the raw requests sent to the X API. Verbose; the output can contain request details, so keep it off outside debugging."
},
{
"name": "POSTS_MAX_QUERIES",
"format": "number",
"default": "5",
"description": "Queries accepted in one x_posts_search or x_posts_count call."
},
{
"name": "POSTS_MAX_USERNAMES",
"format": "number",
"default": "5",
"description": "Usernames accepted in one x_posts_by_user call."
},
{
"name": "POSTS_MAX_IDS",
"format": "number",
"default": "100",
"description": "Post ids accepted in one x_posts_lookup call. The X API caps this at 100."
},
{
"name": "POSTS_DEFAULT_RESULTS",
"format": "number",
"default": "10",
"description": "Posts returned per query when the call does not ask for a count. Every post returned is billed."
},
{
"name": "POSTS_MAX_RESULTS",
"format": "number",
"default": "100",
"description": "Upper bound for posts per query. The X API caps this at 100."
},
{
"name": "POSTS_DEFAULT_DAYS",
"format": "number",
"default": "7",
"description": "How far back post searches look when the call does not say, in days."
},
{
"name": "POSTS_MAX_DAYS",
"format": "number",
"default": "7",
"description": "Furthest back a post search may look, in days. Recent search cannot exceed 7."
},
{
"name": "POSTS_DEFAULT_TIMEOUT_MS",
"format": "number",
"default": "15000",
"description": "Timeout for a posts call in milliseconds when the call does not request one."
},
{
"name": "POSTS_MIN_TIMEOUT_MS",
"format": "number",
"default": "2000",
"description": "Lowest timeout a posts call may request, in milliseconds."
},
{
"name": "POSTS_MAX_TIMEOUT_MS",
"format": "number",
"default": "60000",
"description": "Highest timeout a posts call may request, in milliseconds."
},
{
"name": "USERS_MAX_USERNAMES",
"format": "number",
"default": "100",
"description": "Usernames accepted in one x_users_lookup call. The X API caps this at 100."
},
{
"name": "USERS_MAX_IDS",
"format": "number",
"default": "100",
"description": "User ids accepted in one x_users_lookup call. The X API caps this at 100."
},
{
"name": "USERS_DEFAULT_RESULTS",
"format": "number",
"default": "100",
"description": "Users returned per page when the call does not ask for a count."
},
{
"name": "USERS_MAX_RESULTS",
"format": "number",
"default": "1000",
"description": "Upper bound for users per page."
},
{
"name": "USERS_DEFAULT_TIMEOUT_MS",
"format": "number",
"default": "15000",
"description": "Timeout for a users call in milliseconds when the call does not request one."
},
{
"name": "USERS_MIN_TIMEOUT_MS",
"format": "number",
"default": "2000",
"description": "Lowest timeout a users call may request, in milliseconds."
},
{
"name": "USERS_MAX_TIMEOUT_MS",
"format": "number",
"default": "60000",
"description": "Highest timeout a users call may request, in milliseconds."
},
{
"name": "LISTS_DEFAULT_RESULTS",
"format": "number",
"default": "25",
"description": "Items returned per list page when the call does not ask for a count."
},
{
"name": "LISTS_MAX_RESULTS",
"format": "number",
"default": "100",
"description": "Upper bound for items per list page. The X API caps this at 100."
},
{
"name": "LISTS_DEFAULT_TIMEOUT_MS",
"format": "number",
"default": "15000",
"description": "Timeout for a lists call in milliseconds when the call does not request one."
},
{
"name": "LISTS_MIN_TIMEOUT_MS",
"format": "number",
"default": "2000",
"description": "Lowest timeout a lists call may request, in milliseconds."
},
{
"name": "LISTS_MAX_TIMEOUT_MS",
"format": "number",
"default": "60000",
"description": "Highest timeout a lists call may request, in milliseconds."
},
{
"name": "MEDIA_CHUNK_BYTES",
"format": "number",
"default": "4194304",
"description": "Bytes per upload segment. The X APPEND endpoint caps a segment at 5 MB."
},
{
"name": "MEDIA_POLL_INTERVAL_MS",
"format": "number",
"default": "2000",
"description": "How often the upload status is polled while X transcodes a video, in milliseconds."
},
{
"name": "MEDIA_DEFAULT_TIMEOUT_MS",
"format": "number",
"default": "120000",
"description": "Timeout for a whole upload in milliseconds when the call does not request one."
},
{
"name": "MEDIA_MIN_TIMEOUT_MS",
"format": "number",
"default": "5000",
"description": "Lowest timeout an upload may request, in milliseconds."
},
{
"name": "MEDIA_MAX_TIMEOUT_MS",
"format": "number",
"default": "600000",
"description": "Highest timeout an upload may request, in milliseconds."
}
]
},
{
"version": "0.1.1",
"transport": {
"type": "stdio"
},
"fileSha256": "380cffa9ae22f79abd6fc9e02e527d5241039049d376daf350a6c65f80bd6cd3",
"identifier": "https://github.com/Role1776/mcp-x/releases/download/v0.1.1/mcp-x_0.1.1_darwin_arm64.mcpb",
"registryType": "mcpb",
"environmentVariables": [
{
"name": "X_API_KEY",
"isSecret": true,
"isRequired": true,
"description": "OAuth 1.0a consumer key. developer.x.com -> your project -> your app -> Keys and tokens."
},
{
"name": "X_API_KEY_SECRET",
"isSecret": true,
"isRequired": true,
"description": "OAuth 1.0a consumer secret, issued together with X_API_KEY."
},
{
"name": "X_ACCESS_TOKEN",
"isSecret": true,
"isRequired": true,
"description": "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."
},
{
"name": "X_ACCESS_TOKEN_SECRET",
"isSecret": true,
"isRequired": true,
"description": "User access token secret, issued together with X_ACCESS_TOKEN."
},
{
"name": "MEDIA_ROOT",
"format": "filepath",
"isRequired": true,
"description": "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.",
"placeholder": "/tmp/mcp-x-media"
},
{
"name": "MCP_TRANSPORT",
"choices": [
"stdio",
"http"
],
"default": "stdio",
"description": "stdio (client spawns the process) or http (streamable HTTP listener)."
},
{
"name": "MCP_NAME",
"default": "mcp-x",
"description": "Server name reported in the MCP initialize handshake."
},
{
"name": "MCP_PATH",
"default": "/mcp",
"description": "HTTP path the MCP endpoint is served on. Used only when MCP_TRANSPORT=http."
},
{
"name": "SERVER_PORT",
"default": "8080",
"description": "TCP port to listen on. Used only when MCP_TRANSPORT=http."
},
{
"name": "SERVER_READ_TIMEOUT",
"default": "60s",
"description": "HTTP read timeout as a Go duration. Used only when MCP_TRANSPORT=http."
},
{
"name": "SERVER_WRITE_TIMEOUT",
"default": "60s",
"description": "HTTP write timeout as a Go duration. Used only when MCP_TRANSPORT=http."
},
{
"name": "LOG_MODE",
"choices": [
"local",
"prod"
],
"default": "local",
"description": "local (text, debug) or prod (JSON, info). Logs go to stderr."
},
{
"name": "MAX_IDLE_CONNS_PER_HOST",
"format": "number",
"default": "100",
"description": "Idle connections the outbound HTTP client keeps per host."
},
{
"name": "X_DEBUG",
"format": "boolean",
"choices": [
"false",
"true"
],
"default": "false",
"description": "Log the raw requests sent to the X API. Verbose; the output can contain request details, so keep it off outside debugging."
},
{
"name": "POSTS_MAX_QUERIES",
"format": "number",
"default": "5",
"description": "Queries accepted in one x_posts_search or x_posts_count call."
},
{
"name": "POSTS_MAX_USERNAMES",
"format": "number",
"default": "5",
"description": "Usernames accepted in one x_posts_by_user call."
},
{
"name": "POSTS_MAX_IDS",
"format": "number",
"default": "100",
"description": "Post ids accepted in one x_posts_lookup call. The X API caps this at 100."
},
{
"name": "POSTS_DEFAULT_RESULTS",
"format": "number",
"default": "10",
"description": "Posts returned per query when the call does not ask for a count. Every post returned is billed."
},
{
"name": "POSTS_MAX_RESULTS",
"format": "number",
"default": "100",
"description": "Upper bound for posts per query. The X API caps this at 100."
},
{
"name": "POSTS_DEFAULT_DAYS",
"format": "number",
"default": "7",
"description": "How far back post searches look when the call does not say, in days."
},
{
"name": "POSTS_MAX_DAYS",
"format": "number",
"default": "7",
"description": "Furthest back a post search may look, in days. Recent search cannot exceed 7."
},
{
"name": "POSTS_DEFAULT_TIMEOUT_MS",
"format": "number",
"default": "15000",
"description": "Timeout for a posts call in milliseconds when the call does not request one."
},
{
"name": "POSTS_MIN_TIMEOUT_MS",
"format": "number",
"default": "2000",
"description": "Lowest timeout a posts call may request, in milliseconds."
},
{
"name": "POSTS_MAX_TIMEOUT_MS",
"format": "number",
"default": "60000",
"description": "Highest timeout a posts call may request, in milliseconds."
},
{
"name": "USERS_MAX_USERNAMES",
"format": "number",
"default": "100",
"description": "Usernames accepted in one x_users_lookup call. The X API caps this at 100."
},
{
"name": "USERS_MAX_IDS",
"format": "number",
"default": "100",
"description": "User ids accepted in one x_users_lookup call. The X API caps this at 100."
},
{
"name": "USERS_DEFAULT_RESULTS",
"format": "number",
"default": "100",
"description": "Users returned per page when the call does not ask for a count."
},
{
"name": "USERS_MAX_RESULTS",
"format": "number",
"default": "1000",
"description": "Upper bound for users per page."
},
{
"name": "USERS_DEFAULT_TIMEOUT_MS",
"format": "number",
"default": "15000",
"description": "Timeout for a users call in milliseconds when the call does not request one."
},
{
"name": "USERS_MIN_TIMEOUT_MS",
"format": "number",
"default": "2000",
"description": "Lowest timeout a users call may request, in milliseconds."
},
{
"name": "USERS_MAX_TIMEOUT_MS",
"format": "number",
"default": "60000",
"description": "Highest timeout a users call may request, in milliseconds."
},
{
"name": "LISTS_DEFAULT_RESULTS",
"format": "number",
"default": "25",
"description": "Items returned per list page when the call does not ask for a count."
},
{
"name": "LISTS_MAX_RESULTS",
"format": "number",
"default": "100",
"description": "Upper bound for items per list page. The X API caps this at 100."
},
{
"name": "LISTS_DEFAULT_TIMEOUT_MS",
"format": "number",
"default": "15000",
"description": "Timeout for a lists call in milliseconds when the call does not request one."
},
{
"name": "LISTS_MIN_TIMEOUT_MS",
"format": "number",
"default": "2000",
"description": "Lowest timeout a lists call may request, in milliseconds."
},
{
"name": "LISTS_MAX_TIMEOUT_MS",
"format": "number",
"default": "60000",
"description": "Highest timeout a lists call may request, in milliseconds."
},
{
"name": "MEDIA_CHUNK_BYTES",
"format": "number",
"default": "4194304",
"description": "Bytes per upload segment. The X APPEND endpoint caps a segment at 5 MB."
},
{
"name": "MEDIA_POLL_INTERVAL_MS",
"format": "number",
"default": "2000",
"description": "How often the upload status is polled while X transcodes a video, in milliseconds."
},
{
"name": "MEDIA_DEFAULT_TIMEOUT_MS",
"format": "number",
"default": "120000",
"description": "Timeout for a whole upload in milliseconds when the call does not request one."
},
{
"name": "MEDIA_MIN_TIMEOUT_MS",
"format": "number",
"default": "5000",
"description": "Lowest timeout an upload may request, in milliseconds."
},
{
"name": "MEDIA_MAX_TIMEOUT_MS",
"format": "number",
"default": "600000",
"description": "Highest timeout an upload may request, in milliseconds."
}
]
},
{
"version": "0.1.1",
"transport": {
"type": "stdio"
},
"fileSha256": "2aefd2aa0b66cad435836dd55cad2c2c0c16260a7757780b6cfc83f0f2de81f0",
"identifier": "https://github.com/Role1776/mcp-x/releases/download/v0.1.1/mcp-x_0.1.1_linux_amd64.mcpb",
"registryType": "mcpb",
"environmentVariables": [
{
"name": "X_API_KEY",
"isSecret": true,
"isRequired": true,
"description": "OAuth 1.0a consumer key. developer.x.com -> your project -> your app -> Keys and tokens."
},
{
"name": "X_API_KEY_SECRET",
"isSecret": true,
"isRequired": true,
"description": "OAuth 1.0a consumer secret, issued together with X_API_KEY."
},
{
"name": "X_ACCESS_TOKEN",
"isSecret": true,
"isRequired": true,
"description": "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."
},
{
"name": "X_ACCESS_TOKEN_SECRET",
"isSecret": true,
"isRequired": true,
"description": "User access token secret, issued together with X_ACCESS_TOKEN."
},
{
"name": "MEDIA_ROOT",
"format": "filepath",
"isRequired": true,
"description": "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.",
"placeholder": "/tmp/mcp-x-media"
},
{
"name": "MCP_TRANSPORT",
"choices": [
"stdio",
"http"
],
"default": "stdio",
"description": "stdio (client spawns the process) or http (streamable HTTP listener)."
},
{
"name": "MCP_NAME",
"default": "mcp-x",
"description": "Server name reported in the MCP initialize handshake."
},
{
"name": "MCP_PATH",
"default": "/mcp",
"description": "HTTP path the MCP endpoint is served on. Used only when MCP_TRANSPORT=http."
},
{
"name": "SERVER_PORT",
"default": "8080",
"description": "TCP port to listen on. Used only when MCP_TRANSPORT=http."
},
{
"name": "SERVER_READ_TIMEOUT",
"default": "60s",
"description": "HTTP read timeout as a Go duration. Used only when MCP_TRANSPORT=http."
},
{
"name": "SERVER_WRITE_TIMEOUT",
"default": "60s",
"description": "HTTP write timeout as a Go duration. Used only when MCP_TRANSPORT=http."
},
{
"name": "LOG_MODE",
"choices": [
"local",
"prod"
],
"default": "local",
"description": "local (text, debug) or prod (JSON, info). Logs go to stderr."
},
{
"name": "MAX_IDLE_CONNS_PER_HOST",
"format": "number",
"default": "100",
"description": "Idle connections the outbound HTTP client keeps per host."
},
{
"name": "X_DEBUG",
"format": "boolean",
"choices": [
"false",
"true"
],
"default": "false",
"description": "Log the raw requests sent to the X API. Verbose; the output can contain request details, so keep it off outside debugging."
},
{
"name": "POSTS_MAX_QUERIES",
"format": "number",
"default": "5",
"description": "Queries accepted in one x_posts_search or x_posts_count call."
},
{
"name": "POSTS_MAX_USERNAMES",
"format": "number",
"default": "5",
"description": "Usernames accepted in one x_posts_by_user call."
},
{
"name": "POSTS_MAX_IDS",
"format": "number",
"default": "100",
"description": "Post ids accepted in one x_posts_lookup call. The X API caps this at 100."
},
{
"name": "POSTS_DEFAULT_RESULTS",
"format": "number",
"default": "10",
"description": "Posts returned per query when the call does not ask for a count. Every post returned is billed."
},
{
"name": "POSTS_MAX_RESULTS",
"format": "number",
"default": "100",
"description": "Upper bound for posts per query. The X API caps this at 100."
},
{
"name": "POSTS_DEFAULT_DAYS",
"format": "number",
"default": "7",
"description": "How far back post searches look when the call does not say, in days."
},
{
"name": "POSTS_MAX_DAYS",
"format": "number",
"default": "7",
"description": "Furthest back a post search may look, in days. Recent search cannot exceed 7."
},
{
"name": "POSTS_DEFAULT_TIMEOUT_MS",
"format": "number",
"default": "15000",
"description": "Timeout for a posts call in milliseconds when the call does not request one."
},
{
"name": "POSTS_MIN_TIMEOUT_MS",
"format": "number",
"default": "2000",
"description": "Lowest timeout a posts call may request, in milliseconds."
},
{
"name": "POSTS_MAX_TIMEOUT_MS",
"format": "number",
"default": "60000",
"description": "Highest timeout a posts call may request, in milliseconds."
},
{
"name": "USERS_MAX_USERNAMES",
"format": "number",
"default": "100",
"description": "Usernames accepted in one x_users_lookup call. The X API caps this at 100."
},
{
"name": "USERS_MAX_IDS",
"format": "number",
"default": "100",
"description": "User ids accepted in one x_users_lookup call. The X API caps this at 100."
},
{
"name": "USERS_DEFAULT_RESULTS",
"format": "number",
"default": "100",
"description": "Users returned per page when the call does not ask for a count."
},
{
"name": "USERS_MAX_RESULTS",
"format": "number",
"default": "1000",
"description": "Upper bound for users per page."
},
{
"name": "USERS_DEFAULT_TIMEOUT_MS",
"format": "number",
"default": "15000",
"description": "Timeout for a users call in milliseconds when the call does not request one."
},
{
"name": "USERS_MIN_TIMEOUT_MS",
"format": "number",
"default": "2000",
"description": "Lowest timeout a users call may request, in milliseconds."
},
{
"name": "USERS_MAX_TIMEOUT_MS",
"format": "number",
"default": "60000",
"description": "Highest timeout a users call may request, in milliseconds."
},
{
"name": "LISTS_DEFAULT_RESULTS",
"format": "number",
"default": "25",
"description": "Items returned per list page when the call does not ask for a count."
},
{
"name": "LISTS_MAX_RESULTS",
"format": "number",
"default": "100",
"description": "Upper bound for items per list page. The X API caps this at 100."
},
{
"name": "LISTS_DEFAULT_TIMEOUT_MS",
"format": "number",
"default": "15000",
"description": "Timeout for a lists call in milliseconds when the call does not request one."
},
{
"name": "LISTS_MIN_TIMEOUT_MS",
"format": "number",
"default": "2000",
"description": "Lowest timeout a lists call may request, in milliseconds."
},
{
"name": "LISTS_MAX_TIMEOUT_MS",
"format": "number",
"default": "60000",
"description": "Highest timeout a lists call may request, in milliseconds."
},
{
"name": "MEDIA_CHUNK_BYTES",
"format": "number",
"default": "4194304",
"description": "Bytes per upload segment. The X APPEND endpoint caps a segment at 5 MB."
},
{
"name": "MEDIA_POLL_INTERVAL_MS",
"format": "number",
"default": "2000",
"description": "How often the upload status is polled while X transcodes a video, in milliseconds."
},
{
"name": "MEDIA_DEFAULT_TIMEOUT_MS",
"format": "number",
"default": "120000",
"description": "Timeout for a whole upload in milliseconds when the call does not request one."
},
{
"name": "MEDIA_MIN_TIMEOUT_MS",
"format": "number",
"default": "5000",
"description": "Lowest timeout an upload may request, in milliseconds."
},
{
"name": "MEDIA_MAX_TIMEOUT_MS",
"format": "number",
"default": "600000",
"description": "Highest timeout an upload may request, in milliseconds."
}
]
},
{
"version": "0.1.1",
"transport": {
"type": "stdio"
},
"fileSha256": "bea4f1da09ae5f6fc2faeda8bf5d62d1323628b5e1360d1fe9f450596d8ecedb",
"identifier": "https://github.com/Role1776/mcp-x/releases/download/v0.1.1/mcp-x_0.1.1_linux_arm64.mcpb",
"registryType": "mcpb",
"environmentVariables": [
{
"name": "X_API_KEY",
"isSecret": true,
"isRequired": true,
"description": "OAuth 1.0a consumer key. developer.x.com -> your project -> your app -> Keys and tokens."
},
{
"name": "X_API_KEY_SECRET",
"isSecret": true,
"isRequired": true,
"description": "OAuth 1.0a consumer secret, issued together with X_API_KEY."
},
{
"name": "X_ACCESS_TOKEN",
"isSecret": true,
"isRequired": true,
"description": "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."
},
{
"name": "X_ACCESS_TOKEN_SECRET",
"isSecret": true,
"isRequired": true,
"description": "User access token secret, issued together with X_ACCESS_TOKEN."
},
{
"name": "MEDIA_ROOT",
"format": "filepath",
"isRequired": true,
"description": "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.",
"placeholder": "/tmp/mcp-x-media"
},
{
"name": "MCP_TRANSPORT",
"choices": [
"stdio",
"http"
],
"default": "stdio",
"description": "stdio (client spawns the process) or http (streamable HTTP listener)."
},
{
"name": "MCP_NAME",
"default": "mcp-x",
"description": "Server name reported in the MCP initialize handshake."
},
{
"name": "MCP_PATH",
"default": "/mcp",
"description": "HTTP path the MCP endpoint is served on. Used only when MCP_TRANSPORT=http."
},
{
"name": "SERVER_PORT",
"default": "8080",
"description": "TCP port to listen on. Used only when MCP_TRANSPORT=http."
},
{
"name": "SERVER_READ_TIMEOUT",
"default": "60s",
"description": "HTTP read timeout as a Go duration. Used only when MCP_TRANSPORT=http."
},
{
"name": "SERVER_WRITE_TIMEOUT",
"default": "60s",
"description": "HTTP write timeout as a Go duration. Used only when MCP_TRANSPORT=http."
},
{
"name": "LOG_MODE",
"choices": [
"local",
"prod"
],
"default": "local",
"description": "local (text, debug) or prod (JSON, info). Logs go to stderr."
},
{
"name": "MAX_IDLE_CONNS_PER_HOST",
"format": "number",
"default": "100",
"description": "Idle connections the outbound HTTP client keeps per host."
},
{
"name": "X_DEBUG",
"format": "boolean",
"choices": [
"false",
"true"
],
"default": "false",
"description": "Log the raw requests sent to the X API. Verbose; the output can contain request details, so keep it off outside debugging."
},
{
"name": "POSTS_MAX_QUERIES",
"format": "number",
"default": "5",
"description": "Queries accepted in one x_posts_search or x_posts_count call."
},
{
"name": "POSTS_MAX_USERNAMES",
"format": "number",
"default": "5",
"description": "Usernames accepted in one x_posts_by_user call."
},
{
"name": "POSTS_MAX_IDS",
"format": "number",
"default": "100",
"description": "Post ids accepted in one x_posts_lookup call. The X API caps this at 100."
},
{
"name": "POSTS_DEFAULT_RESULTS",
"format": "number",
"default": "10",
"description": "Posts returned per query when the call does not ask for a count. Every post returned is billed."
},
{
"name": "POSTS_MAX_RESULTS",
"format": "number",
"default": "100",
"description": "Upper bound for posts per query. The X API caps this at 100."
},
{
"name": "POSTS_DEFAULT_DAYS",
"format": "number",
"default": "7",
"description": "How far back post searches look when the call does not say, in days."
},
{
"name": "POSTS_MAX_DAYS",
"format": "number",
"default": "7",
"description": "Furthest back a post search may look, in days. Recent search cannot exceed 7."
},
{
"name": "POSTS_DEFAULT_TIMEOUT_MS",
"format": "number",
"default": "15000",
"description": "Timeout for a posts call in milliseconds when the call does not request one."
},
{
"name": "POSTS_MIN_TIMEOUT_MS",
"format": "number",
"default": "2000",
"description": "Lowest timeout a posts call may request, in milliseconds."
},
{
"name": "POSTS_MAX_TIMEOUT_MS",
"format": "number",
"default": "60000",
"description": "Highest timeout a posts call may request, in milliseconds."
},
{
"name": "USERS_MAX_USERNAMES",
"format": "number",
"default": "100",
"description": "Usernames accepted in one x_users_lookup call. The X API caps this at 100."
},
{
"name": "USERS_MAX_IDS",
"format": "number",
"default": "100",
"description": "User ids accepted in one x_users_lookup call. The X API caps this at 100."
},
{
"name": "USERS_DEFAULT_RESULTS",
"format": "number",
"default": "100",
"description": "Users returned per page when the call does not ask for a count."
},
{
"name": "USERS_MAX_RESULTS",
"format": "number",
"default": "1000",
"description": "Upper bound for users per page."
},
{
"name": "USERS_DEFAULT_TIMEOUT_MS",
"format": "number",
"default": "15000",
"description": "Timeout for a users call in milliseconds when the call does not request one."
},
{
"name": "USERS_MIN_TIMEOUT_MS",
"format": "number",
"default": "2000",
"description": "Lowest timeout a users call may request, in milliseconds."
},
{
"name": "USERS_MAX_TIMEOUT_MS",
"format": "number",
"default": "60000",
"description": "Highest timeout a users call may request, in milliseconds."
},
{
"name": "LISTS_DEFAULT_RESULTS",
"format": "number",
"default": "25",
"description": "Items returned per list page when the call does not ask for a count."
},
{
"name": "LISTS_MAX_RESULTS",
"format": "number",
"default": "100",
"description": "Upper bound for items per list page. The X API caps this at 100."
},
{
"name": "LISTS_DEFAULT_TIMEOUT_MS",
"format": "number",
"default": "15000",
"description": "Timeout for a lists call in milliseconds when the call does not request one."
},
{
"name": "LISTS_MIN_TIMEOUT_MS",
"format": "number",
"default": "2000",
"description": "Lowest timeout a lists call may request, in milliseconds."
},
{
"name": "LISTS_MAX_TIMEOUT_MS",
"format": "number",
"default": "60000",
"description": "Highest timeout a lists call may request, in milliseconds."
},
{
"name": "MEDIA_CHUNK_BYTES",
"format": "number",
"default": "4194304",
"description": "Bytes per upload segment. The X APPEND endpoint caps a segment at 5 MB."
},
{
"name": "MEDIA_POLL_INTERVAL_MS",
"format": "number",
"default": "2000",
"description": "How often the upload status is polled while X transcodes a video, in milliseconds."
},
{
"name": "MEDIA_DEFAULT_TIMEOUT_MS",
"format": "number",
"default": "120000",
"description": "Timeout for a whole upload in milliseconds when the call does not request one."
},
{
"name": "MEDIA_MIN_TIMEOUT_MS",
"format": "number",
"default": "5000",
"description": "Lowest timeout an upload may request, in milliseconds."
},
{
"name": "MEDIA_MAX_TIMEOUT_MS",
"format": "number",
"default": "600000",
"description": "Highest timeout an upload may request, in milliseconds."
}
]
},
{
"version": "0.1.1",
"transport": {
"type": "stdio"
},
"fileSha256": "c16d8f6d6e0dbb294d5353b250269d78d9cef4c7e960613437d265c6824fe13f",
"identifier": "https://github.com/Role1776/mcp-x/releases/download/v0.1.1/mcp-x_0.1.1_windows_amd64.mcpb",
"registryType": "mcpb",
"environmentVariables": [
{
"name": "X_API_KEY",
"isSecret": true,
"isRequired": true,
"description": "OAuth 1.0a consumer key. developer.x.com -> your project -> your app -> Keys and tokens."
},
{
"name": "X_API_KEY_SECRET",
"isSecret": true,
"isRequired": true,
"description": "OAuth 1.0a consumer secret, issued together with X_API_KEY."
},
{
"name": "X_ACCESS_TOKEN",
"isSecret": true,
"isRequired": true,
"description": "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."
},
{
"name": "X_ACCESS_TOKEN_SECRET",
"isSecret": true,
"isRequired": true,
"description": "User access token secret, issued together with X_ACCESS_TOKEN."
},
{
"name": "MEDIA_ROOT",
"format": "filepath",
"isRequired": true,
"description": "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.",
"placeholder": "/tmp/mcp-x-media"
},
{
"name": "MCP_TRANSPORT",
"choices": [
"stdio",
"http"
],
"default": "stdio",
"description": "stdio (client spawns the process) or http (streamable HTTP listener)."
},
{
"name": "MCP_NAME",
"default": "mcp-x",
"description": "Server name reported in the MCP initialize handshake."
},
{
"name": "MCP_PATH",
"default": "/mcp",
"description": "HTTP path the MCP endpoint is served on. Used only when MCP_TRANSPORT=http."
},
{
"name": "SERVER_PORT",
"default": "8080",
"description": "TCP port to listen on. Used only when MCP_TRANSPORT=http."
},
{
"name": "SERVER_READ_TIMEOUT",
"default": "60s",
"description": "HTTP read timeout as a Go duration. Used only when MCP_TRANSPORT=http."
},
{
"name": "SERVER_WRITE_TIMEOUT",
"default": "60s",
"description": "HTTP write timeout as a Go duration. Used only when MCP_TRANSPORT=http."
},
{
"name": "LOG_MODE",
"choices": [
"local",
"prod"
],
"default": "local",
"description": "local (text, debug) or prod (JSON, info). Logs go to stderr."
},
{
"name": "MAX_IDLE_CONNS_PER_HOST",
"format": "number",
"default": "100",
"description": "Idle connections the outbound HTTP client keeps per host."
},
{
"name": "X_DEBUG",
"format": "boolean",
"choices": [
"false",
"true"
],
"default": "false",
"description": "Log the raw requests sent to the X API. Verbose; the output can contain request details, so keep it off outside debugging."
},
{
"name": "POSTS_MAX_QUERIES",
"format": "number",
"default": "5",
"description": "Queries accepted in one x_posts_search or x_posts_count call."
},
{
"name": "POSTS_MAX_USERNAMES",
"format": "number",
"default": "5",
"description": "Usernames accepted in one x_posts_by_user call."
},
{
"name": "POSTS_MAX_IDS",
"format": "number",
"default": "100",
"description": "Post ids accepted in one x_posts_lookup call. The X API caps this at 100."
},
{
"name": "POSTS_DEFAULT_RESULTS",
"format": "number",
"default": "10",
"description": "Posts returned per query when the call does not ask for a count. Every post returned is billed."
},
{
"name": "POSTS_MAX_RESULTS",
"format": "number",
"default": "100",
"description": "Upper bound for posts per query. The X API caps this at 100."
},
{
"name": "POSTS_DEFAULT_DAYS",
"format": "number",
"default": "7",
"description": "How far back post searches look when the call does not say, in days."
},
{
"name": "POSTS_MAX_DAYS",
"format": "number",
"default": "7",
"description": "Furthest back a post search may look, in days. Recent search cannot exceed 7."
},
{
"name": "POSTS_DEFAULT_TIMEOUT_MS",
"format": "number",
"default": "15000",
"description": "Timeout for a posts call in milliseconds when the call does not request one."
},
{
"name": "POSTS_MIN_TIMEOUT_MS",
"format": "number",
"default": "2000",
"description": "Lowest timeout a posts call may request, in milliseconds."
},
{
"name": "POSTS_MAX_TIMEOUT_MS",
"format": "number",
"default": "60000",
"description": "Highest timeout a posts call may request, in milliseconds."
},
{
"name": "USERS_MAX_USERNAMES",
"format": "number",
"default": "100",
"description": "Usernames accepted in one x_users_lookup call. The X API caps this at 100."
},
{
"name": "USERS_MAX_IDS",
"format": "number",
"default": "100",
"description": "User ids accepted in one x_users_lookup call. The X API caps this at 100."
},
{
"name": "USERS_DEFAULT_RESULTS",
"format": "number",
"default": "100",
"description": "Users returned per page when the call does not ask for a count."
},
{
"name": "USERS_MAX_RESULTS",
"format": "number",
"default": "1000",
"description": "Upper bound for users per page."
},
{
"name": "USERS_DEFAULT_TIMEOUT_MS",
"format": "number",
"default": "15000",
"description": "Timeout for a users call in milliseconds when the call does not request one."
},
{
"name": "USERS_MIN_TIMEOUT_MS",
"format": "number",
"default": "2000",
"description": "Lowest timeout a users call may request, in milliseconds."
},
{
"name": "USERS_MAX_TIMEOUT_MS",
"format": "number",
"default": "60000",
"description": "Highest timeout a users call may request, in milliseconds."
},
{
"name": "LISTS_DEFAULT_RESULTS",
"format": "number",
"default": "25",
"description": "Items returned per list page when the call does not ask for a count."
},
{
"name": "LISTS_MAX_RESULTS",
"format": "number",
"default": "100",
"description": "Upper bound for items per list page. The X API caps this at 100."
},
{
"name": "LISTS_DEFAULT_TIMEOUT_MS",
"format": "number",
"default": "15000",
"description": "Timeout for a lists call in milliseconds when the call does not request one."
},
{
"name": "LISTS_MIN_TIMEOUT_MS",
"format": "number",
"default": "2000",
"description": "Lowest timeout a lists call may request, in milliseconds."
},
{
"name": "LISTS_MAX_TIMEOUT_MS",
"format": "number",
"default": "60000",
"description": "Highest timeout a lists call may request, in milliseconds."
},
{
"name": "MEDIA_CHUNK_BYTES",
"format": "number",
"default": "4194304",
"description": "Bytes per upload segment. The X APPEND endpoint caps a segment at 5 MB."
},
{
"name": "MEDIA_POLL_INTERVAL_MS",
"format": "number",
"default": "2000",
"description": "How often the upload status is polled while X transcodes a video, in milliseconds."
},
{
"name": "MEDIA_DEFAULT_TIMEOUT_MS",
"format": "number",
"default": "120000",
"description": "Timeout for a whole upload in milliseconds when the call does not request one."
},
{
"name": "MEDIA_MIN_TIMEOUT_MS",
"format": "number",
"default": "5000",
"description": "Lowest timeout an upload may request, in milliseconds."
},
{
"name": "MEDIA_MAX_TIMEOUT_MS",
"format": "number",
"default": "600000",
"description": "Highest timeout an upload may request, in milliseconds."
}
]
},
{
"version": "0.1.1",
"transport": {
"type": "stdio"
},
"fileSha256": "d67810d11ea472c17c7936e75bcda52a11f5b519bce2cd324e162eddbe3cc53c",
"identifier": "https://github.com/Role1776/mcp-x/releases/download/v0.1.1/mcp-x_0.1.1_windows_arm64.mcpb",
"registryType": "mcpb",
"environmentVariables": [
{
"name": "X_API_KEY",
"isSecret": true,
"isRequired": true,
"description": "OAuth 1.0a consumer key. developer.x.com -> your project -> your app -> Keys and tokens."
},
{
"name": "X_API_KEY_SECRET",
"isSecret": true,
"isRequired": true,
"description": "OAuth 1.0a consumer secret, issued together with X_API_KEY."
},
{
"name": "X_ACCESS_TOKEN",
"isSecret": true,
"isRequired": true,
"description": "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."
},
{
"name": "X_ACCESS_TOKEN_SECRET",
"isSecret": true,
"isRequired": true,
"description": "User access token secret, issued together with X_ACCESS_TOKEN."
},
{
"name": "MEDIA_ROOT",
"format": "filepath",
"isRequired": true,
"description": "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.",
"placeholder": "/tmp/mcp-x-media"
},
{
"name": "MCP_TRANSPORT",
"choices": [
"stdio",
"http"
],
"default": "stdio",
"description": "stdio (client spawns the process) or http (streamable HTTP listener)."
},
{
"name": "MCP_NAME",
"default": "mcp-x",
"description": "Server name reported in the MCP initialize handshake."
},
{
"name": "MCP_PATH",
"default": "/mcp",
"description": "HTTP path the MCP endpoint is served on. Used only when MCP_TRANSPORT=http."
},
{
"name": "SERVER_PORT",
"default": "8080",
"description": "TCP port to listen on. Used only when MCP_TRANSPORT=http."
},
{
"name": "SERVER_READ_TIMEOUT",
"default": "60s",
"description": "HTTP read timeout as a Go duration. Used only when MCP_TRANSPORT=http."
},
{
"name": "SERVER_WRITE_TIMEOUT",
"default": "60s",
"description": "HTTP write timeout as a Go duration. Used only when MCP_TRANSPORT=http."
},
{
"name": "LOG_MODE",
"choices": [
"local",
"prod"
],
"default": "local",
"description": "local (text, debug) or prod (JSON, info). Logs go to stderr."
},
{
"name": "MAX_IDLE_CONNS_PER_HOST",
"format": "number",
"default": "100",
"description": "Idle connections the outbound HTTP client keeps per host."
},
{
"name": "X_DEBUG",
"format": "boolean",
"choices": [
"false",
"true"
],
"default": "false",
"description": "Log the raw requests sent to the X API. Verbose; the output can contain request details, so keep it off outside debugging."
},
{
"name": "POSTS_MAX_QUERIES",
"format": "number",
"default": "5",
"description": "Queries accepted in one x_posts_search or x_posts_count call."
},
{
"name": "POSTS_MAX_USERNAMES",
"format": "number",
"default": "5",
"description": "Usernames accepted in one x_posts_by_user call."
},
{
"name": "POSTS_MAX_IDS",
"format": "number",
"default": "100",
"description": "Post ids accepted in one x_posts_lookup call. The X API caps this at 100."
},
{
"name": "POSTS_DEFAULT_RESULTS",
"format": "number",
"default": "10",
"description": "Posts returned per query when the call does not ask for a count. Every post returned is billed."
},
{
"name": "POSTS_MAX_RESULTS",
"format": "number",
"default": "100",
"description": "Upper bound for posts per query. The X API caps this at 100."
},
{
"name": "POSTS_DEFAULT_DAYS",
"format": "number",
"default": "7",
"description": "How far back post searches look when the call does not say, in days."
},
{
"name": "POSTS_MAX_DAYS",
"format": "number",
"default": "7",
"description": "Furthest back a post search may look, in days. Recent search cannot exceed 7."
},
{
"name": "POSTS_DEFAULT_TIMEOUT_MS",
"format": "number",
"default": "15000",
"description": "Timeout for a posts call in milliseconds when the call does not request one."
},
{
"name": "POSTS_MIN_TIMEOUT_MS",
"format": "number",
"default": "2000",
"description": "Lowest timeout a posts call may request, in milliseconds."
},
{
"name": "POSTS_MAX_TIMEOUT_MS",
"format": "number",
"default": "60000",
"description": "Highest timeout a posts call may request, in milliseconds."
},
{
"name": "USERS_MAX_USERNAMES",
"format": "number",
"default": "100",
"description": "Usernames accepted in one x_users_lookup call. The X API caps this at 100."
},
{
"name": "USERS_MAX_IDS",
"format": "number",
"default": "100",
"description": "User ids accepted in one x_users_lookup call. The X API caps this at 100."
},
{
"name": "USERS_DEFAULT_RESULTS",
"format": "number",
"default": "100",
"description": "Users returned per page when the call does not ask for a count."
},
{
"name": "USERS_MAX_RESULTS",
"format": "number",
"default": "1000",
"description": "Upper bound for users per page."
},
{
"name": "USERS_DEFAULT_TIMEOUT_MS",
"format": "number",
"default": "15000",
"description": "Timeout for a users call in milliseconds when the call does not request one."
},
{
"name": "USERS_MIN_TIMEOUT_MS",
"format": "number",
"default": "2000",
"description": "Lowest timeout a users call may request, in milliseconds."
},
{
"name": "USERS_MAX_TIMEOUT_MS",
"format": "number",
"default": "60000",
"description": "Highest timeout a users call may request, in milliseconds."
},
{
"name": "LISTS_DEFAULT_RESULTS",
"format": "number",
"default": "25",
"description": "Items returned per list page when the call does not ask for a count."
},
{
"name": "LISTS_MAX_RESULTS",
"format": "number",
"default": "100",
"description": "Upper bound for items per list page. The X API caps this at 100."
},
{
"name": "LISTS_DEFAULT_TIMEOUT_MS",
"format": "number",
"default": "15000",
"description": "Timeout for a lists call in milliseconds when the call does not request one."
},
{
"name": "LISTS_MIN_TIMEOUT_MS",
"format": "number",
"default": "2000",
"description": "Lowest timeout a lists call may request, in milliseconds."
},
{
"name": "LISTS_MAX_TIMEOUT_MS",
"format": "number",
"default": "60000",
"description": "Highest timeout a lists call may request, in milliseconds."
},
{
"name": "MEDIA_CHUNK_BYTES",
"format": "number",
"default": "4194304",
"description": "Bytes per upload segment. The X APPEND endpoint caps a segment at 5 MB."
},
{
"name": "MEDIA_POLL_INTERVAL_MS",
"format": "number",
"default": "2000",
"description": "How often the upload status is polled while X transcodes a video, in milliseconds."
},
{
"name": "MEDIA_DEFAULT_TIMEOUT_MS",
"format": "number",
"default": "120000",
"description": "Timeout for a whole upload in milliseconds when the call does not request one."
},
{
"name": "MEDIA_MIN_TIMEOUT_MS",
"format": "number",
"default": "5000",
"description": "Lowest timeout an upload may request, in milliseconds."
},
{
"name": "MEDIA_MAX_TIMEOUT_MS",
"format": "number",
"default": "600000",
"description": "Highest timeout an upload may request, in milliseconds."
}
]
}
],
"repository": {
"url": "https://github.com/Role1776/mcp-x",
"source": "github"
},
"websiteUrl": "https://github.com/Role1776/mcp-x#readme",
"description": "Search, read and publish X posts and manage users, lists and media via the X API v2."
}