Add read-only X MCP plugin - #198
Merged
Merged
Conversation
Connects Cursor to X's hosted MCP server at https://api.x.com/mcp using the app-only Bearer route, which is read-only and needs no local xurl bridge or browser OAuth login. Logo is X's official mark from the X brand toolkit (about.x.com), placed on a black tile matching X's own app icon. Co-authored-by: Alex Vandak Maloney <maloney.a12@gmail.com>
Co-authored-by: Alex Vandak Maloney <maloney.a12@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds
third_party/x, a Cursor plugin for X's official hosted MCP server.Which X MCP
X's MCP docs describe two routes to
https://api.x.com/mcp:Authorizationheader. Read-only endpoints, no user context. This is what the plugin ships.xurlbridge — a localnpxstdio bridge doing OAuth 2.0 PKCE with a browser login, needed for writes and user-context tools.The bridge route needs Node.js, a registered
http://localhost:8080/callbackredirect URI, and a reachable browser on first run, so it does not fit a marketplace plugin. The plugin's README documents it as an escape hatch, along with X's unauthenticated docs-search server athttps://docs.x.com/mcp.Plugin variables
mcp.jsoncarries a single${X_BEARER_TOKEN}placeholder, declared and required in the manifest schema, and forwarded through theAuthorizationheader — the same shape as the existinggithubplugin:{ "mcpServers": { "x": { "type": "http", "url": "https://api.x.com/mcp", "headers": { "Authorization": "Bearer ${X_BEARER_TOKEN}" } } } }No secret values are committed. Users set the token in Dashboard → Plugins → Configure.
Logo
abs.twimg.com(wherex.comserves its icons) is not reachable from this environment, so the mark comes from X's official brand toolkit atabout.x.com—content/dam/about-twitter/x/brand-toolkit/x-logo.zip, which shipslogo.svg,logo-black.png, andlogo-white.png.assets/logo.svgis the unmodified official path data on a black 192×192 tile, matching this repo's convention (githubandapollo-ioboth use 192×192 tiles with a background rect). Glyph proportions were measured againstx.com/favicon.icoand match it exactly at 0.719 × 0.750 of the tile:Verification
node scripts/validate-plugins.mjs→All plugins validated successfully.POST https://api.x.com/mcpreturns401 Unauthorizedwithout a token, confirming the endpoint is live and gated on theAuthorizationheader. Tool calls were not exercised end to end, since that needs a real X developer app token.${VAR}inmcp.jsonis declared in the manifest schema..cursor-plugin/marketplace.jsonand the root README table.