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
Mcp Codex Keeper
An intelligent MCP server that serves as a guardian of development knowledge, providing Cline assistants with curated access to latest documentation and best practices across the software development landscape
Gmail Mcp
Ragdocs
MCP server for RAG-based document search and management
A Model Context Protocol (MCP) server that enables AI assistants to perform network scanning operations using NMAP
simple logseq mcp server
MCP to explore websites with llms.txt files
A Model Context Protocol (MCP) server that provides tools for interacting with the Twitch API using the Helix API.