MCP server for X (Twitter) API integration with OAuth 2.0 authentication and media upload capabilities
This X (Twitter) MCP server has moderately defined tools with present but inconsistent quality. All 6 tools have explicit names and descriptions, and input schemas are visible in the code with type information. However, descriptions are terse (averaging ~80-100 chars, below the 194-char baseline), several parameters lack descriptions entirely, output schemas are not documented, and there is no visible error handling guidance or recovery patterns. The server demonstrates basic competence (names follow verb_noun convention, parameters have types) but lacks the detail and recovery context needed for confident production deployment. Security concern: the 'memoryKey' parameter pattern delegates credential storage to the caller, creating a risk that tokens could be logged or misused.
Authenticate with X using OAuth 2.0 authorization code flow with PKCE
Generate OAuth authorization URL for X authentication
Fetch authenticated user information from X
Post a tweet to X
Refresh X OAuth access token using refresh token
Upload media file to X for use in tweets
Output schemas are not documented. LLMs cannot infer what fields post_tweet, get_user_info, and upload_media return, forcing them to guess at downstream chaining and inviting mid-chain failures.
Parameter descriptions are minimal or missing. The 'memoryKey' parameter appears in all 6 tools but is described identically as 'Storage key for X' (X = 'session data' | 'PKCE state' | 'authentication'). LLMs need guidance on which tools populate memoryKey and which consume it. The 'text' parameter in post_tweet has no stated character limit, encoding, or media attachment constraints.
No error handling guidance. None of the tool descriptions state what errors are retryable (e.g. network timeout on refresh_token) vs user-fixable (e.g. invalid authorization code) vs fatal (e.g. revoked refresh token). LLMs have no recovery path when a call fails.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 55 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Credentials passed via 'memoryKey' parameter create logging and audit risk. While the code does not show credentials in parameter schemas, the pattern of passing a memory key by name invites implementations where the caller stores tokens unsafely. Tool descriptions do not warn against this or recommend server-side vault integration.
No idempotency hints. refresh_token and post_tweet are write operations but lack documentation on whether they are safe to retry and under what conditions. An LLM retrying post_tweet could create duplicate tweets.
No dependency or prerequisite documentation. LLMs may not understand that get_auth_url must be called before auth, or that auth must succeed before post_tweet. Tool descriptions do not guide the correct sequence.