Skip to main content
Glama

Twitter MCP Server

by aali-1

Twitter MCP Server

A Model Context Protocol (MCP) server for Twitter API with posting, searching, and timeline features.

Features

  • Post Tweets: Post new tweets with optional reply functionality
  • Search Tweets: Search for tweets using query strings
  • Get Timelines: Retrieve user timelines
  • Rate Limiting: Basic rate limiting for Twitter API calls
  • TypeScript: Full TypeScript support with strict type checking
  • Testing: Comprehensive test suite with Jest

Prerequisites

  • Node.js 18+
  • Twitter API credentials (API Key, API Secret, Access Token, Access Token Secret, Bearer Token)

Installation

  1. Clone the repository:
git clone https://github.com/aali-1/twitter-mcp-server.git cd twitter-mcp-server
  1. Install dependencies:
npm install
  1. Set up environment variables:
cp env.example .env

Edit .env with your Twitter API credentials:

TWITTER_API_KEY=your_twitter_api_key TWITTER_API_SECRET=your_twitter_api_secret TWITTER_ACCESS_TOKEN=your_twitter_access_token TWITTER_ACCESS_TOKEN_SECRET=your_twitter_access_token_secret TWITTER_BEARER_TOKEN=your_twitter_bearer_token

Usage

Build and Run

# Build the project npm run build # Run the MCP server npm start

Development

# Run in development mode npm run dev # Run tests npm test # Lint code npm run lint # Format code npm run format

MCP Tools

The server provides the following MCP tools:

post_tweet

Post a new tweet with optional reply functionality.

Parameters:

  • text (string, required): The text content of the tweet
  • reply_to_tweet_id (string, optional): Tweet ID to reply to

Example:

{ "name": "post_tweet", "arguments": { "text": "Hello, world!", "reply_to_tweet_id": "1234567890123456789" } }

search_tweets (Requires Basic/Pro plan)

Search for tweets using a query string.

Parameters:

  • query (string, required): Search query for tweets
  • max_results (number, optional): Maximum number of results (default: 10)

Example:

{ "name": "search_tweets", "arguments": { "query": "AI", "max_results": 5 } }

get_timeline

Get tweets from a user's timeline.

Parameters:

  • username (string, required): Username to get timeline for
  • max_results (number, optional): Maximum number of results (default: 10)

Example:

{ "name": "get_timeline", "arguments": { "username": "elonmusk", "max_results": 5 } }

get_rate_limit_info

Get current rate limit information.

Parameters: None

Example:

{ "name": "get_rate_limit_info", "arguments": {} }

Configuration

Environment Variables

VariableDescriptionDefault
TWITTER_API_KEYTwitter API KeyRequired
TWITTER_API_SECRETTwitter API SecretRequired
TWITTER_ACCESS_TOKENTwitter Access TokenRequired
TWITTER_ACCESS_TOKEN_SECRETTwitter Access Token SecretRequired
TWITTER_BEARER_TOKENTwitter Bearer TokenRequired
NODE_ENVEnvironmentproduction
LOG_LEVELLog levelinfo
RATE_LIMIT_WINDOW_MSRate limit window900000 (15 min)
RATE_LIMIT_MAX_REQUESTSMax requests per window300

Rate Limiting

The server implements basic rate limiting:

  • Respects Twitter's API rate limits
  • Provides rate limit information via get_rate_limit_info tool
  • Graceful error handling for rate limit exceeded scenarios

Project Structure

src/ ├── config.ts # Configuration management ├── logger.ts # Logging utilities ├── server.ts # MCP server implementation ├── twitter.ts # Twitter API service ├── types.ts # TypeScript type definitions ├── index.ts # Main entry point └── test/ # Test files ├── basic.test.ts └── twitter.test.ts

Testing

The project includes comprehensive tests:

# Run all tests npm test # Run tests with coverage npm test -- --coverage

Tests cover:

  • Twitter service functionality
  • Rate limiting
  • Error handling
  • Tool parameter validation

Development

Available Scripts

npm run dev # Start in development mode npm run build # Build TypeScript npm run start # Start production server npm run test # Run tests npm run lint # Run ESLint npm run format # Format code with Prettier

Code Quality

  • TypeScript: Strict type checking
  • ESLint: Code linting with TypeScript rules
  • Prettier: Code formatting
  • Jest: Testing framework

Error Handling

The server includes comprehensive error handling:

  • Twitter API errors (rate limits, authentication, etc.)
  • Network errors
  • Validation errors
  • Graceful shutdown handling

Security

  • Environment variable validation
  • Input validation
  • Error handling without information leakage
  • Secure credential management

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests
  5. Submit a pull request

License

MIT License

-
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.

Model Context Protocol server that enables programmatic interaction with Twitter API, allowing users to post tweets, search for content, and retrieve user timelines through standardized MCP tools.

  1. Features
    1. Prerequisites
      1. Installation
        1. Usage
          1. Build and Run
          2. Development
        2. MCP Tools
          1. post_tweet
          2. search_tweets (Requires Basic/Pro plan)
          3. get_timeline
          4. get_rate_limit_info
        3. Configuration
          1. Environment Variables
          2. Rate Limiting
        4. Project Structure
          1. Testing
            1. Development
              1. Available Scripts
              2. Code Quality
            2. Error Handling
              1. Security
                1. Contributing
                  1. License

                    Related MCP Servers

                    • -
                      security
                      A
                      license
                      -
                      quality
                      Enables interaction with Twitter through a Model Context Protocol, allowing large language models to post tweets, search for tweets, and reply to tweets.
                      Last updated -
                      25
                      3
                      18
                      TypeScript
                      MIT License
                      • 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 -
                      10
                      8
                      TypeScript
                      MIT License
                    • -
                      security
                      A
                      license
                      -
                      quality
                      A Model Context Protocol server that enables AI agents to interact with Twitter without direct API access, supporting tweet operations, user interactions, and Grok AI integration.
                      Last updated -
                      15
                      13
                      TypeScript
                      MIT License
                      • Apple

                    View all related MCP servers

                    MCP directory API

                    We provide all the information about MCP servers via our MCP API.

                    curl -X GET 'https://glama.ai/api/mcp/v1/servers/aali-1/twitter-mcp-server'

                    If you have feedback or need assistance with the MCP directory API, please join our Discord server