Twitter MCP Server

Integrations

  • Uses environment variables from .env files to store Twitter API credentials securely

  • Uses npm for dependency management and running build/development scripts

  • Uses TypeScript for implementation of parameter validation and error handling

Twitter MCP Server

A Model Context Protocol server implementation for Twitter API integration.

Setup

  1. Clone the repository
  2. Install dependencies: npm install
  3. Copy .env.example to .env and fill in your Twitter API credentials
  4. Build the project: npm run build
  5. Start the server: npm start

Environment Variables

Required Twitter API credentials in .env:

X_API_KEY=your_api_key X_API_SECRET=your_api_secret X_ACCESS_TOKEN=your_access_token X_ACCESS_TOKEN_SECRET=your_access_token_secret

Available Tools

Tweet Operations

  • postTweet: Post a new tweet
    { "text": "Your tweet text here" }
  • postTweetWithMedia: Post a tweet with media attachment
    { "text": "Your tweet text", "mediaPath": "path/to/media/file", "mediaType": "image/jpeg|image/png|image/gif|video/mp4", "altText": "Optional alt text for accessibility" }
  • getTweetById: Get a specific tweet by ID
    { "tweetId": "tweet_id", "tweetFields": ["created_at", "public_metrics"] }
  • replyToTweet: Reply to an existing tweet
    { "tweetId": "tweet_id", "text": "Your reply text" }
  • deleteTweet: Delete a tweet
    { "tweetId": "tweet_id" }

Search & Analytics

  • searchTweets: Search for tweets
    { "query": "search query", "maxResults": 10, "tweetFields": ["created_at", "public_metrics"] }
  • getHashtagAnalytics: Get analytics for a hashtag
    { "hashtag": "hashtag", "startTime": "ISO-8601 date", "endTime": "ISO-8601 date" }

User Operations

  • getUserInfo: Get user information
    { "username": "twitter_username", "fields": ["description", "public_metrics"] }
  • getUserTimeline: Get user's tweets
    { "username": "twitter_username", "maxResults": 10, "tweetFields": ["created_at", "public_metrics"] }
  • getFollowers: Get user's followers
    { "username": "twitter_username", "maxResults": 100, "userFields": ["description", "public_metrics"] }
  • getFollowing: Get accounts a user follows
    { "username": "twitter_username", "maxResults": 100, "userFields": ["description", "public_metrics"] }

Engagement

  • likeTweet: Like a tweet
    { "tweetId": "tweet_id" }
  • unlikeTweet: Unlike a tweet
    { "tweetId": "tweet_id" }
  • retweet: Retweet a tweet
    { "tweetId": "tweet_id" }
  • undoRetweet: Undo a retweet
    { "tweetId": "tweet_id" }
  • getRetweets: Get users who retweeted a tweet
    { "tweetId": "tweet_id", "maxResults": 100, "userFields": ["description", "public_metrics"] }
  • getLikedTweets: Get tweets liked by a user
    { "userId": "user_id", "maxResults": 100, "tweetFields": ["created_at", "public_metrics"] }

List Management

  • createList: Create a new list
    { "name": "List name", "description": "List description", "isPrivate": false }
  • addUserToList: Add a user to a list
    { "listId": "list_id", "username": "twitter_username" }
  • removeUserFromList: Remove a user from a list
    { "listId": "list_id", "username": "twitter_username" }
  • getListMembers: Get members of a list
    { "listId": "list_id", "maxResults": 100, "userFields": ["description", "public_metrics"] }

Error Handling

All tools return standardized error responses:

  • Missing parameters: Missing required parameter: parameter_name
  • API errors: Error message from Twitter API
  • Not found errors: Appropriate "not found" message for the resource

Response Format

All successful responses follow this format:

{ "content": [ { "type": "text", "text": "Operation result message" } ] }

Development

  • Build: npm run build
  • Start: npm start
  • Watch mode: npm run dev
Here's a comprehensive status report of all Twitter tools: ## Working Tools (✓) 1. postTweet

Status: Working perfectly Response: Returns tweet ID Latest test: Success

2. getTweetById

Status: Working perfectly Response: Returns complete tweet data Latest test: Success

3. likeTweet & unlikeTweet

Status: Working perfectly Response: Confirmation of action Latest test: Success

4. retweet & undoRetweet

Status: Working perfectly Response: Confirmation of action Latest test: Success

5. replyToTweet

Status: Working perfectly Response: Returns reply tweet ID Latest test: Success

6. getUserInfo

Status: Working perfectly Response: Complete user profile data Latest test: Success

7. followUser & unfollowUser

Status: Working perfectly Response: Confirmation of action Latest test: Success

8. createList

Status: Working perfectly Response: Confirmation of list creation Latest test: Success

9. getUserLists

Status: Working perfectly Response: Returns both owned and member lists Latest test: Success

## Tools with Issues (⚠️) 1. getUserTimeline

Status: Error 400 Error: Invalid Request parameters Fix needed: Parameter validation

2. searchTweets

Status: Error 400 Error: Invalid Request parameters Fix needed: Query parameter formatting

3. getLikedTweets

Status: Error 400 Error: Invalid Request parameters Fix needed: Parameter validation

## Missing Tools (❌) - getHomeTimeline (not found in available tools) - getFollowers (not available) - getFollowing (not available) - getHashtagAnalytics (not available) ## Priority Fixes Needed 1. Parameter Validation: ```typescript // Implement for getUserTimeline, searchTweets, getLikedTweets interface TwitterParamValidator { validateTimelineParams(params: any): boolean; validateSearchParams(params: any): boolean; validateLikedTweetsParams(params: any): boolean; }
  1. Error Handling:
// Enhance error handling for 400 errors interface TwitterErrorHandler { handle400Error(endpoint: string, params: any): void; logErrorDetails(error: any): void; suggestParameterFixes(params: any): string[]; }
-
security - not tested
A
license - permissive license
-
quality - not tested

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Enables interaction with Twitter through a Model Context Protocol, allowing large language models to post tweets, search for tweets, and reply to tweets.

  1. Setup
    1. Environment Variables
      1. Available Tools
        1. Tweet Operations
        2. Search & Analytics
        3. User Operations
        4. Engagement
        5. List Management
      2. Error Handling
        1. Response Format
          1. Development

            Related MCP Servers

            • -
              security
              F
              license
              -
              quality
              Provides AI agents with comprehensive Twitter functionality through the Model Context Protocol standard, enabling reading tweets, posting content, managing interactions, and accessing timeline data with robust error handling.
              Last updated -
              4
              1
              JavaScript
              • Apple
            • -
              security
              A
              license
              -
              quality
              A Model Context Protocol server that enables AI to interact with Twitter, allowing functions like searching tweets, comparing sentiments across accounts, and retrieving timeline content.
              Last updated -
              MIT License
            • -
              security
              A
              license
              -
              quality
              A Model Context Protocol server that enables AI models and applications to interact directly with Twitter/X, providing capabilities to create posts, reply to tweets, retrieve user data, and manage account actions.
              Last updated -
              87
              4
              TypeScript
              MIT License
            • -
              security
              F
              license
              -
              quality
              A Model Context Protocol server that enables large language models to access the latest trending news headlines and detailed content across various categories including recommended, domestic, technology, and sports news.
              Last updated -
              Python
              • Apple

            View all related MCP servers

            ID: qlfiuj6xn6