Used for loading environment variables for Twitter API credentials and server configuration
Provides code linting with TypeScript rules for the project
Required for cloning the repository during installation
Used for comprehensive testing of the Twitter MCP server functionality
Required runtime environment for the Twitter MCP server, version 18+
Used for package management and running development scripts
Used for code formatting in the development workflow
Provides type checking and strict typing for the Twitter MCP server implementation
Click on "Install 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., "@Twitter MCP Serversearch for recent tweets about AI advancements"
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.
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
Clone the repository:
git clone https://github.com/aali-1/twitter-mcp-server.git
cd twitter-mcp-serverInstall dependencies:
npm installSet up environment variables:
cp env.example .envEdit .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_tokenUsage
Build and Run
# Build the project
npm run build
# Run the MCP server
npm startDevelopment
# Run in development mode
npm run dev
# Run tests
npm test
# Lint code
npm run lint
# Format code
npm run formatMCP 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 tweetreply_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 tweetsmax_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 formax_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 | Required |
| Twitter API Secret | Required |
| Twitter Access Token | Required |
| Twitter Access Token Secret | Required |
| Twitter Bearer Token | Required |
| Environment | production |
| Log level | info |
| Rate limit window | 900000 (15 min) |
| 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_infotoolGraceful 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.tsTesting
The project includes comprehensive tests:
# Run all tests
npm test
# Run tests with coverage
npm test -- --coverageTests 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 PrettierCode 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
Fork the repository
Create a feature branch
Make your changes
Add tests
Submit a pull request
License
MIT License