Model Context Protocol Server for Accessing twitter
A comprehensive Model Context Protocol server implementation for X (Twitter) API integration with professional workflow automation, enhanced error handling, and real-time documentation.
Clone and Install
git clone <repository-url>
cd twitter-server
npm install
Environment Setup
cp .env.example .env
# Edit .env with your credentials
Required Environment Variables:
# 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
Build and Run
npm run build
npm start
Test the Server
# 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
Add these to your .env
file:
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
Tier | Cost | Working Tools | Limited Tools |
---|---|---|---|
Basic | $200/month | 18/22 tools | searchTweets, getHashtagAnalytics |
Pro | $5,000/month | All 22 tools | None |
postTweet
- Post new tweetsgetTweetById
- Retrieve specific tweetsreplyToTweet
- Reply to tweetsdeleteTweet
- Delete your tweetslikeTweet
/ unlikeTweet
- Like/unlike tweetsretweet
/ undoRetweet
- Retweet/undo retweetsgetRetweets
- Get retweet usersgetUserInfo
- 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)createList
- Create X (Twitter) listsgetUserLists
- Get user’s listsaddUserToList
/ removeUserFromList
- Manage list membersgetListMembers
- Get list memberssearchTweets
- Search tweets (requires Pro tier - $5,000/month)getHashtagAnalytics
- Hashtag analytics (requires Pro tier)getLikedTweets
- Get liked tweets (API access issue)Note: These tools gracefully handle missing API keys with helpful setup instructions
advancedTweetSearch
- Complex queries with operators, bypasses API tier restrictionshistoricalTweetSearch
- Access historical tweets beyond standard API limitstrendingTopicsSearch
- Real-time trend analysis and popular content discoverybulkUserProfiles
- Multi-user profile analysis in single requestsuserGrowthAnalytics
- User growth pattern analysis over timeuserInfluenceMetrics
- Engagement scoring and influence calculationsgetFullThread
- Reconstruct complete Twitter threads with engagement metricsgetConversationTree
- Map conversation structure including replies and quotesgetThreadMetrics
- Thread performance analysis and engagement distributionfindMutualConnections
- Discover mutual connections via interactionsanalyzeFollowerDemographics
- Follower patterns and demographic analysismapInfluenceNetwork
- Influence mapping and connection strength analysisgetHashtagTrends
- Hashtag performance tracking over time with trend analysisanalyzeSentiment
- Sentiment analysis with keyword frequency trackingtrackVirality
- Viral spread patterns and engagement velocity analysisGet these from Twitter Developer Portal:
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
Enables 20 enhanced research tools that bypass Twitter API limitations:
SOCIALDATA_API_KEY=your_socialdata_api_key_here
Without SocialData API key: Enhanced research tools will show helpful setup instructions instead of errors.
## 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
## 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
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 |
Our server includes 5 professional workflow templates:
compose-tweet
)Interactive guidance for creating engaging tweets with hashtags, mentions, and media.
analytics-report
)Comprehensive X (Twitter) analytics workflow for business insights.
content-strategy
)Strategic content planning and audience engagement workflows.
community-management
)Customer service and community engagement best practices.
hashtag-research
)Industry-specific hashtag research and trend analysis.
Real-time information accessible via MCP:
## 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
{
"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"
}
}
}
}
## 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
postTweet
{
"text": "Your tweet content (up to 280 characters)"
}
getTweetById
{
"tweetId": "1234567890123456789",
"tweetFields": ["created_at", "public_metrics", "author_id"]
}
replyToTweet
{
"tweetId": "1234567890123456789",
"text": "Your reply content"
}
getUserInfo
{
"username": "elonmusk",
"fields": ["description", "public_metrics", "profile_image_url"]
}
followUser
{
"username": "target_username"
}
likeTweet
{
"tweetId": "1234567890123456789"
}
retweet
{
"tweetId": "1234567890123456789"
}
Our enhanced error handling provides:
Example error response:
{
"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."
}
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
npm run build # Compile TypeScript
npm start # Start production server
npm run dev # Development mode with watch
src/handlers/
filesrc/index.ts
Error: “fetch is not defined”
## Ensure Node.js 18+
node --version
403 Permission Errors
400 Bad Request Errors
Built with ❤️ using the Model Context Protocol and SocialData.tools integration
Python_mcp
MCP Server to run python code locally
Ragdocs
MCP server for RAG-based document search and management
Mcp Guide
A beginner-friendly guide server that helps users understand MCP concepts, provides interactive examples, and demonstrates best practices for building MCP integrations. Features tools for exploring MCP capabilities, resources for learning core concepts, and prompts for guided tutorials.