x-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| X_HEADLESS | No | Set to 'false' to run the browser visibly (e.g., for interactive login). Default is 'true'. | |
| X_LOG_LEVEL | No | Logging level (e.g., 'DEBUG', 'INFO'). Default is 'INFO'. | |
| X_AUTH_TOKEN | Yes | The `auth_token` cookie from x.com. Required for authentication. | |
| X_CSRF_TOKEN | No | The `ct0` cookie from x.com. Optional but recommended. | |
| X_USER_DATA_DIR | No | Path to a directory to persist browser session data. Used for interactive login. | |
| X_NAV_TIMEOUT_MS | No | Navigation timeout in milliseconds. Default is 30000. | |
| X_BROWSER_CHANNEL | No | Browser channel to use (e.g., 'chromium', 'chrome'). Default is 'chromium'. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_profileB | Fetch a user's public profile on X. |
| get_user_tweetsB | Fetch a user's most recent posts from their profile timeline. |
| get_tweetA | Fetch a single post by its URL or numeric status id. |
| search_tweetsB | Search X for posts matching a query. |
| loginA | Open a visible browser and wait for you to sign in to X interactively. Run the server with |
| login_with_credentialsA | Attempt an automated DOM login using X_USERNAME / X_PASSWORD (fragile). This types the configured credentials into the login form. It does NOT handle
2FA, email confirmation, or the anti-bot challenges X frequently injects, so
it only works for simple accounts. Prefer Returns: ActionResult describing whether the session ended up authenticated. |
| post_tweetB | Publish a new post (tweet) from the authenticated account. |
| reply_to_tweetB | Reply to an existing post. |
| like_tweetA | Like a post by URL or status id (no-op if already liked). |
| follow_userA | Follow a user from their profile page. |
| check_authA | Report whether the browser session is logged in to X. Returns a dict with 'authenticated' (bool) and 'has_session_cookies' (whether X_AUTH_TOKEN was supplied). Use this to diagnose empty results. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 11 tools
Each tool targets a distinct action (check auth, follow, get profile, get tweet, get user tweets, like, login, login with credentials, post, reply, search). Even the two login tools are clearly differentiated by method (interactive vs automated). There is no ambiguity between tools.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., check_auth, get_profile, like_tweet, search_tweets). The only deviation is login_with_credentials, which is still a verb phrase and fits the pattern. No mixing of styles.
With 11 tools, the server covers the essential operations for interacting with X (authentication, profile viewing, tweeting, searching, following, liking, replying). The count is well-scoped for this domain, neither too few nor too many.
The tool set covers core X workflows: authentication, profile and tweet retrieval, posting, replying, liking, following, and searching. However, notable gaps exist, such as no retweet, quote tweet, delete tweet, unfollow, or direct message support. These are common actions that agents may need, but the set is still functional for basic interactions.