A side-by-side look at the Uluesky and Xdataapi: X (Twitter) data MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Uluesky for social media work as a local process; choose Xdataapi: X (Twitter) data for social media over a hosted endpoint. You can also run both side by side in one mcpServers block.
get_profile, get_posts, search_posts.XDATAAPI_KEY.get_user, get_users, get_user_tweets.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Social Media | Social Media |
| Quality signal | 60/100 · Good | 57/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Remote HTTP/SSE |
| Auth | Not declared | Not declared |
| Pricing | Not declared | Not declared |
| Required env vars | None listed | XDATAAPI_KEY |
| Verified owner | Community listing | Community listing |
| GitHub stars | 0 | 1 |
| Directory activity | 1 views 0 installs 0 upvotes | 1 views 0 installs 0 upvotes |
| Tools | 8 | 14 |
| Full listing | View Uluesky | View Xdataapi: X (Twitter) data |
get_profileLook up a Bluesky user's profile by handle (e.g., "alice.bsky.social"). Returns display name, bio, follower/following counts, avatar, and verification status.get_postsFetch recent posts from a Bluesky user's timeline. Returns post text, timestamps, likes, reposts, reply counts, and threaded replies.search_postsSearch Bluesky posts by keyword or phrase. Returns matching posts with author handles, timestamps, engagement metrics, and content.Requires bsky_handle and bsky_app_password in the gateway URL query params.get_feedGet posts from a Bluesky feed (e.g., "discover", "what's-hot"). Returns recent posts with authors, timestamps, and engagement counts.get_followersGet a user's followers on Bluesky by handle. Returns follower profiles including handles, display names, bios, and follower counts.get_followsGet accounts a Bluesky user follows by handle. Returns followed profiles with handles, display names, bios, and descriptions.get_threadFetch a post thread by URI. Returns the parent post and all replies in conversation order with timestamps, authors, and engagement data.resolve_handleConvert a Bluesky handle to its DID (decentralized identifier). Returns the DID for programmatic account lookups.get_userProfile of one X user by handle. 1 credit.get_usersProfiles of up to 100 X users by handle in one call. 1 credit per profile found.get_user_tweetsLatest tweets of a user, newest first. 1 credit per tweet.get_followersFollowers of a user. 0.1 credit per profile. Not every account tier can read this; a 403 is free.get_follower_idsNumeric ids of the followers of a user, no profiles. 0.02 credit per id. Same page as get_followers, so a page read there is a cache hit here. A 403 is free.get_followingAccounts a user follows. 0.1 credit per profile. Not every account tier can read this; a 403 is free.search_tweetsX advanced search. q takes the x.com operators. 1 credit per tweet or profile. product Latest is always available; Top may answer 403 (free).get_tweetOne tweet by numeric id, with its author. 1 credit.get_tweetsUp to 100 tweets by numeric id in one call. 1 credit per tweet found.get_threadA tweet with its thread and replies; the focal tweet comes first. 1 credit per tweet returned.get_repliesDirect replies to a tweet, one page. 1 credit per reply.get_quotesTweets that quote a tweet, newest first. 1 credit per tweet.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"uluesky": {
"command": "npx",
"args": [
"-y",
"@pipeworx/mcp-bluesky"
]
}
}
}
{
"mcpServers": {
"xdataapi-x-twitter-data-3": {
"url": "https://api.xdataapi.io/mcp"
}
}
}