Twitter MCP Server

# X (Twitter) MCP Server
A comprehensive Model Context Protocol server implementation for X (Twitter) API integration with professional workflow automation, enhanced error handling, and real-time documentation.
## ๐ Features
- **53 Total Tools** - 33 Twitter API + 20 enhanced SocialData.tools research capabilities
- **Advanced Analytics** - Thread analysis, network mapping, sentiment analysis, viral tracking
- **Bypasses API Restrictions** - Enhanced research tools work without Pro tier requirements
- **Professional Error Handling** - Clear upgrade guidance and graceful API key handling
- **5 Workflow Prompts** - Pre-built automation templates
- **6 Dynamic Resources** - Real-time API documentation and status
- **Full MCP Compliance** - Tools, prompts, and resources support
## ๐ Quick Start
### Prerequisites
- Node.js 18+
- npm or yarn
- X (Twitter) API credentials (Basic tier minimum - $200/month)
### Local Installation
1. **Clone and Install**
```bash
git clone <repository-url>
cd twitter-server
npm install
```
2. **Environment Setup**
```bash
cp .env.example .env
# Edit .env with your credentials
```
**Required Environment Variables:**
```env
# Twitter API credentials (Required)
X_API_KEY=your_api_key_here
X_API_SECRET=your_api_secret_here
X_ACCESS_TOKEN=your_access_token_here
X_ACCESS_TOKEN_SECRET=your_access_token_secret_here
# SocialData.tools API key (Optional - enables enhanced research tools)
SOCIALDATA_API_KEY=your_socialdata_api_key_here
SOCIALDATA_BASE_URL=https://api.socialdata.tools # Optional, uses default if not set
```
3. **Build and Run**
```bash
npm run build
npm start
```
4. **Test the Server**
```bash
# Test with JSON-RPC calls
source .env && echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}' | node dist/index.js
# Test specific tool
source .env && echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "getUserInfo", "arguments": {"username": "elonmusk"}}}' | node dist/index.js
```
## ๐ X (Twitter) API Setup
### Required Credentials
Add these to your `.env` file:
```env
X_API_KEY=your_api_key_here
X_API_SECRET=your_api_secret_here
X_ACCESS_TOKEN=your_access_token_here
X_ACCESS_TOKEN_SECRET=your_access_token_secret_here
```
### API Access Levels
| Tier | Cost | Working Tools | Limited Tools |
|------|------|---------------|---------------|
| **Basic** | $200/month | 18/22 tools | searchTweets, getHashtagAnalytics |
| **Pro** | $5,000/month | All 22 tools | None |
## ๐ ๏ธ Available Tools (53 Total)
### ๐ฆ Twitter API Tools (33 tools)
#### โ
Tweet Operations (All Working)
- `postTweet` - Post new tweets
- `getTweetById` - Retrieve specific tweets
- `replyToTweet` - Reply to tweets
- `deleteTweet` - Delete your tweets
#### โ
Engagement (All Working)
- `likeTweet` / `unlikeTweet` - Like/unlike tweets
- `retweet` / `undoRetweet` - Retweet/undo retweets
- `getRetweets` - Get retweet users
#### โ
User Management (Most Working)
- `getUserInfo` - Get user profiles โ
- `getUserTimeline` - Get user tweets โ
- `followUser` / `unfollowUser` - Follow/unfollow users โ
- `getFollowers` - Get followers โ ๏ธ (403 - requires special permissions)
- `getFollowing` - Get following โ ๏ธ (403 - requires special permissions)
#### โ
List Management (All Working)
- `createList` - Create X (Twitter) lists
- `getUserLists` - Get user's lists
- `addUserToList` / `removeUserFromList` - Manage list members
- `getListMembers` - Get list members
#### โ ๏ธ Search & Analytics (Limited)
- `searchTweets` - Search tweets (requires Pro tier - $5,000/month)
- `getHashtagAnalytics` - Hashtag analytics (requires Pro tier)
- `getLikedTweets` - Get liked tweets (API access issue)
### ๐ SocialData.tools Enhanced Research (20 tools)
*Note: These tools gracefully handle missing API keys with helpful setup instructions*
#### ๐ Advanced Search (6 tools)
- `advancedTweetSearch` - Complex queries with operators, bypasses API tier restrictions
- `historicalTweetSearch` - Access historical tweets beyond standard API limits
- `trendingTopicsSearch` - Real-time trend analysis and popular content discovery
- `bulkUserProfiles` - Multi-user profile analysis in single requests
- `userGrowthAnalytics` - User growth pattern analysis over time
- `userInfluenceMetrics` - Engagement scoring and influence calculations
#### ๐งต Thread & Conversation Analysis (3 tools)
- `getFullThread` - Reconstruct complete Twitter threads with engagement metrics
- `getConversationTree` - Map conversation structure including replies and quotes
- `getThreadMetrics` - Thread performance analysis and engagement distribution
#### ๐ Network Analysis (3 tools)
- `findMutualConnections` - Discover mutual connections via interactions
- `analyzeFollowerDemographics` - Follower patterns and demographic analysis
- `mapInfluenceNetwork` - Influence mapping and connection strength analysis
#### ๐ Advanced Analytics (3 tools)
- `getHashtagTrends` - Hashtag performance tracking over time with trend analysis
- `analyzeSentiment` - Sentiment analysis with keyword frequency tracking
- `trackVirality` - Viral spread patterns and engagement velocity analysis
#### ๐ฑ Direct Messages & Moderation (5 tools)
- Various DM and user moderation tools
## ๐ API Keys Setup
### Twitter API (Required)
Get these from [Twitter Developer Portal](https://developer.twitter.com/):
```env
X_API_KEY=your_api_key_here
X_API_SECRET=your_api_secret_here
X_ACCESS_TOKEN=your_access_token_here
X_ACCESS_TOKEN_SECRET=your_access_token_secret_here
```
### SocialData.tools API (Optional)
Enables 20 enhanced research tools that bypass Twitter API limitations:
1. **Sign up** at [SocialData.tools](https://socialdata.tools)
2. **Get your API key** from the dashboard
3. **Add to .env file:**
```env
SOCIALDATA_API_KEY=your_socialdata_api_key_here
```
**Without SocialData API key:** Enhanced research tools will show helpful setup instructions instead of errors.
## ๐งช Testing SocialData.tools Integration
### Test Enhanced Research Tools
```bash
# Test advanced tweet search (bypasses Twitter API Pro tier requirement)
source .env && echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "advancedTweetSearch", "arguments": {"query": "AI OR machine learning", "maxResults": 5}}}' | node dist/index.js
# Test sentiment analysis
source .env && echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "analyzeSentiment", "arguments": {"query": "ChatGPT", "sampleSize": 20}}}' | node dist/index.js
# Test user influence metrics
source .env && echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "userInfluenceMetrics", "arguments": {"username": "openai"}}}' | node dist/index.js
# Test thread analysis
source .env && echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "getFullThread", "arguments": {"tweetId": "1234567890123456789"}}}' | node dist/index.js
```
### Test Without API Key
```bash
# These will show helpful setup instructions instead of errors
SOCIALDATA_API_KEY="" echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "advancedTweetSearch", "arguments": {"query": "test"}}}' | node dist/index.js
```
## ๐ When to Use Which Tools
### Twitter API vs SocialData.tools Comparison
| Use Case | Twitter API Tool | SocialData.tools Alternative | Advantage |
|----------|------------------|-------------------------------|-----------|
| **Basic Search** | `searchTweets` โ ๏ธ (Pro tier $5k/month) | `advancedTweetSearch` โ
| Bypasses API restrictions |
| **User Analysis** | `getUserInfo` โ
| `userInfluenceMetrics` โ
| Enhanced analytics |
| **Historical Data** | Limited by API tier | `historicalTweetSearch` โ
| Access older tweets |
| **Sentiment Analysis** | Not available | `analyzeSentiment` โ
| Built-in sentiment scoring |
| **Thread Analysis** | Manual reconstruction | `getFullThread` โ
| Automated thread mapping |
| **Network Mapping** | Not available | `mapInfluenceNetwork` โ
| Connection analysis |
| **Hashtag Trends** | `getHashtagAnalytics` โ ๏ธ (Pro tier) | `getHashtagTrends` โ
| No tier restrictions |
### Recommended Workflow
1. **Start with Twitter API tools** for posting, engagement, and basic operations
2. **Use SocialData.tools** for research, analytics, and advanced insights
3. **Combine both** for comprehensive Twitter automation and analysis
## ๐ฏ MCP Workflow Prompts
Our server includes 5 professional workflow templates:
### 1. Tweet Composition (`compose-tweet`)
Interactive guidance for creating engaging tweets with hashtags, mentions, and media.
### 2. Analytics Reporting (`analytics-report`)
Comprehensive X (Twitter) analytics workflow for business insights.
### 3. Content Strategy (`content-strategy`)
Strategic content planning and audience engagement workflows.
### 4. Community Management (`community-management`)
Customer service and community engagement best practices.
### 5. Hashtag Research (`hashtag-research`)
Industry-specific hashtag research and trend analysis.
## ๐ Dynamic Resources
Real-time information accessible via MCP:
- **API Rate Limits** - Live usage monitoring
- **Access Level Status** - Current tier capabilities
- **Tool Status Report** - Working vs limited tools
- **Quick Start Guide** - Getting started documentation
- **Workflow Templates** - Pre-built automation examples
- **User Profile Data** - Dynamic user information (live API calls)
## ๐งช Testing
### Manual Testing
```bash
# Test working tools
source .env && echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "postTweet", "arguments": {"text": "Hello from MCP!"}}}' | node dist/index.js
# Test user info
source .env && echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "getUserInfo", "arguments": {"username": "elonmusk"}}}' | node dist/index.js
# Test limited tools (will show upgrade guidance)
source .env && echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "searchTweets", "arguments": {"query": "MCP"}}}' | node dist/index.js
```
### Test Results Summary
- **18 Tools Working** on Basic tier
- **4 Tools Limited** by API tier/permissions
- **Professional error messages** with upgrade guidance
- **All core functionality** operational
## ๐ง Integration Examples
### MCP Client (Cursor/Claude)
```json
{
"mcpServers": {
"x-twitter": {
"command": "node",
"args": ["/path/to/twitter-server/dist/index.js"],
"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"
}
}
}
}
```
### Direct JSON-RPC
```bash
# Always source environment first
source .env
# List all tools
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}' | node dist/index.js
# Call specific tool
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "toolName", "arguments": {"param": "value"}}}' | node dist/index.js
```
## ๐ API Documentation
### Tweet Operations
**postTweet**
```json
{
"text": "Your tweet content (up to 280 characters)"
}
```
**getTweetById**
```json
{
"tweetId": "1234567890123456789",
"tweetFields": ["created_at", "public_metrics", "author_id"]
}
```
**replyToTweet**
```json
{
"tweetId": "1234567890123456789",
"text": "Your reply content"
}
```
### User Operations
**getUserInfo**
```json
{
"username": "elonmusk",
"fields": ["description", "public_metrics", "profile_image_url"]
}
```
**followUser**
```json
{
"username": "target_username"
}
```
### Engagement
**likeTweet**
```json
{
"tweetId": "1234567890123456789"
}
```
**retweet**
```json
{
"tweetId": "1234567890123456789"
}
```
## ๐จ Error Handling
### Professional Error Messages
Our enhanced error handling provides:
- **Clear API tier explanations** for limited tools
- **Upgrade pricing information** ($5,000/month Pro tier)
- **Direct upgrade links** to Twitter Developer Portal
- **Alternative solution suggestions**
Example error response:
```json
{
"error": "This endpoint requires X (Twitter) API Pro tier access ($5,000/month). Visit https://developer.twitter.com/en/docs/twitter-api/getting-started/about-twitter-api#v2-access-leve to upgrade your access level."
}
```
## ๐ Project Structure
```
twitter-server/
โโโ src/
โ โโโ handlers/ # API endpoint handlers
โ โโโ prompts.ts # MCP workflow prompts
โ โโโ resources.ts # Dynamic MCP resources
โ โโโ index.ts # Main MCP server
โโโ dist/ # Compiled JavaScript
โโโ scripts/ # Documentation & PRD
โโโ package.json
```
## ๐ Development
### Build & Run
```bash
npm run build # Compile TypeScript
npm start # Start production server
npm run dev # Development mode with watch
```
### Adding New Tools
1. **Add handler function** in appropriate `src/handlers/` file
2. **Register tool** in `src/index.ts`
3. **Add documentation** to this README
4. **Test with JSON-RPC** calls
### Contributing
1. Follow existing code patterns
2. Add proper error handling with professional messages
3. Test with both working and failing scenarios
4. Update documentation
## ๐ Known Limitations
### API Tier Restrictions
- **searchTweets**: Requires Pro tier ($5,000/month)
- **getHashtagAnalytics**: Requires Pro tier
- **getFollowers/getFollowing**: Requires special permissions (403 errors)
- **getLikedTweets**: Parameter validation issues
### Recommendations
- **Current Setup**: Excellent for basic X (Twitter) automation
- **For Advanced Analytics**: Consider Pro tier upgrade
- **For Followers/Following**: Request elevated permissions
## ๐ Troubleshooting
### Common Issues
**Error: "fetch is not defined"**
```bash
# Ensure Node.js 18+
node --version
```
**403 Permission Errors**
- Check API credentials are correct
- Verify account has required permissions
- Some endpoints need special approval
**400 Bad Request Errors**
- Review parameter formats
- Check our enhanced error messages for guidance
- Verify API tier supports the endpoint
### Getting Help
1. **Check error messages** - Our enhanced error handling provides clear guidance
2. **Review API documentation** - X (Twitter) Developer Portal
3. **Test with working tools first** - Verify basic setup
4. **Check environment variables** - Ensure all credentials are set
---
## ๐ Current Status
- **53 Total Tools**: 33 Twitter API + 20 SocialData.tools enhanced research
- **Advanced Analytics**: Thread analysis, network mapping, sentiment analysis, viral tracking
- **Graceful API Key Handling**: Enhanced tools show helpful setup instructions when API key missing
- **Bypasses API Restrictions**: Research tools work without Twitter Pro tier requirements
- **Professional Error Handling**: Clear upgrade guidance and user-friendly messages
- **Full MCP Compliance**: Tools, prompts, resources
- **Production Ready**: Enhanced reliability, comprehensive analytics, and excellent UX
Built with โค๏ธ using the Model Context Protocol and SocialData.tools integration
TDQS
Scored across 53 tools
Most tools have distinct purposes, but there is significant overlap in some areas, such as multiple tweet search tools (advancedTweetSearch, historicalTweetSearch, searchTweets) and several analytics tools (e.g., analyzeFollowerDemographics, userGrowthAnalytics, userInfluenceMetrics) that could cause confusion. Descriptions help differentiate them, but the sheer number of similar tools increases ambiguity.
Tool names generally follow a consistent verb_noun pattern (e.g., postTweet, getUserInfo, likeTweet), with only minor deviations like 'addUserToList' (which could be 'addUserToList' is consistent in structure but uses 'add' instead of a more standard verb like 'create'). Overall, the naming is predictable and readable across the set.
With 53 tools, this server is overly comprehensive for a Twitter API wrapper, making it heavy and potentially overwhelming. The scope includes many niche analytics and advanced features that might be better grouped or omitted, as typical MCP servers for social media have 10-30 tools. This count feels excessive and could hinder usability.
The tool set provides complete coverage for Twitter operations, including CRUD for tweets, users, lists, and direct messages, along with advanced features like analytics, search, and engagement tracking. There are no obvious gaps; agents can perform all core and extended workflows without dead ends.