{"name":"io.github.Role1776/mcp-x","slug":"role1776-mcp-x","title":"X (Twitter)","description":"Search, read and publish X posts and manage users, lists and media via the X API v2.","url":"https://mcp.market/server/role1776-mcp-x","rating":null,"grade":"B","score":73,"certified":false,"status":"active","category":"search","tags":["search"],"presence":{"score":21,"stars":1,"forks":0,"downloads_week":null,"last_push_at":"2026-09-10T09:03:40.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"mixed","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/Role1776/mcp-x","website":"https://github.com/Role1776/mcp-x#readme","version":"0.1.1","remotes":[],"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"}]}],"tools":[],"scan":{"score":73,"grade":"B","scanned_at":"2026-09-19T20:54:58.026Z","report":{"scannerVersion":"0.1.7","scannedAt":"2026-09-19T20:54:57.997Z","components":{"code":{"score":-1,"max":25,"notes":["package could not be scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 9 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[],"repo":{"found":true,"owner":"Role1776","repo":"mcp-x","archived":false,"pushedAt":"2026-09-10T09:03:40Z","stars":1,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/184975966?v=4","ownerCreatedAt":"2024-10-14T16:49:22Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/184975966?v=4&s=128","source":"github"},"presence":{"stars":1,"forks":0,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-09-10T09:03:40.000Z","score":21}}}},"grade_history":[],"reviews":[]}