Skip to main content

opentwitter-mcp-server

Twitter/X MCP server for fetching user profiles, tweets, follower events, and KOL tracking via AI assistants

Jump to install

Source facts

Repository
reason-machines/mcp-skills
Last source activity
May 17, 2026 at 03:09
Detected SKILL.md language
English
Stars
7
Forks
2

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
opentwitter-mcp-server
description
Twitter/X MCP server for fetching user profiles, tweets, follower events, and KOL tracking via AI assistants
triggers
["get Twitter user profile","search tweets about","monitor Twitter account for followers","check who unfollowed someone on Twitter","find deleted tweets from user","track Twitter KOL followers","get recent tweets from","search Twitter with filters"]
# opentwitter-mcp-server > Skill by [ara.so](https://ara.so) — MCP Skills collection. ## Overview The **opentwitter-mcp** is an MCP (Model Context Protocol) server that provides AI assistants with Twitter/X data access capabilities. It enables fetching user profiles, searching tweets, monitoring follower events, tracking deleted tweets, and managing watch lists for KOL (Key Opinion Leader) accounts. The server connects to the 6551.io API service and exposes 13 tools for Twitter data operations. ## Installation ### Prerequisites 1. Get your API token from [https://6551.io/mcp](https://6551.io/mcp) 2. Clone or download the repository 3. Have `uv` package manager installed ### Quick Install (Claude Code) ```bash claude mcp add twitter \ -e TWITTER_TOKEN=$TWITTER_TOKEN \ -- uv --directory /path/to/twitter-mcp run twitter-mcp ``` ### Manual Configuration **Claude Desktop** (`~/Library/Application Support/Claude/claude_desktop_config.json`): ```json { "mcpServers": { "twitter": { "command": "uv", "args": ["--directory", "/path/to/twitter-mcp", "run", "twitter-mcp"], "env": { "TWITTER_TOKEN": "${TWITTER_TOKEN}" } } } } ``` **Cursor** (`~/.cursor/mcp.json`): ```json { "mcpServers": { "twitter": { "command": "uv", "args": ["--directory", "/path/to/twitter-mcp", "run", "twitter-mcp"], "env": { "TWITTER_TOKEN": "${TWITTER_TOKEN}" } } } } ``` **Continue.dev** (`~/.continue/config.yaml`): ```yaml mcpServers: - name: twitter command: uv args: - --directory - /path/to/twitter-mcp - run - twitter-mcp env: TWITTER_TOKEN: ${TWITTER_TOKEN} ``` ## Environment Variables | Variable | Required | Description | |----------|----------|-------------| | `TWITTER_TOKEN` | **Yes** | Bearer token from 6551.io | | `TWITTER_API_BASE` | No | Override API URL (default: `https://ai.6551.io`) | | `TWITTER_MAX_ROWS` | No | Max results per query (default: 100) | Alternative: Create `config.json` in project root: ```json { "api_base_url": "https://ai.6551.io", "api_token": "your-token-here", "max_rows": 100 } ``` ## Available Tools ### User Profile Tools **`get_twitter_user`** - Get user by username ```python # Example use from AI assistant: # "Show me @elonmusk's profile" { "username": "elonmusk" } ``` **`get_twitter_user_by_id`** - Get user by numeric ID ```python { "user_id": "44196397" } ``` ### Tweet Retrieval Tools **`get_twitter_user_tweets`** - Get recent tweets from a user ```python # "What did @VitalikButerin tweet recently" { "username": "VitalikButerin", "count": 20 } ``` **`get_twitter_tweet_by_id`** - Get specific tweet with nested replies/quotes ```python { "tweet_id": "1234567890" } ``` **`get_twitter_article_by_id`** - Get Twitter article/long-form content ```python { "article_id": "1234567890" } ``` ### Search Tools **`search_twitter`** - Basic keyword search ```python # "Search Bitcoin related tweets" { "query": "Bitcoin", "count": 50 } ``` **`search_twitter_advanced`** - Advanced search with filters ```python # "Popular tweets about ETH with 1000+ likes" { "query": "ETH", "min_likes": 1000, "min_retweets": 100, "language": "en", "count": 30 } ``` Available filters: - `min_likes`, `max_likes` - `min_retweets`, `max_retweets` - `min_replies`, `max_replies` - `language` (ISO code: en, ja, etc.) - `since`, `until` (dates) - `verified_only` (boolean) ### Engagement Tools **`get_twitter_quote_tweets_by_id`** - Get tweets quoting a specific tweet ```python # "Who quoted this tweet" { "tweet_id": "1234567890", "count": 50 } ``` **`get_twitter_retweet_users_by_id`** - Get users who retweeted ```python # "Who retweeted this tweet" { "tweet_id": "1234567890", "count": 100 } ``` ### Monitoring Tools **`get_twitter_watch`** - List all monitored accounts ```python # "Show my Twitter watch list" {} ``` **`add_twitter_watch`** - Add account to monitoring ```python # "Monitor @elonmusk with follower tracking" { "username": "elonmusk", "event_types": ["NEW_FOLLOWER", "NEW_UNFOLLOWER", "NEW_TWEET"], "remark": "Tesla CEO", "ca": "0x1234..." # Optional contract address } ``` Event types: - `NEW_TWEET` - New tweets - `NEW_TWEET_REPLY` - Replies - `NEW_TWEET_QUOTE` - Quote tweets - `NEW_RETWEET` - Retweets - `NEW_FOLLOWER` - New followers - `NEW_UNFOLLOWER` - Unfollowers - `DELETE` - Deleted tweets - `UPDATE_NAME` - Username changes - `UPDATE_DESCRIPTION` - Bio updates - `UPDATE_AVATAR` - Profile picture changes - `UPDATE_BANNER` - Banner changes - `CA` - Tweets with contract addresses **`delete_twitter_watch`** - Remove from monitoring ```python { "username": "elonmusk" } ``` ### Event Tracking Tools **`get_twitter_follower_events`** - Get follower/unfollower events ```python # "Who followed @elonmusk recently" { "username": "elonmusk", "event_type": "NEW_FOLLOWER", "count": 50 } ``` **`get_twitter_deleted_tweets`** - Get deleted tweets ```python # "What tweets did @elonmusk delete" { "username": "elonmusk", "count": 20 } ``` **`get_twitter_kol_followers`** - Get KOL (influential) followers ```python # "Which KOLs follow @elonmusk" { "username": "elonmusk", "count": 100 } ``` ## Data Structures ### User Object ```python { "userId": "44196397", "screenName": "elonmusk", "name": "Elon Musk", "description": "Bio text...", "followersCount": 170000000, "friendsCount": 500, "statusesCount": 30000, "verified": true, "profileImageUrl": "https://...", "profileBannerUrl": "https://...", "createdAt": "2009-06-02T20:12:29Z" } ``` ### Tweet Object ```python { "id": "1234567890", "text": "Tweet content...", "createdAt": "2024-02-20T12:00:00Z", "language": "en", "retweetCount": 100, "favoriteCount": 500, "replyCount": 20, "quoteCount": 10, "viewCount": 10000, "userScreenName": "elonmusk", "userName": "Elon Musk", "userIdStr": "44196397", "userFollowers": 170000000, "userVerified": true, "conversationId": "1234567890", "isReply": false, "isQuote": false, "hashtags": ["crypto", "bitcoin"], "media": [ { "type": "photo", "url": "https://...", "thumbUrl": "https://..." } ], "urls": [ { "url": "https://t.co/...", "expandedUrl": "https://example.com", "displayUrl": "example.com" } ], "mentions": [ { "username": "VitalikButerin", "name": "Vitalik Buterin" } ] } ``` ## WebSocket Real-time Subscriptions Connect to `wss://ai.6551.io/open/twitter_wss?token=YOUR_TOKEN` for real-time events. ### Subscribe ```json { "jsonrpc": "2.0", "id": 1, "method": "twitter.subscribe" } ``` ### Event Notification ```json { "jsonrpc": "2.0", "method": "twitter.event", "params": { "id": 123456, "twAccount": "elonmusk", "twUserName": "Elon Musk", "profileUrl": "https://twitter.com/elonmusk", "eventType": "NEW_TWEET", "content": { /* tweet object */ }, "ca": "0x1234...", "remark": "Custom note", "createdAt": "2026-03-06T10:00:00Z" } } ``` ### Unsubscribe ```json { "jsonrpc": "2.0", "id": 2, "method": "twitter.unsubscribe" } ``` ## Common Patterns ### Search with Filters ```python # High-engagement tweets in specific timeframe search_twitter_advanced( query="AI", min_likes=1000, min_retweets=500, since="2024-01-01", until="2024-12-31", verified_only=True, language="en" ) ``` ### Monitor Multiple Accounts ```python # Add multiple KOLs to watch list for username in ["elonmusk", "VitalikButerin", "naval"]: add_twitter_watch( username=username, event_types=["NEW_TWEET", "NEW_FOLLOWER"], remark=f"Tracking {username}" ) ``` ### Track Engagement ```python # Get full engagement picture for a tweet tweet = get_twitter_tweet_by_id(tweet_id="1234567890")
View on GitHub
This SKILL.md is very large, so SkillsMP previews the first section here. View on GitHub