{"servers":[{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","name":"io.github.Role1776/mcp-x","description":"Search, read and publish X posts and manage users, lists and media via the X API v2.","title":"X (Twitter)","repository":{"url":"https://github.com/Role1776/mcp-x","source":"github"},"version":"0.1.0","websiteUrl":"https://github.com/Role1776/mcp-x#readme","packages":[{"registryType":"oci","identifier":"ghcr.io/role1776/mcp-x:0.1.0","transport":{"type":"stdio"},"environmentVariables":[{"description":"OAuth 1.0a consumer key. developer.x.com -> your project -> your app -> Keys and tokens.","isRequired":true,"isSecret":true,"name":"X_API_KEY"},{"description":"OAuth 1.0a consumer secret, issued together with X_API_KEY.","isRequired":true,"isSecret":true,"name":"X_API_KEY_SECRET"},{"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.","isRequired":true,"isSecret":true,"name":"X_ACCESS_TOKEN"},{"description":"User access token secret, issued together with X_ACCESS_TOKEN.","isRequired":true,"isSecret":true,"name":"X_ACCESS_TOKEN_SECRET"},{"description":"Absolute path to the only directory x_media_upload may read files from. Anything outside it is refused, symlinks included.","isRequired":true,"format":"filepath","placeholder":"/tmp/mcp-x-media","name":"MEDIA_ROOT"},{"description":"stdio (client spawns the process) or http (streamable HTTP listener).","default":"stdio","choices":["stdio","http"],"name":"MCP_TRANSPORT"},{"description":"Server name reported in the MCP initialize handshake.","default":"mcp-x","name":"MCP_NAME"},{"description":"HTTP path the MCP endpoint is served on. Used only when MCP_TRANSPORT=http.","default":"/mcp","name":"MCP_PATH"},{"description":"TCP port to listen on. Used only when MCP_TRANSPORT=http.","default":"8080","name":"SERVER_PORT"},{"description":"HTTP read timeout as a Go duration. Used only when MCP_TRANSPORT=http.","default":"60s","name":"SERVER_READ_TIMEOUT"},{"description":"HTTP write timeout as a Go duration. Used only when MCP_TRANSPORT=http.","default":"60s","name":"SERVER_WRITE_TIMEOUT"},{"description":"local (text, debug) or prod (JSON, info). Logs go to stderr.","default":"local","choices":["local","prod"],"name":"LOG_MODE"},{"description":"Idle connections the outbound HTTP client keeps per host.","format":"number","default":"100","name":"MAX_IDLE_CONNS_PER_HOST"},{"description":"Log the raw requests sent to the X API. Verbose; the output can contain request details, so keep it off outside debugging.","format":"boolean","default":"false","choices":["false","true"],"name":"X_DEBUG"},{"description":"Queries accepted in one x_posts_search or x_posts_count call.","format":"number","default":"5","name":"POSTS_MAX_QUERIES"},{"description":"Usernames accepted in one x_posts_by_user call.","format":"number","default":"5","name":"POSTS_MAX_USERNAMES"},{"description":"Post ids accepted in one x_posts_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"POSTS_MAX_IDS"},{"description":"Posts returned per query when the call does not ask for a count. Every post returned is billed.","format":"number","default":"10","name":"POSTS_DEFAULT_RESULTS"},{"description":"Upper bound for posts per query. The X API caps this at 100.","format":"number","default":"100","name":"POSTS_MAX_RESULTS"},{"description":"How far back post searches look when the call does not say, in days.","format":"number","default":"7","name":"POSTS_DEFAULT_DAYS"},{"description":"Furthest back a post search may look, in days. Recent search cannot exceed 7.","format":"number","default":"7","name":"POSTS_MAX_DAYS"},{"description":"Timeout for a posts call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"POSTS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a posts call may request, in milliseconds.","format":"number","default":"2000","name":"POSTS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a posts call may request, in milliseconds.","format":"number","default":"60000","name":"POSTS_MAX_TIMEOUT_MS"},{"description":"Usernames accepted in one x_users_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"USERS_MAX_USERNAMES"},{"description":"User ids accepted in one x_users_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"USERS_MAX_IDS"},{"description":"Users returned per page when the call does not ask for a count.","format":"number","default":"100","name":"USERS_DEFAULT_RESULTS"},{"description":"Upper bound for users per page.","format":"number","default":"1000","name":"USERS_MAX_RESULTS"},{"description":"Timeout for a users call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"USERS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a users call may request, in milliseconds.","format":"number","default":"2000","name":"USERS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a users call may request, in milliseconds.","format":"number","default":"60000","name":"USERS_MAX_TIMEOUT_MS"},{"description":"Items returned per list page when the call does not ask for a count.","format":"number","default":"25","name":"LISTS_DEFAULT_RESULTS"},{"description":"Upper bound for items per list page. The X API caps this at 100.","format":"number","default":"100","name":"LISTS_MAX_RESULTS"},{"description":"Timeout for a lists call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"LISTS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a lists call may request, in milliseconds.","format":"number","default":"2000","name":"LISTS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a lists call may request, in milliseconds.","format":"number","default":"60000","name":"LISTS_MAX_TIMEOUT_MS"},{"description":"Bytes per upload segment. The X APPEND endpoint caps a segment at 5 MB.","format":"number","default":"4194304","name":"MEDIA_CHUNK_BYTES"},{"description":"How often the upload status is polled while X transcodes a video, in milliseconds.","format":"number","default":"2000","name":"MEDIA_POLL_INTERVAL_MS"},{"description":"Timeout for a whole upload in milliseconds when the call does not request one.","format":"number","default":"120000","name":"MEDIA_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout an upload may request, in milliseconds.","format":"number","default":"5000","name":"MEDIA_MIN_TIMEOUT_MS"},{"description":"Highest timeout an upload may request, in milliseconds.","format":"number","default":"600000","name":"MEDIA_MAX_TIMEOUT_MS"}]},{"registryType":"mcpb","identifier":"https://github.com/Role1776/mcp-x/releases/download/v0.1.0/mcp-x_0.1.0_darwin_amd64.mcpb","version":"0.1.0","fileSha256":"7943a74e0a4051a19623357e1d736cfa94adf14e489c2501a33a43d36b06e9bf","transport":{"type":"stdio"},"environmentVariables":[{"description":"OAuth 1.0a consumer key. developer.x.com -> your project -> your app -> Keys and tokens.","isRequired":true,"isSecret":true,"name":"X_API_KEY"},{"description":"OAuth 1.0a consumer secret, issued together with X_API_KEY.","isRequired":true,"isSecret":true,"name":"X_API_KEY_SECRET"},{"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.","isRequired":true,"isSecret":true,"name":"X_ACCESS_TOKEN"},{"description":"User access token secret, issued together with X_ACCESS_TOKEN.","isRequired":true,"isSecret":true,"name":"X_ACCESS_TOKEN_SECRET"},{"description":"Absolute path to the only directory x_media_upload may read files from. Anything outside it is refused, symlinks included.","isRequired":true,"format":"filepath","placeholder":"/tmp/mcp-x-media","name":"MEDIA_ROOT"},{"description":"stdio (client spawns the process) or http (streamable HTTP listener).","default":"stdio","choices":["stdio","http"],"name":"MCP_TRANSPORT"},{"description":"Server name reported in the MCP initialize handshake.","default":"mcp-x","name":"MCP_NAME"},{"description":"HTTP path the MCP endpoint is served on. Used only when MCP_TRANSPORT=http.","default":"/mcp","name":"MCP_PATH"},{"description":"TCP port to listen on. Used only when MCP_TRANSPORT=http.","default":"8080","name":"SERVER_PORT"},{"description":"HTTP read timeout as a Go duration. Used only when MCP_TRANSPORT=http.","default":"60s","name":"SERVER_READ_TIMEOUT"},{"description":"HTTP write timeout as a Go duration. Used only when MCP_TRANSPORT=http.","default":"60s","name":"SERVER_WRITE_TIMEOUT"},{"description":"local (text, debug) or prod (JSON, info). Logs go to stderr.","default":"local","choices":["local","prod"],"name":"LOG_MODE"},{"description":"Idle connections the outbound HTTP client keeps per host.","format":"number","default":"100","name":"MAX_IDLE_CONNS_PER_HOST"},{"description":"Log the raw requests sent to the X API. Verbose; the output can contain request details, so keep it off outside debugging.","format":"boolean","default":"false","choices":["false","true"],"name":"X_DEBUG"},{"description":"Queries accepted in one x_posts_search or x_posts_count call.","format":"number","default":"5","name":"POSTS_MAX_QUERIES"},{"description":"Usernames accepted in one x_posts_by_user call.","format":"number","default":"5","name":"POSTS_MAX_USERNAMES"},{"description":"Post ids accepted in one x_posts_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"POSTS_MAX_IDS"},{"description":"Posts returned per query when the call does not ask for a count. Every post returned is billed.","format":"number","default":"10","name":"POSTS_DEFAULT_RESULTS"},{"description":"Upper bound for posts per query. The X API caps this at 100.","format":"number","default":"100","name":"POSTS_MAX_RESULTS"},{"description":"How far back post searches look when the call does not say, in days.","format":"number","default":"7","name":"POSTS_DEFAULT_DAYS"},{"description":"Furthest back a post search may look, in days. Recent search cannot exceed 7.","format":"number","default":"7","name":"POSTS_MAX_DAYS"},{"description":"Timeout for a posts call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"POSTS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a posts call may request, in milliseconds.","format":"number","default":"2000","name":"POSTS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a posts call may request, in milliseconds.","format":"number","default":"60000","name":"POSTS_MAX_TIMEOUT_MS"},{"description":"Usernames accepted in one x_users_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"USERS_MAX_USERNAMES"},{"description":"User ids accepted in one x_users_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"USERS_MAX_IDS"},{"description":"Users returned per page when the call does not ask for a count.","format":"number","default":"100","name":"USERS_DEFAULT_RESULTS"},{"description":"Upper bound for users per page.","format":"number","default":"1000","name":"USERS_MAX_RESULTS"},{"description":"Timeout for a users call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"USERS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a users call may request, in milliseconds.","format":"number","default":"2000","name":"USERS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a users call may request, in milliseconds.","format":"number","default":"60000","name":"USERS_MAX_TIMEOUT_MS"},{"description":"Items returned per list page when the call does not ask for a count.","format":"number","default":"25","name":"LISTS_DEFAULT_RESULTS"},{"description":"Upper bound for items per list page. The X API caps this at 100.","format":"number","default":"100","name":"LISTS_MAX_RESULTS"},{"description":"Timeout for a lists call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"LISTS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a lists call may request, in milliseconds.","format":"number","default":"2000","name":"LISTS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a lists call may request, in milliseconds.","format":"number","default":"60000","name":"LISTS_MAX_TIMEOUT_MS"},{"description":"Bytes per upload segment. The X APPEND endpoint caps a segment at 5 MB.","format":"number","default":"4194304","name":"MEDIA_CHUNK_BYTES"},{"description":"How often the upload status is polled while X transcodes a video, in milliseconds.","format":"number","default":"2000","name":"MEDIA_POLL_INTERVAL_MS"},{"description":"Timeout for a whole upload in milliseconds when the call does not request one.","format":"number","default":"120000","name":"MEDIA_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout an upload may request, in milliseconds.","format":"number","default":"5000","name":"MEDIA_MIN_TIMEOUT_MS"},{"description":"Highest timeout an upload may request, in milliseconds.","format":"number","default":"600000","name":"MEDIA_MAX_TIMEOUT_MS"}]},{"registryType":"mcpb","identifier":"https://github.com/Role1776/mcp-x/releases/download/v0.1.0/mcp-x_0.1.0_darwin_arm64.mcpb","version":"0.1.0","fileSha256":"12640eca099c35f7f66fdb6ed335015911b6c46b686b3f5b802044b9f915b49e","transport":{"type":"stdio"},"environmentVariables":[{"description":"OAuth 1.0a consumer key. developer.x.com -> your project -> your app -> Keys and tokens.","isRequired":true,"isSecret":true,"name":"X_API_KEY"},{"description":"OAuth 1.0a consumer secret, issued together with X_API_KEY.","isRequired":true,"isSecret":true,"name":"X_API_KEY_SECRET"},{"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.","isRequired":true,"isSecret":true,"name":"X_ACCESS_TOKEN"},{"description":"User access token secret, issued together with X_ACCESS_TOKEN.","isRequired":true,"isSecret":true,"name":"X_ACCESS_TOKEN_SECRET"},{"description":"Absolute path to the only directory x_media_upload may read files from. Anything outside it is refused, symlinks included.","isRequired":true,"format":"filepath","placeholder":"/tmp/mcp-x-media","name":"MEDIA_ROOT"},{"description":"stdio (client spawns the process) or http (streamable HTTP listener).","default":"stdio","choices":["stdio","http"],"name":"MCP_TRANSPORT"},{"description":"Server name reported in the MCP initialize handshake.","default":"mcp-x","name":"MCP_NAME"},{"description":"HTTP path the MCP endpoint is served on. Used only when MCP_TRANSPORT=http.","default":"/mcp","name":"MCP_PATH"},{"description":"TCP port to listen on. Used only when MCP_TRANSPORT=http.","default":"8080","name":"SERVER_PORT"},{"description":"HTTP read timeout as a Go duration. Used only when MCP_TRANSPORT=http.","default":"60s","name":"SERVER_READ_TIMEOUT"},{"description":"HTTP write timeout as a Go duration. Used only when MCP_TRANSPORT=http.","default":"60s","name":"SERVER_WRITE_TIMEOUT"},{"description":"local (text, debug) or prod (JSON, info). Logs go to stderr.","default":"local","choices":["local","prod"],"name":"LOG_MODE"},{"description":"Idle connections the outbound HTTP client keeps per host.","format":"number","default":"100","name":"MAX_IDLE_CONNS_PER_HOST"},{"description":"Log the raw requests sent to the X API. Verbose; the output can contain request details, so keep it off outside debugging.","format":"boolean","default":"false","choices":["false","true"],"name":"X_DEBUG"},{"description":"Queries accepted in one x_posts_search or x_posts_count call.","format":"number","default":"5","name":"POSTS_MAX_QUERIES"},{"description":"Usernames accepted in one x_posts_by_user call.","format":"number","default":"5","name":"POSTS_MAX_USERNAMES"},{"description":"Post ids accepted in one x_posts_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"POSTS_MAX_IDS"},{"description":"Posts returned per query when the call does not ask for a count. Every post returned is billed.","format":"number","default":"10","name":"POSTS_DEFAULT_RESULTS"},{"description":"Upper bound for posts per query. The X API caps this at 100.","format":"number","default":"100","name":"POSTS_MAX_RESULTS"},{"description":"How far back post searches look when the call does not say, in days.","format":"number","default":"7","name":"POSTS_DEFAULT_DAYS"},{"description":"Furthest back a post search may look, in days. Recent search cannot exceed 7.","format":"number","default":"7","name":"POSTS_MAX_DAYS"},{"description":"Timeout for a posts call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"POSTS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a posts call may request, in milliseconds.","format":"number","default":"2000","name":"POSTS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a posts call may request, in milliseconds.","format":"number","default":"60000","name":"POSTS_MAX_TIMEOUT_MS"},{"description":"Usernames accepted in one x_users_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"USERS_MAX_USERNAMES"},{"description":"User ids accepted in one x_users_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"USERS_MAX_IDS"},{"description":"Users returned per page when the call does not ask for a count.","format":"number","default":"100","name":"USERS_DEFAULT_RESULTS"},{"description":"Upper bound for users per page.","format":"number","default":"1000","name":"USERS_MAX_RESULTS"},{"description":"Timeout for a users call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"USERS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a users call may request, in milliseconds.","format":"number","default":"2000","name":"USERS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a users call may request, in milliseconds.","format":"number","default":"60000","name":"USERS_MAX_TIMEOUT_MS"},{"description":"Items returned per list page when the call does not ask for a count.","format":"number","default":"25","name":"LISTS_DEFAULT_RESULTS"},{"description":"Upper bound for items per list page. The X API caps this at 100.","format":"number","default":"100","name":"LISTS_MAX_RESULTS"},{"description":"Timeout for a lists call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"LISTS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a lists call may request, in milliseconds.","format":"number","default":"2000","name":"LISTS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a lists call may request, in milliseconds.","format":"number","default":"60000","name":"LISTS_MAX_TIMEOUT_MS"},{"description":"Bytes per upload segment. The X APPEND endpoint caps a segment at 5 MB.","format":"number","default":"4194304","name":"MEDIA_CHUNK_BYTES"},{"description":"How often the upload status is polled while X transcodes a video, in milliseconds.","format":"number","default":"2000","name":"MEDIA_POLL_INTERVAL_MS"},{"description":"Timeout for a whole upload in milliseconds when the call does not request one.","format":"number","default":"120000","name":"MEDIA_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout an upload may request, in milliseconds.","format":"number","default":"5000","name":"MEDIA_MIN_TIMEOUT_MS"},{"description":"Highest timeout an upload may request, in milliseconds.","format":"number","default":"600000","name":"MEDIA_MAX_TIMEOUT_MS"}]},{"registryType":"mcpb","identifier":"https://github.com/Role1776/mcp-x/releases/download/v0.1.0/mcp-x_0.1.0_linux_amd64.mcpb","version":"0.1.0","fileSha256":"bdd79c5a96b8aa7b57b648c58ef9fca21eb7f63171049ae5639aa8165ea519bc","transport":{"type":"stdio"},"environmentVariables":[{"description":"OAuth 1.0a consumer key. developer.x.com -> your project -> your app -> Keys and tokens.","isRequired":true,"isSecret":true,"name":"X_API_KEY"},{"description":"OAuth 1.0a consumer secret, issued together with X_API_KEY.","isRequired":true,"isSecret":true,"name":"X_API_KEY_SECRET"},{"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.","isRequired":true,"isSecret":true,"name":"X_ACCESS_TOKEN"},{"description":"User access token secret, issued together with X_ACCESS_TOKEN.","isRequired":true,"isSecret":true,"name":"X_ACCESS_TOKEN_SECRET"},{"description":"Absolute path to the only directory x_media_upload may read files from. Anything outside it is refused, symlinks included.","isRequired":true,"format":"filepath","placeholder":"/tmp/mcp-x-media","name":"MEDIA_ROOT"},{"description":"stdio (client spawns the process) or http (streamable HTTP listener).","default":"stdio","choices":["stdio","http"],"name":"MCP_TRANSPORT"},{"description":"Server name reported in the MCP initialize handshake.","default":"mcp-x","name":"MCP_NAME"},{"description":"HTTP path the MCP endpoint is served on. Used only when MCP_TRANSPORT=http.","default":"/mcp","name":"MCP_PATH"},{"description":"TCP port to listen on. Used only when MCP_TRANSPORT=http.","default":"8080","name":"SERVER_PORT"},{"description":"HTTP read timeout as a Go duration. Used only when MCP_TRANSPORT=http.","default":"60s","name":"SERVER_READ_TIMEOUT"},{"description":"HTTP write timeout as a Go duration. Used only when MCP_TRANSPORT=http.","default":"60s","name":"SERVER_WRITE_TIMEOUT"},{"description":"local (text, debug) or prod (JSON, info). Logs go to stderr.","default":"local","choices":["local","prod"],"name":"LOG_MODE"},{"description":"Idle connections the outbound HTTP client keeps per host.","format":"number","default":"100","name":"MAX_IDLE_CONNS_PER_HOST"},{"description":"Log the raw requests sent to the X API. Verbose; the output can contain request details, so keep it off outside debugging.","format":"boolean","default":"false","choices":["false","true"],"name":"X_DEBUG"},{"description":"Queries accepted in one x_posts_search or x_posts_count call.","format":"number","default":"5","name":"POSTS_MAX_QUERIES"},{"description":"Usernames accepted in one x_posts_by_user call.","format":"number","default":"5","name":"POSTS_MAX_USERNAMES"},{"description":"Post ids accepted in one x_posts_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"POSTS_MAX_IDS"},{"description":"Posts returned per query when the call does not ask for a count. Every post returned is billed.","format":"number","default":"10","name":"POSTS_DEFAULT_RESULTS"},{"description":"Upper bound for posts per query. The X API caps this at 100.","format":"number","default":"100","name":"POSTS_MAX_RESULTS"},{"description":"How far back post searches look when the call does not say, in days.","format":"number","default":"7","name":"POSTS_DEFAULT_DAYS"},{"description":"Furthest back a post search may look, in days. Recent search cannot exceed 7.","format":"number","default":"7","name":"POSTS_MAX_DAYS"},{"description":"Timeout for a posts call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"POSTS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a posts call may request, in milliseconds.","format":"number","default":"2000","name":"POSTS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a posts call may request, in milliseconds.","format":"number","default":"60000","name":"POSTS_MAX_TIMEOUT_MS"},{"description":"Usernames accepted in one x_users_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"USERS_MAX_USERNAMES"},{"description":"User ids accepted in one x_users_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"USERS_MAX_IDS"},{"description":"Users returned per page when the call does not ask for a count.","format":"number","default":"100","name":"USERS_DEFAULT_RESULTS"},{"description":"Upper bound for users per page.","format":"number","default":"1000","name":"USERS_MAX_RESULTS"},{"description":"Timeout for a users call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"USERS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a users call may request, in milliseconds.","format":"number","default":"2000","name":"USERS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a users call may request, in milliseconds.","format":"number","default":"60000","name":"USERS_MAX_TIMEOUT_MS"},{"description":"Items returned per list page when the call does not ask for a count.","format":"number","default":"25","name":"LISTS_DEFAULT_RESULTS"},{"description":"Upper bound for items per list page. The X API caps this at 100.","format":"number","default":"100","name":"LISTS_MAX_RESULTS"},{"description":"Timeout for a lists call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"LISTS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a lists call may request, in milliseconds.","format":"number","default":"2000","name":"LISTS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a lists call may request, in milliseconds.","format":"number","default":"60000","name":"LISTS_MAX_TIMEOUT_MS"},{"description":"Bytes per upload segment. The X APPEND endpoint caps a segment at 5 MB.","format":"number","default":"4194304","name":"MEDIA_CHUNK_BYTES"},{"description":"How often the upload status is polled while X transcodes a video, in milliseconds.","format":"number","default":"2000","name":"MEDIA_POLL_INTERVAL_MS"},{"description":"Timeout for a whole upload in milliseconds when the call does not request one.","format":"number","default":"120000","name":"MEDIA_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout an upload may request, in milliseconds.","format":"number","default":"5000","name":"MEDIA_MIN_TIMEOUT_MS"},{"description":"Highest timeout an upload may request, in milliseconds.","format":"number","default":"600000","name":"MEDIA_MAX_TIMEOUT_MS"}]},{"registryType":"mcpb","identifier":"https://github.com/Role1776/mcp-x/releases/download/v0.1.0/mcp-x_0.1.0_linux_arm64.mcpb","version":"0.1.0","fileSha256":"a50344ccaff4b1b6ce2b53ff2c50fd3c8ceea4aee92f8317811c622a1b2e52b1","transport":{"type":"stdio"},"environmentVariables":[{"description":"OAuth 1.0a consumer key. developer.x.com -> your project -> your app -> Keys and tokens.","isRequired":true,"isSecret":true,"name":"X_API_KEY"},{"description":"OAuth 1.0a consumer secret, issued together with X_API_KEY.","isRequired":true,"isSecret":true,"name":"X_API_KEY_SECRET"},{"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.","isRequired":true,"isSecret":true,"name":"X_ACCESS_TOKEN"},{"description":"User access token secret, issued together with X_ACCESS_TOKEN.","isRequired":true,"isSecret":true,"name":"X_ACCESS_TOKEN_SECRET"},{"description":"Absolute path to the only directory x_media_upload may read files from. Anything outside it is refused, symlinks included.","isRequired":true,"format":"filepath","placeholder":"/tmp/mcp-x-media","name":"MEDIA_ROOT"},{"description":"stdio (client spawns the process) or http (streamable HTTP listener).","default":"stdio","choices":["stdio","http"],"name":"MCP_TRANSPORT"},{"description":"Server name reported in the MCP initialize handshake.","default":"mcp-x","name":"MCP_NAME"},{"description":"HTTP path the MCP endpoint is served on. Used only when MCP_TRANSPORT=http.","default":"/mcp","name":"MCP_PATH"},{"description":"TCP port to listen on. Used only when MCP_TRANSPORT=http.","default":"8080","name":"SERVER_PORT"},{"description":"HTTP read timeout as a Go duration. Used only when MCP_TRANSPORT=http.","default":"60s","name":"SERVER_READ_TIMEOUT"},{"description":"HTTP write timeout as a Go duration. Used only when MCP_TRANSPORT=http.","default":"60s","name":"SERVER_WRITE_TIMEOUT"},{"description":"local (text, debug) or prod (JSON, info). Logs go to stderr.","default":"local","choices":["local","prod"],"name":"LOG_MODE"},{"description":"Idle connections the outbound HTTP client keeps per host.","format":"number","default":"100","name":"MAX_IDLE_CONNS_PER_HOST"},{"description":"Log the raw requests sent to the X API. Verbose; the output can contain request details, so keep it off outside debugging.","format":"boolean","default":"false","choices":["false","true"],"name":"X_DEBUG"},{"description":"Queries accepted in one x_posts_search or x_posts_count call.","format":"number","default":"5","name":"POSTS_MAX_QUERIES"},{"description":"Usernames accepted in one x_posts_by_user call.","format":"number","default":"5","name":"POSTS_MAX_USERNAMES"},{"description":"Post ids accepted in one x_posts_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"POSTS_MAX_IDS"},{"description":"Posts returned per query when the call does not ask for a count. Every post returned is billed.","format":"number","default":"10","name":"POSTS_DEFAULT_RESULTS"},{"description":"Upper bound for posts per query. The X API caps this at 100.","format":"number","default":"100","name":"POSTS_MAX_RESULTS"},{"description":"How far back post searches look when the call does not say, in days.","format":"number","default":"7","name":"POSTS_DEFAULT_DAYS"},{"description":"Furthest back a post search may look, in days. Recent search cannot exceed 7.","format":"number","default":"7","name":"POSTS_MAX_DAYS"},{"description":"Timeout for a posts call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"POSTS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a posts call may request, in milliseconds.","format":"number","default":"2000","name":"POSTS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a posts call may request, in milliseconds.","format":"number","default":"60000","name":"POSTS_MAX_TIMEOUT_MS"},{"description":"Usernames accepted in one x_users_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"USERS_MAX_USERNAMES"},{"description":"User ids accepted in one x_users_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"USERS_MAX_IDS"},{"description":"Users returned per page when the call does not ask for a count.","format":"number","default":"100","name":"USERS_DEFAULT_RESULTS"},{"description":"Upper bound for users per page.","format":"number","default":"1000","name":"USERS_MAX_RESULTS"},{"description":"Timeout for a users call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"USERS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a users call may request, in milliseconds.","format":"number","default":"2000","name":"USERS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a users call may request, in milliseconds.","format":"number","default":"60000","name":"USERS_MAX_TIMEOUT_MS"},{"description":"Items returned per list page when the call does not ask for a count.","format":"number","default":"25","name":"LISTS_DEFAULT_RESULTS"},{"description":"Upper bound for items per list page. The X API caps this at 100.","format":"number","default":"100","name":"LISTS_MAX_RESULTS"},{"description":"Timeout for a lists call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"LISTS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a lists call may request, in milliseconds.","format":"number","default":"2000","name":"LISTS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a lists call may request, in milliseconds.","format":"number","default":"60000","name":"LISTS_MAX_TIMEOUT_MS"},{"description":"Bytes per upload segment. The X APPEND endpoint caps a segment at 5 MB.","format":"number","default":"4194304","name":"MEDIA_CHUNK_BYTES"},{"description":"How often the upload status is polled while X transcodes a video, in milliseconds.","format":"number","default":"2000","name":"MEDIA_POLL_INTERVAL_MS"},{"description":"Timeout for a whole upload in milliseconds when the call does not request one.","format":"number","default":"120000","name":"MEDIA_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout an upload may request, in milliseconds.","format":"number","default":"5000","name":"MEDIA_MIN_TIMEOUT_MS"},{"description":"Highest timeout an upload may request, in milliseconds.","format":"number","default":"600000","name":"MEDIA_MAX_TIMEOUT_MS"}]},{"registryType":"mcpb","identifier":"https://github.com/Role1776/mcp-x/releases/download/v0.1.0/mcp-x_0.1.0_windows_amd64.mcpb","version":"0.1.0","fileSha256":"bcdd9149e4e3d72848bc6aae5084a2c57b9f87130dc6ca6f50c53358ce8c1c6f","transport":{"type":"stdio"},"environmentVariables":[{"description":"OAuth 1.0a consumer key. developer.x.com -> your project -> your app -> Keys and tokens.","isRequired":true,"isSecret":true,"name":"X_API_KEY"},{"description":"OAuth 1.0a consumer secret, issued together with X_API_KEY.","isRequired":true,"isSecret":true,"name":"X_API_KEY_SECRET"},{"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.","isRequired":true,"isSecret":true,"name":"X_ACCESS_TOKEN"},{"description":"User access token secret, issued together with X_ACCESS_TOKEN.","isRequired":true,"isSecret":true,"name":"X_ACCESS_TOKEN_SECRET"},{"description":"Absolute path to the only directory x_media_upload may read files from. Anything outside it is refused, symlinks included.","isRequired":true,"format":"filepath","placeholder":"/tmp/mcp-x-media","name":"MEDIA_ROOT"},{"description":"stdio (client spawns the process) or http (streamable HTTP listener).","default":"stdio","choices":["stdio","http"],"name":"MCP_TRANSPORT"},{"description":"Server name reported in the MCP initialize handshake.","default":"mcp-x","name":"MCP_NAME"},{"description":"HTTP path the MCP endpoint is served on. Used only when MCP_TRANSPORT=http.","default":"/mcp","name":"MCP_PATH"},{"description":"TCP port to listen on. Used only when MCP_TRANSPORT=http.","default":"8080","name":"SERVER_PORT"},{"description":"HTTP read timeout as a Go duration. Used only when MCP_TRANSPORT=http.","default":"60s","name":"SERVER_READ_TIMEOUT"},{"description":"HTTP write timeout as a Go duration. Used only when MCP_TRANSPORT=http.","default":"60s","name":"SERVER_WRITE_TIMEOUT"},{"description":"local (text, debug) or prod (JSON, info). Logs go to stderr.","default":"local","choices":["local","prod"],"name":"LOG_MODE"},{"description":"Idle connections the outbound HTTP client keeps per host.","format":"number","default":"100","name":"MAX_IDLE_CONNS_PER_HOST"},{"description":"Log the raw requests sent to the X API. Verbose; the output can contain request details, so keep it off outside debugging.","format":"boolean","default":"false","choices":["false","true"],"name":"X_DEBUG"},{"description":"Queries accepted in one x_posts_search or x_posts_count call.","format":"number","default":"5","name":"POSTS_MAX_QUERIES"},{"description":"Usernames accepted in one x_posts_by_user call.","format":"number","default":"5","name":"POSTS_MAX_USERNAMES"},{"description":"Post ids accepted in one x_posts_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"POSTS_MAX_IDS"},{"description":"Posts returned per query when the call does not ask for a count. Every post returned is billed.","format":"number","default":"10","name":"POSTS_DEFAULT_RESULTS"},{"description":"Upper bound for posts per query. The X API caps this at 100.","format":"number","default":"100","name":"POSTS_MAX_RESULTS"},{"description":"How far back post searches look when the call does not say, in days.","format":"number","default":"7","name":"POSTS_DEFAULT_DAYS"},{"description":"Furthest back a post search may look, in days. Recent search cannot exceed 7.","format":"number","default":"7","name":"POSTS_MAX_DAYS"},{"description":"Timeout for a posts call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"POSTS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a posts call may request, in milliseconds.","format":"number","default":"2000","name":"POSTS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a posts call may request, in milliseconds.","format":"number","default":"60000","name":"POSTS_MAX_TIMEOUT_MS"},{"description":"Usernames accepted in one x_users_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"USERS_MAX_USERNAMES"},{"description":"User ids accepted in one x_users_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"USERS_MAX_IDS"},{"description":"Users returned per page when the call does not ask for a count.","format":"number","default":"100","name":"USERS_DEFAULT_RESULTS"},{"description":"Upper bound for users per page.","format":"number","default":"1000","name":"USERS_MAX_RESULTS"},{"description":"Timeout for a users call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"USERS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a users call may request, in milliseconds.","format":"number","default":"2000","name":"USERS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a users call may request, in milliseconds.","format":"number","default":"60000","name":"USERS_MAX_TIMEOUT_MS"},{"description":"Items returned per list page when the call does not ask for a count.","format":"number","default":"25","name":"LISTS_DEFAULT_RESULTS"},{"description":"Upper bound for items per list page. The X API caps this at 100.","format":"number","default":"100","name":"LISTS_MAX_RESULTS"},{"description":"Timeout for a lists call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"LISTS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a lists call may request, in milliseconds.","format":"number","default":"2000","name":"LISTS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a lists call may request, in milliseconds.","format":"number","default":"60000","name":"LISTS_MAX_TIMEOUT_MS"},{"description":"Bytes per upload segment. The X APPEND endpoint caps a segment at 5 MB.","format":"number","default":"4194304","name":"MEDIA_CHUNK_BYTES"},{"description":"How often the upload status is polled while X transcodes a video, in milliseconds.","format":"number","default":"2000","name":"MEDIA_POLL_INTERVAL_MS"},{"description":"Timeout for a whole upload in milliseconds when the call does not request one.","format":"number","default":"120000","name":"MEDIA_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout an upload may request, in milliseconds.","format":"number","default":"5000","name":"MEDIA_MIN_TIMEOUT_MS"},{"description":"Highest timeout an upload may request, in milliseconds.","format":"number","default":"600000","name":"MEDIA_MAX_TIMEOUT_MS"}]},{"registryType":"mcpb","identifier":"https://github.com/Role1776/mcp-x/releases/download/v0.1.0/mcp-x_0.1.0_windows_arm64.mcpb","version":"0.1.0","fileSha256":"22d02a8dff48bece7befc51976f910a374ca3974520b8009857d3579dc9b25f7","transport":{"type":"stdio"},"environmentVariables":[{"description":"OAuth 1.0a consumer key. developer.x.com -> your project -> your app -> Keys and tokens.","isRequired":true,"isSecret":true,"name":"X_API_KEY"},{"description":"OAuth 1.0a consumer secret, issued together with X_API_KEY.","isRequired":true,"isSecret":true,"name":"X_API_KEY_SECRET"},{"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.","isRequired":true,"isSecret":true,"name":"X_ACCESS_TOKEN"},{"description":"User access token secret, issued together with X_ACCESS_TOKEN.","isRequired":true,"isSecret":true,"name":"X_ACCESS_TOKEN_SECRET"},{"description":"Absolute path to the only directory x_media_upload may read files from. Anything outside it is refused, symlinks included.","isRequired":true,"format":"filepath","placeholder":"/tmp/mcp-x-media","name":"MEDIA_ROOT"},{"description":"stdio (client spawns the process) or http (streamable HTTP listener).","default":"stdio","choices":["stdio","http"],"name":"MCP_TRANSPORT"},{"description":"Server name reported in the MCP initialize handshake.","default":"mcp-x","name":"MCP_NAME"},{"description":"HTTP path the MCP endpoint is served on. Used only when MCP_TRANSPORT=http.","default":"/mcp","name":"MCP_PATH"},{"description":"TCP port to listen on. Used only when MCP_TRANSPORT=http.","default":"8080","name":"SERVER_PORT"},{"description":"HTTP read timeout as a Go duration. Used only when MCP_TRANSPORT=http.","default":"60s","name":"SERVER_READ_TIMEOUT"},{"description":"HTTP write timeout as a Go duration. Used only when MCP_TRANSPORT=http.","default":"60s","name":"SERVER_WRITE_TIMEOUT"},{"description":"local (text, debug) or prod (JSON, info). Logs go to stderr.","default":"local","choices":["local","prod"],"name":"LOG_MODE"},{"description":"Idle connections the outbound HTTP client keeps per host.","format":"number","default":"100","name":"MAX_IDLE_CONNS_PER_HOST"},{"description":"Log the raw requests sent to the X API. Verbose; the output can contain request details, so keep it off outside debugging.","format":"boolean","default":"false","choices":["false","true"],"name":"X_DEBUG"},{"description":"Queries accepted in one x_posts_search or x_posts_count call.","format":"number","default":"5","name":"POSTS_MAX_QUERIES"},{"description":"Usernames accepted in one x_posts_by_user call.","format":"number","default":"5","name":"POSTS_MAX_USERNAMES"},{"description":"Post ids accepted in one x_posts_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"POSTS_MAX_IDS"},{"description":"Posts returned per query when the call does not ask for a count. Every post returned is billed.","format":"number","default":"10","name":"POSTS_DEFAULT_RESULTS"},{"description":"Upper bound for posts per query. The X API caps this at 100.","format":"number","default":"100","name":"POSTS_MAX_RESULTS"},{"description":"How far back post searches look when the call does not say, in days.","format":"number","default":"7","name":"POSTS_DEFAULT_DAYS"},{"description":"Furthest back a post search may look, in days. Recent search cannot exceed 7.","format":"number","default":"7","name":"POSTS_MAX_DAYS"},{"description":"Timeout for a posts call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"POSTS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a posts call may request, in milliseconds.","format":"number","default":"2000","name":"POSTS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a posts call may request, in milliseconds.","format":"number","default":"60000","name":"POSTS_MAX_TIMEOUT_MS"},{"description":"Usernames accepted in one x_users_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"USERS_MAX_USERNAMES"},{"description":"User ids accepted in one x_users_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"USERS_MAX_IDS"},{"description":"Users returned per page when the call does not ask for a count.","format":"number","default":"100","name":"USERS_DEFAULT_RESULTS"},{"description":"Upper bound for users per page.","format":"number","default":"1000","name":"USERS_MAX_RESULTS"},{"description":"Timeout for a users call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"USERS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a users call may request, in milliseconds.","format":"number","default":"2000","name":"USERS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a users call may request, in milliseconds.","format":"number","default":"60000","name":"USERS_MAX_TIMEOUT_MS"},{"description":"Items returned per list page when the call does not ask for a count.","format":"number","default":"25","name":"LISTS_DEFAULT_RESULTS"},{"description":"Upper bound for items per list page. The X API caps this at 100.","format":"number","default":"100","name":"LISTS_MAX_RESULTS"},{"description":"Timeout for a lists call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"LISTS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a lists call may request, in milliseconds.","format":"number","default":"2000","name":"LISTS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a lists call may request, in milliseconds.","format":"number","default":"60000","name":"LISTS_MAX_TIMEOUT_MS"},{"description":"Bytes per upload segment. The X APPEND endpoint caps a segment at 5 MB.","format":"number","default":"4194304","name":"MEDIA_CHUNK_BYTES"},{"description":"How often the upload status is polled while X transcodes a video, in milliseconds.","format":"number","default":"2000","name":"MEDIA_POLL_INTERVAL_MS"},{"description":"Timeout for a whole upload in milliseconds when the call does not request one.","format":"number","default":"120000","name":"MEDIA_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout an upload may request, in milliseconds.","format":"number","default":"5000","name":"MEDIA_MIN_TIMEOUT_MS"},{"description":"Highest timeout an upload may request, in milliseconds.","format":"number","default":"600000","name":"MEDIA_MAX_TIMEOUT_MS"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-09-09T11:42:38.864448Z","publishedAt":"2026-09-09T11:42:38.864448Z","updatedAt":"2026-09-09T11:42:38.864448Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","name":"io.github.Role1776/mcp-x","description":"Search, read and publish X posts and manage users, lists and media via the X API v2.","title":"X (Twitter)","repository":{"url":"https://github.com/Role1776/mcp-x","source":"github"},"version":"0.1.1","websiteUrl":"https://github.com/Role1776/mcp-x#readme","packages":[{"registryType":"oci","identifier":"ghcr.io/role1776/mcp-x:0.1.1","transport":{"type":"stdio"},"environmentVariables":[{"description":"OAuth 1.0a consumer key. developer.x.com -> your project -> your app -> Keys and tokens.","isRequired":true,"isSecret":true,"name":"X_API_KEY"},{"description":"OAuth 1.0a consumer secret, issued together with X_API_KEY.","isRequired":true,"isSecret":true,"name":"X_API_KEY_SECRET"},{"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.","isRequired":true,"isSecret":true,"name":"X_ACCESS_TOKEN"},{"description":"User access token secret, issued together with X_ACCESS_TOKEN.","isRequired":true,"isSecret":true,"name":"X_ACCESS_TOKEN_SECRET"},{"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.","isRequired":true,"format":"filepath","placeholder":"/tmp/mcp-x-media","name":"MEDIA_ROOT"},{"description":"stdio (client spawns the process) or http (streamable HTTP listener).","default":"stdio","choices":["stdio","http"],"name":"MCP_TRANSPORT"},{"description":"Server name reported in the MCP initialize handshake.","default":"mcp-x","name":"MCP_NAME"},{"description":"HTTP path the MCP endpoint is served on. Used only when MCP_TRANSPORT=http.","default":"/mcp","name":"MCP_PATH"},{"description":"TCP port to listen on. Used only when MCP_TRANSPORT=http.","default":"8080","name":"SERVER_PORT"},{"description":"HTTP read timeout as a Go duration. Used only when MCP_TRANSPORT=http.","default":"60s","name":"SERVER_READ_TIMEOUT"},{"description":"HTTP write timeout as a Go duration. Used only when MCP_TRANSPORT=http.","default":"60s","name":"SERVER_WRITE_TIMEOUT"},{"description":"local (text, debug) or prod (JSON, info). Logs go to stderr.","default":"local","choices":["local","prod"],"name":"LOG_MODE"},{"description":"Idle connections the outbound HTTP client keeps per host.","format":"number","default":"100","name":"MAX_IDLE_CONNS_PER_HOST"},{"description":"Log the raw requests sent to the X API. Verbose; the output can contain request details, so keep it off outside debugging.","format":"boolean","default":"false","choices":["false","true"],"name":"X_DEBUG"},{"description":"Queries accepted in one x_posts_search or x_posts_count call.","format":"number","default":"5","name":"POSTS_MAX_QUERIES"},{"description":"Usernames accepted in one x_posts_by_user call.","format":"number","default":"5","name":"POSTS_MAX_USERNAMES"},{"description":"Post ids accepted in one x_posts_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"POSTS_MAX_IDS"},{"description":"Posts returned per query when the call does not ask for a count. Every post returned is billed.","format":"number","default":"10","name":"POSTS_DEFAULT_RESULTS"},{"description":"Upper bound for posts per query. The X API caps this at 100.","format":"number","default":"100","name":"POSTS_MAX_RESULTS"},{"description":"How far back post searches look when the call does not say, in days.","format":"number","default":"7","name":"POSTS_DEFAULT_DAYS"},{"description":"Furthest back a post search may look, in days. Recent search cannot exceed 7.","format":"number","default":"7","name":"POSTS_MAX_DAYS"},{"description":"Timeout for a posts call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"POSTS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a posts call may request, in milliseconds.","format":"number","default":"2000","name":"POSTS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a posts call may request, in milliseconds.","format":"number","default":"60000","name":"POSTS_MAX_TIMEOUT_MS"},{"description":"Usernames accepted in one x_users_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"USERS_MAX_USERNAMES"},{"description":"User ids accepted in one x_users_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"USERS_MAX_IDS"},{"description":"Users returned per page when the call does not ask for a count.","format":"number","default":"100","name":"USERS_DEFAULT_RESULTS"},{"description":"Upper bound for users per page.","format":"number","default":"1000","name":"USERS_MAX_RESULTS"},{"description":"Timeout for a users call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"USERS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a users call may request, in milliseconds.","format":"number","default":"2000","name":"USERS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a users call may request, in milliseconds.","format":"number","default":"60000","name":"USERS_MAX_TIMEOUT_MS"},{"description":"Items returned per list page when the call does not ask for a count.","format":"number","default":"25","name":"LISTS_DEFAULT_RESULTS"},{"description":"Upper bound for items per list page. The X API caps this at 100.","format":"number","default":"100","name":"LISTS_MAX_RESULTS"},{"description":"Timeout for a lists call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"LISTS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a lists call may request, in milliseconds.","format":"number","default":"2000","name":"LISTS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a lists call may request, in milliseconds.","format":"number","default":"60000","name":"LISTS_MAX_TIMEOUT_MS"},{"description":"Bytes per upload segment. The X APPEND endpoint caps a segment at 5 MB.","format":"number","default":"4194304","name":"MEDIA_CHUNK_BYTES"},{"description":"How often the upload status is polled while X transcodes a video, in milliseconds.","format":"number","default":"2000","name":"MEDIA_POLL_INTERVAL_MS"},{"description":"Timeout for a whole upload in milliseconds when the call does not request one.","format":"number","default":"120000","name":"MEDIA_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout an upload may request, in milliseconds.","format":"number","default":"5000","name":"MEDIA_MIN_TIMEOUT_MS"},{"description":"Highest timeout an upload may request, in milliseconds.","format":"number","default":"600000","name":"MEDIA_MAX_TIMEOUT_MS"}]},{"registryType":"mcpb","identifier":"https://github.com/Role1776/mcp-x/releases/download/v0.1.1/mcp-x_0.1.1_darwin_amd64.mcpb","version":"0.1.1","fileSha256":"a03708ee99d959ba85805da75626da672ff23b95265114241b639c8d69cba20d","transport":{"type":"stdio"},"environmentVariables":[{"description":"OAuth 1.0a consumer key. developer.x.com -> your project -> your app -> Keys and tokens.","isRequired":true,"isSecret":true,"name":"X_API_KEY"},{"description":"OAuth 1.0a consumer secret, issued together with X_API_KEY.","isRequired":true,"isSecret":true,"name":"X_API_KEY_SECRET"},{"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.","isRequired":true,"isSecret":true,"name":"X_ACCESS_TOKEN"},{"description":"User access token secret, issued together with X_ACCESS_TOKEN.","isRequired":true,"isSecret":true,"name":"X_ACCESS_TOKEN_SECRET"},{"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.","isRequired":true,"format":"filepath","placeholder":"/tmp/mcp-x-media","name":"MEDIA_ROOT"},{"description":"stdio (client spawns the process) or http (streamable HTTP listener).","default":"stdio","choices":["stdio","http"],"name":"MCP_TRANSPORT"},{"description":"Server name reported in the MCP initialize handshake.","default":"mcp-x","name":"MCP_NAME"},{"description":"HTTP path the MCP endpoint is served on. Used only when MCP_TRANSPORT=http.","default":"/mcp","name":"MCP_PATH"},{"description":"TCP port to listen on. Used only when MCP_TRANSPORT=http.","default":"8080","name":"SERVER_PORT"},{"description":"HTTP read timeout as a Go duration. Used only when MCP_TRANSPORT=http.","default":"60s","name":"SERVER_READ_TIMEOUT"},{"description":"HTTP write timeout as a Go duration. Used only when MCP_TRANSPORT=http.","default":"60s","name":"SERVER_WRITE_TIMEOUT"},{"description":"local (text, debug) or prod (JSON, info). Logs go to stderr.","default":"local","choices":["local","prod"],"name":"LOG_MODE"},{"description":"Idle connections the outbound HTTP client keeps per host.","format":"number","default":"100","name":"MAX_IDLE_CONNS_PER_HOST"},{"description":"Log the raw requests sent to the X API. Verbose; the output can contain request details, so keep it off outside debugging.","format":"boolean","default":"false","choices":["false","true"],"name":"X_DEBUG"},{"description":"Queries accepted in one x_posts_search or x_posts_count call.","format":"number","default":"5","name":"POSTS_MAX_QUERIES"},{"description":"Usernames accepted in one x_posts_by_user call.","format":"number","default":"5","name":"POSTS_MAX_USERNAMES"},{"description":"Post ids accepted in one x_posts_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"POSTS_MAX_IDS"},{"description":"Posts returned per query when the call does not ask for a count. Every post returned is billed.","format":"number","default":"10","name":"POSTS_DEFAULT_RESULTS"},{"description":"Upper bound for posts per query. The X API caps this at 100.","format":"number","default":"100","name":"POSTS_MAX_RESULTS"},{"description":"How far back post searches look when the call does not say, in days.","format":"number","default":"7","name":"POSTS_DEFAULT_DAYS"},{"description":"Furthest back a post search may look, in days. Recent search cannot exceed 7.","format":"number","default":"7","name":"POSTS_MAX_DAYS"},{"description":"Timeout for a posts call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"POSTS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a posts call may request, in milliseconds.","format":"number","default":"2000","name":"POSTS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a posts call may request, in milliseconds.","format":"number","default":"60000","name":"POSTS_MAX_TIMEOUT_MS"},{"description":"Usernames accepted in one x_users_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"USERS_MAX_USERNAMES"},{"description":"User ids accepted in one x_users_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"USERS_MAX_IDS"},{"description":"Users returned per page when the call does not ask for a count.","format":"number","default":"100","name":"USERS_DEFAULT_RESULTS"},{"description":"Upper bound for users per page.","format":"number","default":"1000","name":"USERS_MAX_RESULTS"},{"description":"Timeout for a users call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"USERS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a users call may request, in milliseconds.","format":"number","default":"2000","name":"USERS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a users call may request, in milliseconds.","format":"number","default":"60000","name":"USERS_MAX_TIMEOUT_MS"},{"description":"Items returned per list page when the call does not ask for a count.","format":"number","default":"25","name":"LISTS_DEFAULT_RESULTS"},{"description":"Upper bound for items per list page. The X API caps this at 100.","format":"number","default":"100","name":"LISTS_MAX_RESULTS"},{"description":"Timeout for a lists call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"LISTS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a lists call may request, in milliseconds.","format":"number","default":"2000","name":"LISTS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a lists call may request, in milliseconds.","format":"number","default":"60000","name":"LISTS_MAX_TIMEOUT_MS"},{"description":"Bytes per upload segment. The X APPEND endpoint caps a segment at 5 MB.","format":"number","default":"4194304","name":"MEDIA_CHUNK_BYTES"},{"description":"How often the upload status is polled while X transcodes a video, in milliseconds.","format":"number","default":"2000","name":"MEDIA_POLL_INTERVAL_MS"},{"description":"Timeout for a whole upload in milliseconds when the call does not request one.","format":"number","default":"120000","name":"MEDIA_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout an upload may request, in milliseconds.","format":"number","default":"5000","name":"MEDIA_MIN_TIMEOUT_MS"},{"description":"Highest timeout an upload may request, in milliseconds.","format":"number","default":"600000","name":"MEDIA_MAX_TIMEOUT_MS"}]},{"registryType":"mcpb","identifier":"https://github.com/Role1776/mcp-x/releases/download/v0.1.1/mcp-x_0.1.1_darwin_arm64.mcpb","version":"0.1.1","fileSha256":"380cffa9ae22f79abd6fc9e02e527d5241039049d376daf350a6c65f80bd6cd3","transport":{"type":"stdio"},"environmentVariables":[{"description":"OAuth 1.0a consumer key. developer.x.com -> your project -> your app -> Keys and tokens.","isRequired":true,"isSecret":true,"name":"X_API_KEY"},{"description":"OAuth 1.0a consumer secret, issued together with X_API_KEY.","isRequired":true,"isSecret":true,"name":"X_API_KEY_SECRET"},{"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.","isRequired":true,"isSecret":true,"name":"X_ACCESS_TOKEN"},{"description":"User access token secret, issued together with X_ACCESS_TOKEN.","isRequired":true,"isSecret":true,"name":"X_ACCESS_TOKEN_SECRET"},{"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.","isRequired":true,"format":"filepath","placeholder":"/tmp/mcp-x-media","name":"MEDIA_ROOT"},{"description":"stdio (client spawns the process) or http (streamable HTTP listener).","default":"stdio","choices":["stdio","http"],"name":"MCP_TRANSPORT"},{"description":"Server name reported in the MCP initialize handshake.","default":"mcp-x","name":"MCP_NAME"},{"description":"HTTP path the MCP endpoint is served on. Used only when MCP_TRANSPORT=http.","default":"/mcp","name":"MCP_PATH"},{"description":"TCP port to listen on. Used only when MCP_TRANSPORT=http.","default":"8080","name":"SERVER_PORT"},{"description":"HTTP read timeout as a Go duration. Used only when MCP_TRANSPORT=http.","default":"60s","name":"SERVER_READ_TIMEOUT"},{"description":"HTTP write timeout as a Go duration. Used only when MCP_TRANSPORT=http.","default":"60s","name":"SERVER_WRITE_TIMEOUT"},{"description":"local (text, debug) or prod (JSON, info). Logs go to stderr.","default":"local","choices":["local","prod"],"name":"LOG_MODE"},{"description":"Idle connections the outbound HTTP client keeps per host.","format":"number","default":"100","name":"MAX_IDLE_CONNS_PER_HOST"},{"description":"Log the raw requests sent to the X API. Verbose; the output can contain request details, so keep it off outside debugging.","format":"boolean","default":"false","choices":["false","true"],"name":"X_DEBUG"},{"description":"Queries accepted in one x_posts_search or x_posts_count call.","format":"number","default":"5","name":"POSTS_MAX_QUERIES"},{"description":"Usernames accepted in one x_posts_by_user call.","format":"number","default":"5","name":"POSTS_MAX_USERNAMES"},{"description":"Post ids accepted in one x_posts_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"POSTS_MAX_IDS"},{"description":"Posts returned per query when the call does not ask for a count. Every post returned is billed.","format":"number","default":"10","name":"POSTS_DEFAULT_RESULTS"},{"description":"Upper bound for posts per query. The X API caps this at 100.","format":"number","default":"100","name":"POSTS_MAX_RESULTS"},{"description":"How far back post searches look when the call does not say, in days.","format":"number","default":"7","name":"POSTS_DEFAULT_DAYS"},{"description":"Furthest back a post search may look, in days. Recent search cannot exceed 7.","format":"number","default":"7","name":"POSTS_MAX_DAYS"},{"description":"Timeout for a posts call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"POSTS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a posts call may request, in milliseconds.","format":"number","default":"2000","name":"POSTS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a posts call may request, in milliseconds.","format":"number","default":"60000","name":"POSTS_MAX_TIMEOUT_MS"},{"description":"Usernames accepted in one x_users_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"USERS_MAX_USERNAMES"},{"description":"User ids accepted in one x_users_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"USERS_MAX_IDS"},{"description":"Users returned per page when the call does not ask for a count.","format":"number","default":"100","name":"USERS_DEFAULT_RESULTS"},{"description":"Upper bound for users per page.","format":"number","default":"1000","name":"USERS_MAX_RESULTS"},{"description":"Timeout for a users call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"USERS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a users call may request, in milliseconds.","format":"number","default":"2000","name":"USERS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a users call may request, in milliseconds.","format":"number","default":"60000","name":"USERS_MAX_TIMEOUT_MS"},{"description":"Items returned per list page when the call does not ask for a count.","format":"number","default":"25","name":"LISTS_DEFAULT_RESULTS"},{"description":"Upper bound for items per list page. The X API caps this at 100.","format":"number","default":"100","name":"LISTS_MAX_RESULTS"},{"description":"Timeout for a lists call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"LISTS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a lists call may request, in milliseconds.","format":"number","default":"2000","name":"LISTS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a lists call may request, in milliseconds.","format":"number","default":"60000","name":"LISTS_MAX_TIMEOUT_MS"},{"description":"Bytes per upload segment. The X APPEND endpoint caps a segment at 5 MB.","format":"number","default":"4194304","name":"MEDIA_CHUNK_BYTES"},{"description":"How often the upload status is polled while X transcodes a video, in milliseconds.","format":"number","default":"2000","name":"MEDIA_POLL_INTERVAL_MS"},{"description":"Timeout for a whole upload in milliseconds when the call does not request one.","format":"number","default":"120000","name":"MEDIA_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout an upload may request, in milliseconds.","format":"number","default":"5000","name":"MEDIA_MIN_TIMEOUT_MS"},{"description":"Highest timeout an upload may request, in milliseconds.","format":"number","default":"600000","name":"MEDIA_MAX_TIMEOUT_MS"}]},{"registryType":"mcpb","identifier":"https://github.com/Role1776/mcp-x/releases/download/v0.1.1/mcp-x_0.1.1_linux_amd64.mcpb","version":"0.1.1","fileSha256":"2aefd2aa0b66cad435836dd55cad2c2c0c16260a7757780b6cfc83f0f2de81f0","transport":{"type":"stdio"},"environmentVariables":[{"description":"OAuth 1.0a consumer key. developer.x.com -> your project -> your app -> Keys and tokens.","isRequired":true,"isSecret":true,"name":"X_API_KEY"},{"description":"OAuth 1.0a consumer secret, issued together with X_API_KEY.","isRequired":true,"isSecret":true,"name":"X_API_KEY_SECRET"},{"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.","isRequired":true,"isSecret":true,"name":"X_ACCESS_TOKEN"},{"description":"User access token secret, issued together with X_ACCESS_TOKEN.","isRequired":true,"isSecret":true,"name":"X_ACCESS_TOKEN_SECRET"},{"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.","isRequired":true,"format":"filepath","placeholder":"/tmp/mcp-x-media","name":"MEDIA_ROOT"},{"description":"stdio (client spawns the process) or http (streamable HTTP listener).","default":"stdio","choices":["stdio","http"],"name":"MCP_TRANSPORT"},{"description":"Server name reported in the MCP initialize handshake.","default":"mcp-x","name":"MCP_NAME"},{"description":"HTTP path the MCP endpoint is served on. Used only when MCP_TRANSPORT=http.","default":"/mcp","name":"MCP_PATH"},{"description":"TCP port to listen on. Used only when MCP_TRANSPORT=http.","default":"8080","name":"SERVER_PORT"},{"description":"HTTP read timeout as a Go duration. Used only when MCP_TRANSPORT=http.","default":"60s","name":"SERVER_READ_TIMEOUT"},{"description":"HTTP write timeout as a Go duration. Used only when MCP_TRANSPORT=http.","default":"60s","name":"SERVER_WRITE_TIMEOUT"},{"description":"local (text, debug) or prod (JSON, info). Logs go to stderr.","default":"local","choices":["local","prod"],"name":"LOG_MODE"},{"description":"Idle connections the outbound HTTP client keeps per host.","format":"number","default":"100","name":"MAX_IDLE_CONNS_PER_HOST"},{"description":"Log the raw requests sent to the X API. Verbose; the output can contain request details, so keep it off outside debugging.","format":"boolean","default":"false","choices":["false","true"],"name":"X_DEBUG"},{"description":"Queries accepted in one x_posts_search or x_posts_count call.","format":"number","default":"5","name":"POSTS_MAX_QUERIES"},{"description":"Usernames accepted in one x_posts_by_user call.","format":"number","default":"5","name":"POSTS_MAX_USERNAMES"},{"description":"Post ids accepted in one x_posts_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"POSTS_MAX_IDS"},{"description":"Posts returned per query when the call does not ask for a count. Every post returned is billed.","format":"number","default":"10","name":"POSTS_DEFAULT_RESULTS"},{"description":"Upper bound for posts per query. The X API caps this at 100.","format":"number","default":"100","name":"POSTS_MAX_RESULTS"},{"description":"How far back post searches look when the call does not say, in days.","format":"number","default":"7","name":"POSTS_DEFAULT_DAYS"},{"description":"Furthest back a post search may look, in days. Recent search cannot exceed 7.","format":"number","default":"7","name":"POSTS_MAX_DAYS"},{"description":"Timeout for a posts call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"POSTS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a posts call may request, in milliseconds.","format":"number","default":"2000","name":"POSTS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a posts call may request, in milliseconds.","format":"number","default":"60000","name":"POSTS_MAX_TIMEOUT_MS"},{"description":"Usernames accepted in one x_users_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"USERS_MAX_USERNAMES"},{"description":"User ids accepted in one x_users_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"USERS_MAX_IDS"},{"description":"Users returned per page when the call does not ask for a count.","format":"number","default":"100","name":"USERS_DEFAULT_RESULTS"},{"description":"Upper bound for users per page.","format":"number","default":"1000","name":"USERS_MAX_RESULTS"},{"description":"Timeout for a users call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"USERS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a users call may request, in milliseconds.","format":"number","default":"2000","name":"USERS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a users call may request, in milliseconds.","format":"number","default":"60000","name":"USERS_MAX_TIMEOUT_MS"},{"description":"Items returned per list page when the call does not ask for a count.","format":"number","default":"25","name":"LISTS_DEFAULT_RESULTS"},{"description":"Upper bound for items per list page. The X API caps this at 100.","format":"number","default":"100","name":"LISTS_MAX_RESULTS"},{"description":"Timeout for a lists call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"LISTS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a lists call may request, in milliseconds.","format":"number","default":"2000","name":"LISTS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a lists call may request, in milliseconds.","format":"number","default":"60000","name":"LISTS_MAX_TIMEOUT_MS"},{"description":"Bytes per upload segment. The X APPEND endpoint caps a segment at 5 MB.","format":"number","default":"4194304","name":"MEDIA_CHUNK_BYTES"},{"description":"How often the upload status is polled while X transcodes a video, in milliseconds.","format":"number","default":"2000","name":"MEDIA_POLL_INTERVAL_MS"},{"description":"Timeout for a whole upload in milliseconds when the call does not request one.","format":"number","default":"120000","name":"MEDIA_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout an upload may request, in milliseconds.","format":"number","default":"5000","name":"MEDIA_MIN_TIMEOUT_MS"},{"description":"Highest timeout an upload may request, in milliseconds.","format":"number","default":"600000","name":"MEDIA_MAX_TIMEOUT_MS"}]},{"registryType":"mcpb","identifier":"https://github.com/Role1776/mcp-x/releases/download/v0.1.1/mcp-x_0.1.1_linux_arm64.mcpb","version":"0.1.1","fileSha256":"bea4f1da09ae5f6fc2faeda8bf5d62d1323628b5e1360d1fe9f450596d8ecedb","transport":{"type":"stdio"},"environmentVariables":[{"description":"OAuth 1.0a consumer key. developer.x.com -> your project -> your app -> Keys and tokens.","isRequired":true,"isSecret":true,"name":"X_API_KEY"},{"description":"OAuth 1.0a consumer secret, issued together with X_API_KEY.","isRequired":true,"isSecret":true,"name":"X_API_KEY_SECRET"},{"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.","isRequired":true,"isSecret":true,"name":"X_ACCESS_TOKEN"},{"description":"User access token secret, issued together with X_ACCESS_TOKEN.","isRequired":true,"isSecret":true,"name":"X_ACCESS_TOKEN_SECRET"},{"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.","isRequired":true,"format":"filepath","placeholder":"/tmp/mcp-x-media","name":"MEDIA_ROOT"},{"description":"stdio (client spawns the process) or http (streamable HTTP listener).","default":"stdio","choices":["stdio","http"],"name":"MCP_TRANSPORT"},{"description":"Server name reported in the MCP initialize handshake.","default":"mcp-x","name":"MCP_NAME"},{"description":"HTTP path the MCP endpoint is served on. Used only when MCP_TRANSPORT=http.","default":"/mcp","name":"MCP_PATH"},{"description":"TCP port to listen on. Used only when MCP_TRANSPORT=http.","default":"8080","name":"SERVER_PORT"},{"description":"HTTP read timeout as a Go duration. Used only when MCP_TRANSPORT=http.","default":"60s","name":"SERVER_READ_TIMEOUT"},{"description":"HTTP write timeout as a Go duration. Used only when MCP_TRANSPORT=http.","default":"60s","name":"SERVER_WRITE_TIMEOUT"},{"description":"local (text, debug) or prod (JSON, info). Logs go to stderr.","default":"local","choices":["local","prod"],"name":"LOG_MODE"},{"description":"Idle connections the outbound HTTP client keeps per host.","format":"number","default":"100","name":"MAX_IDLE_CONNS_PER_HOST"},{"description":"Log the raw requests sent to the X API. Verbose; the output can contain request details, so keep it off outside debugging.","format":"boolean","default":"false","choices":["false","true"],"name":"X_DEBUG"},{"description":"Queries accepted in one x_posts_search or x_posts_count call.","format":"number","default":"5","name":"POSTS_MAX_QUERIES"},{"description":"Usernames accepted in one x_posts_by_user call.","format":"number","default":"5","name":"POSTS_MAX_USERNAMES"},{"description":"Post ids accepted in one x_posts_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"POSTS_MAX_IDS"},{"description":"Posts returned per query when the call does not ask for a count. Every post returned is billed.","format":"number","default":"10","name":"POSTS_DEFAULT_RESULTS"},{"description":"Upper bound for posts per query. The X API caps this at 100.","format":"number","default":"100","name":"POSTS_MAX_RESULTS"},{"description":"How far back post searches look when the call does not say, in days.","format":"number","default":"7","name":"POSTS_DEFAULT_DAYS"},{"description":"Furthest back a post search may look, in days. Recent search cannot exceed 7.","format":"number","default":"7","name":"POSTS_MAX_DAYS"},{"description":"Timeout for a posts call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"POSTS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a posts call may request, in milliseconds.","format":"number","default":"2000","name":"POSTS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a posts call may request, in milliseconds.","format":"number","default":"60000","name":"POSTS_MAX_TIMEOUT_MS"},{"description":"Usernames accepted in one x_users_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"USERS_MAX_USERNAMES"},{"description":"User ids accepted in one x_users_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"USERS_MAX_IDS"},{"description":"Users returned per page when the call does not ask for a count.","format":"number","default":"100","name":"USERS_DEFAULT_RESULTS"},{"description":"Upper bound for users per page.","format":"number","default":"1000","name":"USERS_MAX_RESULTS"},{"description":"Timeout for a users call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"USERS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a users call may request, in milliseconds.","format":"number","default":"2000","name":"USERS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a users call may request, in milliseconds.","format":"number","default":"60000","name":"USERS_MAX_TIMEOUT_MS"},{"description":"Items returned per list page when the call does not ask for a count.","format":"number","default":"25","name":"LISTS_DEFAULT_RESULTS"},{"description":"Upper bound for items per list page. The X API caps this at 100.","format":"number","default":"100","name":"LISTS_MAX_RESULTS"},{"description":"Timeout for a lists call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"LISTS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a lists call may request, in milliseconds.","format":"number","default":"2000","name":"LISTS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a lists call may request, in milliseconds.","format":"number","default":"60000","name":"LISTS_MAX_TIMEOUT_MS"},{"description":"Bytes per upload segment. The X APPEND endpoint caps a segment at 5 MB.","format":"number","default":"4194304","name":"MEDIA_CHUNK_BYTES"},{"description":"How often the upload status is polled while X transcodes a video, in milliseconds.","format":"number","default":"2000","name":"MEDIA_POLL_INTERVAL_MS"},{"description":"Timeout for a whole upload in milliseconds when the call does not request one.","format":"number","default":"120000","name":"MEDIA_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout an upload may request, in milliseconds.","format":"number","default":"5000","name":"MEDIA_MIN_TIMEOUT_MS"},{"description":"Highest timeout an upload may request, in milliseconds.","format":"number","default":"600000","name":"MEDIA_MAX_TIMEOUT_MS"}]},{"registryType":"mcpb","identifier":"https://github.com/Role1776/mcp-x/releases/download/v0.1.1/mcp-x_0.1.1_windows_amd64.mcpb","version":"0.1.1","fileSha256":"c16d8f6d6e0dbb294d5353b250269d78d9cef4c7e960613437d265c6824fe13f","transport":{"type":"stdio"},"environmentVariables":[{"description":"OAuth 1.0a consumer key. developer.x.com -> your project -> your app -> Keys and tokens.","isRequired":true,"isSecret":true,"name":"X_API_KEY"},{"description":"OAuth 1.0a consumer secret, issued together with X_API_KEY.","isRequired":true,"isSecret":true,"name":"X_API_KEY_SECRET"},{"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.","isRequired":true,"isSecret":true,"name":"X_ACCESS_TOKEN"},{"description":"User access token secret, issued together with X_ACCESS_TOKEN.","isRequired":true,"isSecret":true,"name":"X_ACCESS_TOKEN_SECRET"},{"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.","isRequired":true,"format":"filepath","placeholder":"/tmp/mcp-x-media","name":"MEDIA_ROOT"},{"description":"stdio (client spawns the process) or http (streamable HTTP listener).","default":"stdio","choices":["stdio","http"],"name":"MCP_TRANSPORT"},{"description":"Server name reported in the MCP initialize handshake.","default":"mcp-x","name":"MCP_NAME"},{"description":"HTTP path the MCP endpoint is served on. Used only when MCP_TRANSPORT=http.","default":"/mcp","name":"MCP_PATH"},{"description":"TCP port to listen on. Used only when MCP_TRANSPORT=http.","default":"8080","name":"SERVER_PORT"},{"description":"HTTP read timeout as a Go duration. Used only when MCP_TRANSPORT=http.","default":"60s","name":"SERVER_READ_TIMEOUT"},{"description":"HTTP write timeout as a Go duration. Used only when MCP_TRANSPORT=http.","default":"60s","name":"SERVER_WRITE_TIMEOUT"},{"description":"local (text, debug) or prod (JSON, info). Logs go to stderr.","default":"local","choices":["local","prod"],"name":"LOG_MODE"},{"description":"Idle connections the outbound HTTP client keeps per host.","format":"number","default":"100","name":"MAX_IDLE_CONNS_PER_HOST"},{"description":"Log the raw requests sent to the X API. Verbose; the output can contain request details, so keep it off outside debugging.","format":"boolean","default":"false","choices":["false","true"],"name":"X_DEBUG"},{"description":"Queries accepted in one x_posts_search or x_posts_count call.","format":"number","default":"5","name":"POSTS_MAX_QUERIES"},{"description":"Usernames accepted in one x_posts_by_user call.","format":"number","default":"5","name":"POSTS_MAX_USERNAMES"},{"description":"Post ids accepted in one x_posts_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"POSTS_MAX_IDS"},{"description":"Posts returned per query when the call does not ask for a count. Every post returned is billed.","format":"number","default":"10","name":"POSTS_DEFAULT_RESULTS"},{"description":"Upper bound for posts per query. The X API caps this at 100.","format":"number","default":"100","name":"POSTS_MAX_RESULTS"},{"description":"How far back post searches look when the call does not say, in days.","format":"number","default":"7","name":"POSTS_DEFAULT_DAYS"},{"description":"Furthest back a post search may look, in days. Recent search cannot exceed 7.","format":"number","default":"7","name":"POSTS_MAX_DAYS"},{"description":"Timeout for a posts call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"POSTS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a posts call may request, in milliseconds.","format":"number","default":"2000","name":"POSTS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a posts call may request, in milliseconds.","format":"number","default":"60000","name":"POSTS_MAX_TIMEOUT_MS"},{"description":"Usernames accepted in one x_users_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"USERS_MAX_USERNAMES"},{"description":"User ids accepted in one x_users_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"USERS_MAX_IDS"},{"description":"Users returned per page when the call does not ask for a count.","format":"number","default":"100","name":"USERS_DEFAULT_RESULTS"},{"description":"Upper bound for users per page.","format":"number","default":"1000","name":"USERS_MAX_RESULTS"},{"description":"Timeout for a users call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"USERS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a users call may request, in milliseconds.","format":"number","default":"2000","name":"USERS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a users call may request, in milliseconds.","format":"number","default":"60000","name":"USERS_MAX_TIMEOUT_MS"},{"description":"Items returned per list page when the call does not ask for a count.","format":"number","default":"25","name":"LISTS_DEFAULT_RESULTS"},{"description":"Upper bound for items per list page. The X API caps this at 100.","format":"number","default":"100","name":"LISTS_MAX_RESULTS"},{"description":"Timeout for a lists call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"LISTS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a lists call may request, in milliseconds.","format":"number","default":"2000","name":"LISTS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a lists call may request, in milliseconds.","format":"number","default":"60000","name":"LISTS_MAX_TIMEOUT_MS"},{"description":"Bytes per upload segment. The X APPEND endpoint caps a segment at 5 MB.","format":"number","default":"4194304","name":"MEDIA_CHUNK_BYTES"},{"description":"How often the upload status is polled while X transcodes a video, in milliseconds.","format":"number","default":"2000","name":"MEDIA_POLL_INTERVAL_MS"},{"description":"Timeout for a whole upload in milliseconds when the call does not request one.","format":"number","default":"120000","name":"MEDIA_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout an upload may request, in milliseconds.","format":"number","default":"5000","name":"MEDIA_MIN_TIMEOUT_MS"},{"description":"Highest timeout an upload may request, in milliseconds.","format":"number","default":"600000","name":"MEDIA_MAX_TIMEOUT_MS"}]},{"registryType":"mcpb","identifier":"https://github.com/Role1776/mcp-x/releases/download/v0.1.1/mcp-x_0.1.1_windows_arm64.mcpb","version":"0.1.1","fileSha256":"d67810d11ea472c17c7936e75bcda52a11f5b519bce2cd324e162eddbe3cc53c","transport":{"type":"stdio"},"environmentVariables":[{"description":"OAuth 1.0a consumer key. developer.x.com -> your project -> your app -> Keys and tokens.","isRequired":true,"isSecret":true,"name":"X_API_KEY"},{"description":"OAuth 1.0a consumer secret, issued together with X_API_KEY.","isRequired":true,"isSecret":true,"name":"X_API_KEY_SECRET"},{"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.","isRequired":true,"isSecret":true,"name":"X_ACCESS_TOKEN"},{"description":"User access token secret, issued together with X_ACCESS_TOKEN.","isRequired":true,"isSecret":true,"name":"X_ACCESS_TOKEN_SECRET"},{"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.","isRequired":true,"format":"filepath","placeholder":"/tmp/mcp-x-media","name":"MEDIA_ROOT"},{"description":"stdio (client spawns the process) or http (streamable HTTP listener).","default":"stdio","choices":["stdio","http"],"name":"MCP_TRANSPORT"},{"description":"Server name reported in the MCP initialize handshake.","default":"mcp-x","name":"MCP_NAME"},{"description":"HTTP path the MCP endpoint is served on. Used only when MCP_TRANSPORT=http.","default":"/mcp","name":"MCP_PATH"},{"description":"TCP port to listen on. Used only when MCP_TRANSPORT=http.","default":"8080","name":"SERVER_PORT"},{"description":"HTTP read timeout as a Go duration. Used only when MCP_TRANSPORT=http.","default":"60s","name":"SERVER_READ_TIMEOUT"},{"description":"HTTP write timeout as a Go duration. Used only when MCP_TRANSPORT=http.","default":"60s","name":"SERVER_WRITE_TIMEOUT"},{"description":"local (text, debug) or prod (JSON, info). Logs go to stderr.","default":"local","choices":["local","prod"],"name":"LOG_MODE"},{"description":"Idle connections the outbound HTTP client keeps per host.","format":"number","default":"100","name":"MAX_IDLE_CONNS_PER_HOST"},{"description":"Log the raw requests sent to the X API. Verbose; the output can contain request details, so keep it off outside debugging.","format":"boolean","default":"false","choices":["false","true"],"name":"X_DEBUG"},{"description":"Queries accepted in one x_posts_search or x_posts_count call.","format":"number","default":"5","name":"POSTS_MAX_QUERIES"},{"description":"Usernames accepted in one x_posts_by_user call.","format":"number","default":"5","name":"POSTS_MAX_USERNAMES"},{"description":"Post ids accepted in one x_posts_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"POSTS_MAX_IDS"},{"description":"Posts returned per query when the call does not ask for a count. Every post returned is billed.","format":"number","default":"10","name":"POSTS_DEFAULT_RESULTS"},{"description":"Upper bound for posts per query. The X API caps this at 100.","format":"number","default":"100","name":"POSTS_MAX_RESULTS"},{"description":"How far back post searches look when the call does not say, in days.","format":"number","default":"7","name":"POSTS_DEFAULT_DAYS"},{"description":"Furthest back a post search may look, in days. Recent search cannot exceed 7.","format":"number","default":"7","name":"POSTS_MAX_DAYS"},{"description":"Timeout for a posts call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"POSTS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a posts call may request, in milliseconds.","format":"number","default":"2000","name":"POSTS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a posts call may request, in milliseconds.","format":"number","default":"60000","name":"POSTS_MAX_TIMEOUT_MS"},{"description":"Usernames accepted in one x_users_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"USERS_MAX_USERNAMES"},{"description":"User ids accepted in one x_users_lookup call. The X API caps this at 100.","format":"number","default":"100","name":"USERS_MAX_IDS"},{"description":"Users returned per page when the call does not ask for a count.","format":"number","default":"100","name":"USERS_DEFAULT_RESULTS"},{"description":"Upper bound for users per page.","format":"number","default":"1000","name":"USERS_MAX_RESULTS"},{"description":"Timeout for a users call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"USERS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a users call may request, in milliseconds.","format":"number","default":"2000","name":"USERS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a users call may request, in milliseconds.","format":"number","default":"60000","name":"USERS_MAX_TIMEOUT_MS"},{"description":"Items returned per list page when the call does not ask for a count.","format":"number","default":"25","name":"LISTS_DEFAULT_RESULTS"},{"description":"Upper bound for items per list page. The X API caps this at 100.","format":"number","default":"100","name":"LISTS_MAX_RESULTS"},{"description":"Timeout for a lists call in milliseconds when the call does not request one.","format":"number","default":"15000","name":"LISTS_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout a lists call may request, in milliseconds.","format":"number","default":"2000","name":"LISTS_MIN_TIMEOUT_MS"},{"description":"Highest timeout a lists call may request, in milliseconds.","format":"number","default":"60000","name":"LISTS_MAX_TIMEOUT_MS"},{"description":"Bytes per upload segment. The X APPEND endpoint caps a segment at 5 MB.","format":"number","default":"4194304","name":"MEDIA_CHUNK_BYTES"},{"description":"How often the upload status is polled while X transcodes a video, in milliseconds.","format":"number","default":"2000","name":"MEDIA_POLL_INTERVAL_MS"},{"description":"Timeout for a whole upload in milliseconds when the call does not request one.","format":"number","default":"120000","name":"MEDIA_DEFAULT_TIMEOUT_MS"},{"description":"Lowest timeout an upload may request, in milliseconds.","format":"number","default":"5000","name":"MEDIA_MIN_TIMEOUT_MS"},{"description":"Highest timeout an upload may request, in milliseconds.","format":"number","default":"600000","name":"MEDIA_MAX_TIMEOUT_MS"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-09-09T12:47:44.590542Z","publishedAt":"2026-09-09T12:47:44.590542Z","updatedAt":"2026-09-09T12:47:44.590542Z","isLatest":true}}}],"metadata":{"count":2}}
