Skip to main content
Glama
aali-1

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

Related MCP server: MCP-Twikit

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

Variable

Description

Default

TWITTER_API_KEY

Twitter API Key

Required

TWITTER_API_SECRET

Twitter API Secret

Required

TWITTER_ACCESS_TOKEN

Twitter Access Token

Required

TWITTER_ACCESS_TOKEN_SECRET

Twitter Access Token Secret

Required

TWITTER_BEARER_TOKEN

Twitter Bearer Token

Required

NODE_ENV

Environment

production

LOG_LEVEL

Log level

info

RATE_LIMIT_WINDOW_MS

Rate limit window

900000 (15 min)

RATE_LIMIT_MAX_REQUESTS

Max requests per window

300

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

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

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