X-MCP 2.0
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@X-MCP 2.0Search for tweets about MCP servers"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
X-MCP 2.0
MCP server for the X/Twitter API v2 with OAuth 2.0 PKCE authentication.
Use Claude to post tweets, search X, like, retweet, and more — with modern OAuth 2.0.
Why 2.0?
The original twitter-mcp uses OAuth 1.0a, which requires 4 separate keys and doesn't support newer API features. X-MCP 2.0 uses OAuth 2.0 with PKCE, the recommended auth method for Twitter API v2.
Feature | twitter-mcp | X-MCP 2.0 |
Auth | OAuth 1.0a (4 keys) | OAuth 2.0 PKCE (modern) |
Token refresh | No | Auto-refresh |
Post tweet | Yes | Yes |
Search | Yes | Yes |
Get tweet | No | Yes |
User profile | No | Yes |
Home timeline | No | Yes |
Like | No | Yes |
Retweet | No | Yes |
Reply | No | Yes |
User tweets | No | Yes |
MCP SDK | 0.6.0 | 1.x |
Related MCP server: X(Twitter) MCP Server
Tools (10)
Tool | Description |
| Post a tweet (supports replies & quote tweets) |
| Search tweets by query |
| Get a specific tweet by ID |
| Get your profile info |
| Get any user's profile by username |
| Get your home timeline |
| Like a tweet |
| Retweet a tweet |
| Reply to a tweet |
| Get recent tweets from a user |
Setup
1. Get Twitter API Credentials
Go to developer.x.com and create an app
Under Keys and Tokens, find OAuth 2.0 Client ID and Client Secret
Under User authentication settings, click Set up:
App permissions: Read and write
Type of App: Web App, Automated App or Bot
Callback URI:
http://127.0.0.1:8739/callbackWebsite URL: your website or GitHub profile
2. Authorize (One-Time)
git clone https://github.com/JFan5/X-MCP-2.0.git
cd X-MCP-2.0
npm install
# Run the auth flow — opens browser for Twitter login
CLIENT_ID=your_client_id CLIENT_SECRET=your_client_secret npm run authThis saves tokens to ~/.x-mcp-tokens.json and prints the ACCESS_TOKEN and REFRESH_TOKEN.
3. Configure Claude
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"x-mcp": {
"command": "node",
"args": ["/path/to/X-MCP-2.0/dist/index.js"],
"env": {
"CLIENT_ID": "your_client_id",
"CLIENT_SECRET": "your_client_secret",
"ACCESS_TOKEN": "your_access_token",
"REFRESH_TOKEN": "your_refresh_token"
}
}
}
}Or for Claude Code, add to ~/.claude/settings.json:
{
"mcpServers": {
"x-mcp": {
"command": "node",
"args": ["/path/to/X-MCP-2.0/dist/index.js"],
"env": {
"CLIENT_ID": "your_client_id",
"CLIENT_SECRET": "your_client_secret",
"ACCESS_TOKEN": "your_access_token",
"REFRESH_TOKEN": "your_refresh_token"
}
}
}
}4. Build (if running from source)
npm run buildToken Refresh
If you included the REFRESH_TOKEN, X-MCP 2.0 automatically refreshes your access token when it expires (every 2 hours). No manual intervention needed.
Examples
Ask Claude:
"Post a tweet about my new open-source project"
"Search for tweets about GRPO reinforcement learning"
"What's on my Twitter timeline?"
"Like the top tweet about machine learning"
"Show me @kaboroevich's recent tweets"
License
MIT
Available Tools
10 toolsget_my_profileA
Get the authenticated user's X/Twitter profile.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It correctly identifies a read operation and implies authentication, but does not disclose rate limits, data format, or potential side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, front-loaded sentence with no wasted words. Perfectly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only tool with no output schema, the description is adequately complete. It clearly states the scope (authenticated user) and action, though it could optionally mention what fields are returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, baseline 4 applies. The description adds no parameter meaning, which is appropriate given the lack of parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the specific resource 'authenticated user's profile', distinguishing it from siblings like 'get_user' which retrieves other users' profiles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'get_user'. The description lacks any when-to-use or when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_timelineC
Get the authenticated user's home timeline.
| Name | Required | Description | Default |
|---|---|---|---|
| maxResults | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral traits. It only states the basic action and does not disclose return format, pagination behavior, authentication requirements, or any side effects. For a read operation, it is minimally transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that is concise and efficient. However, it could benefit from additional context without becoming overly long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of an output schema and zero schema parameter descriptions, the description is insufficient. It does not clarify what the timeline includes, how results are ordered, or how to handle pagination. The tool's purpose is clear, but many contextual details are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the meaning, usage, or constraints of the maxResults parameter. It adds no value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'authenticated user's home timeline', which distinguishes it from siblings like get_user_tweets (which retrieves tweets for a specific user) and get_my_profile (which gets profile info). It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as get_user_tweets or search_tweets. There is no mention of when not to use it or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tweetB
Get a specific tweet by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| tweetId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must fully disclose behavior. Only states a read operation, but does not mention authentication, rate limits, idempotency, error handling, or return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, direct sentence with no wasted words. Front-loaded with verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 1 parameter, no output schema, and no annotations, the description is too minimal. Agent lacks info on return structure, error responses, or behavioral constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description only says 'by its ID', adding no detail beyond the parameter name. No format, constraints, or examples are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Get) and resource (tweet) with the method (by its ID). It distinguishes from sibling tools like get_timeline or search_tweets which return multiple tweets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives (e.g., search_tweets for query-based retrieval). Lacks any context about prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_userB
Get a user's X/Twitter profile by username.
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only states the basic action. It does not disclose potential rate limits, authentication requirements, error conditions, or any side effects. For a read operation, some transparency is needed but absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no unnecessary words. Front-loaded with the core purpose. Efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and low complexity, the description provides minimal context. It does not mention return data, potential limitations, or prerequisites, which would help completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has one parameter 'username' with 0% description coverage. The description adds 'by username', clarifying the param's role, but adds no further meaning like format, constraints, or examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get a user's X/Twitter profile by username', specifying verb, resource, and method. It distinguishes from siblings like get_my_profile or get_timeline by focusing on retrieving another user's profile by username.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like get_my_profile (for own profile) or get_user_tweets. The context is implied but no explicit exclusions or conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_tweetsC
Get recent tweets from a specific user.
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | ||
| maxResults | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description only states 'Get recent tweets' without disclosing behavioral traits like rate limits, authentication requirements, or what defines 'recent' (e.g., 7 days). As a read operation, no contradictions but insufficient disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no unnecessary words. Efficient and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so return format is unknown. The description does not explain pagination, rate limits, or what fields each tweet contains. Incomplete for a tool that likely returns complex data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning parameter descriptions are missing. The description adds no parameter information. While 'username' is intuitive, 'maxResults' is left to inference without constraints or explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Get), resource (tweets), and scope (from a specific user). It distinguishes from siblings like get_timeline (home timeline) and search_tweets (cross-user search). However, 'recent' is ambiguous without a time window.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as search_tweets or get_timeline. No mention of prerequisites or contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
like_tweetC
Like a tweet on X/Twitter.
| Name | Required | Description | Default |
|---|---|---|---|
| tweetId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only states the action without disclosing behavioral traits such as side effects (e.g., adding to liked tweets list), authentication requirements, or rate limits. Since no annotations are provided, the description carries the full burden but fails to add context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, making it concise. However, it is overly brief and sacrifices completeness, which is not ideal for a write operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a write action with one parameter and no output schema, the description fails to convey what happens after liking (e.g., success confirmation, error handling). It is incomplete for practical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter 'tweetId' is self-explanatory from its name, but with 0% schema description coverage, the description should add useful context like expected format or source. It does not, leaving the parameter's meaning entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Like a tweet on X/Twitter' clearly states the verb (Like) and resource (tweet), making the primary action obvious. However, it does not differentiate from sibling tools like retweet or reply_to_tweet, which are distinct actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, context, or exclusions, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_tweetB
Post a tweet to X/Twitter. Supports replies and quote tweets.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| replyToTweetId | No | ||
| quoteTweetId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states the basic action without disclosing rate limits, auth requirements, character limits, or side effects. The mention of reply/quote features is minimal behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence. It efficiently communicates the main action and key features. Could be expanded with more detail without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema or annotations, the description is incomplete. It lacks information on response, errors, prerequisites, or integration details. For a simple post tool, more context is needed for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%; the description does not explain any parameters. While it hints at replyToTweetId and quoteTweetId, it does not clarify their meaning, constraints, or formatting. text is required but undescribed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool posts a tweet to X/Twitter and mentions specific features (replies and quote tweets). This distinguishes it from sibling tools like get_tweet (read) or like_tweet (action on existing tweet).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide when to use or when not to use this tool versus alternatives like reply_to_tweet or retweet. While it mentions support for replies and quote tweets, it lacks explicit context on selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reply_to_tweetC
Reply to a specific tweet on X/Twitter.
| Name | Required | Description | Default |
|---|---|---|---|
| tweetId | Yes | ||
| text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Only states the basic action without disclosing implications (visibility, thread structure, authentication needs, or side effects).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise single sentence. No unnecessary words, but could benefit from slight expansion for clarity. Content not front-loaded beyond the basic action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 2 required params, no output schema, and no annotations, the description is underspecified. Missing critical details like valid input formats, success/error behavior, and relationship to parent tweet.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (no parameter descriptions). The description adds no detail about 'tweetId' (the ID of the target tweet) or 'text' (reply content). Only param names hint at purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Reply to a specific tweet') and platform ('X/Twitter'). However, it doesn't differentiate from sibling tools like 'post_tweet' or 'retweet' beyond the word 'reply', missing explicit contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., tweetId must exist) or scenarios where reply is appropriate versus posting new content.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retweetB
Retweet a tweet on X/Twitter.
| Name | Required | Description | Default |
|---|---|---|---|
| tweetId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits (e.g., authentication needs, side effects, rate limits) but fails to do so beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no fluff, but lacks structured information (e.g., front-loading key details). Appropriate length for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description is minimal but covers the essential action. Missing details like success behavior or limitations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning beyond the parameter name 'tweetId'. The purpose is obvious but not elaborated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Retweet') and the resource ('a tweet on X/Twitter'), distinguishing it from sibling tools like like_tweet, reply_to_tweet, and post_tweet.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use retweet vs. alternatives (e.g., quote tweet), no prerequisites or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_tweetsC
Search for tweets on X/Twitter using a query string.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| maxResults | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states it searches using a query string, omitting important details like rate limits, sorting, pagination, or response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (one sentence), but it sacrifices necessary detail. While front-loaded, it lacks completeness for a tool that requires more context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (search operation with 2 parameters, no output schema, no annotations), the description is insufficient. It does not cover expected behavior, return results, or constraints like pagination.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions 'query string' but does not explain query syntax or operators. The maxResults parameter is not described at all. With 0% schema description coverage, the description fails to add meaningful context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'search' and the resource 'tweets on X/Twitter' using a query string. This distinguishes it from sibling tools like get_tweet (single tweet) and get_user_tweets (tweets by user).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like get_timeline or get_user_tweets. There is no mention of when not to use or any context-specific recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
v1.0.0- First observed
get_my_profile - First observed
get_timeline - First observed
get_tweet - First observed
get_user - First observed
get_user_tweets - First observed
like_tweet - First observed
post_tweet - First observed
reply_to_tweet - First observed
retweet - First observed
search_tweets
TDQS
Scored across 10 tools
Most tools have distinct purposes, but `post_tweet` supports replies and quote tweets, making it partially overlapping with `reply_to_tweet`. Otherwise, tools are clearly separated.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., get_tweet, like_tweet, post_tweet), making them predictable and easy to understand.
10 tools is well-scoped for a Twitter/X API server, covering essential read and write operations without being too sparse or bloated.
The set covers core reading (profile, timeline, tweets, search) and writing (post, reply, like, retweet). Missing delete/unlike/unretweet, but these are minor gaps.
Maintenance
Related MCP Connectors
X (Twitter) data for AI agents: tweets, profiles, followers, search, trends + social listening.
Schedule and publish social posts across 9 platforms (Instagram, LinkedIn, X, TikTok, Facebook, Threads, Pinterest, Bluesky, Mastodon) straight from Claude, ChatGPT, Cursor, or any MCP client. Create, edit, and reschedule posts, upload media, and pull account and post analytics, follower demographics, and best-time windows. 20 tools, free on every plan.
Draft, check and schedule posts to your connected social accounts from Claude, ChatGPT or Cursor.
- platform7nOAuthtech.p7n
Connect Claude to your Platform7n workspaces — chat, links, and tasks. One-click OAuth.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables interaction with X (formerly Twitter), allowing for posting tweets, searching content, managing accounts, and organizing lists.9 npm3MIT
- AlicenseBqualityDmaintenanceEnables creating, managing, and publishing X/Twitter posts, threads, and replies directly through Claude chat. Supports draft management with the ability to create, list, publish, and delete tweet drafts.101MIT
- AlicenseAqualityBmaintenanceEnables seamless interaction with Twitter/X platform through Claude AI, allowing users to post tweets with images, search for tweets, and engage in conversations using natural language commands.1038 npm25MIT
- AlicenseBqualityDmaintenanceEnables posting tweets to X (Twitter) via the X API v2, using Claude.17MIT