create_postLABSCO SUMMARY
The credential model is why you would pick this one.
Because the server is stateless and takes the handle and app password on each request, one deployment can serve several people without any of them handing it a stored secret — and revoking is just deleting the app password. Worth knowing before you connect it: the catalog reaches past posting into account control, with delete_account and deactivate_account sitting in the same list as get_timeline.
What it is
A TypeScript MCP server for Bluesky that you deploy to Vercel yourself and reach over Streamable HTTP. It covers the ordinary social surface — posting, timelines, threads, search, profiles, bookmarks — and also the account-management side of a PDS, including sessions, invite codes and app passwords. Reads mostly work unauthenticated; anything that writes needs credentials.
What you get
create_post,like_postandrepost_postwrite to the timeline;get_posts,get_likesandget_reposted_byread it backget_timeline,get_feed,get_author_feedandget_threadcover home feed, feed generators, one author and a full conversationsearch_posts,search_actorsandsearch_actors_typeaheadsearch posts and peopleget_profileandget_profilesfetch one profile or a batch of up to 25create_bookmark,delete_bookmarkandget_bookmarksmanage private bookmarkscreate_session,refresh_session,list_app_passwordsandcreate_app_passwordhandle sessions and credentialscreate_invite_code,create_invite_codesandget_account_invite_codesrun invites for a PDS
Requirements
Deploy it yourself — clone and run vercel, then point your client at https://your-app.vercel.app/mcp. Authentication is a Bluesky handle plus an app password created under Settings, sent per request as headers: either X-BLUESKY-IDENTIFIER and X-BLUESKY-PASSWORD separately, X-BLUESKY-CREDENTIALS as one combined value, or an Authorization: Bearer header. Nothing is written to Vercel env vars or disk; credentials live in memory for the length of the request.
Setup effort
One command plus credentials — claude mcp add --transport http bluesky https://<YOUR_APP>.vercel.app/mcp --header "X-BLUESKY-IDENTIFIER: <YOUR_NAME>.bsky.social" --header "X-BLUESKY-PASSWORD: <YOUR_BLUESKY_PASSWORD>", then supply credentials
USE CASES
Posting and replying without leaving the assistant
Write a post of up to 300 characters, optionally as a reply, then like or repost what comes back.
Catching up on a conversation you were tagged in
Pull the full thread with parents and replies, then look up who the participants are.
Researching a topic or a person on the network
Search posts by keyword, author, language or mention, and find accounts by name or handle.
Keeping a private reading list
Save posts as private bookmarks and list them back later.
41 tools
Listed in project docs. Your client may show a different list.
get_postsget_likesget_reposted_bylike_postrepost_postget_timelineget_feedget_author_feedget_threadget_profileget_profilesget_suggestionssearch_postssearch_actorssearch_actors_typeaheadget_preferencesupdate_emailadmin_send_emailconfirm_emailcreate_accountcreate_app_passwordcreate_invite_codecreate_invite_codescreate_sessiondeactivate_accountdelete_accountdelete_sessiondescribe_serverget_account_invite_codesget_service_authget_sessionlist_app_passwordsrefresh_sessioncreate_bookmarkdelete_bookmarkget_bookmarksbegin_age_assuranceget_age_assurance_configget_age_assurance_statetest_connectivityBEFORE YOU INSTALL
What to know first
Tools you get
41 tools named in the project's documentation.
Requires
- A client that can reach a remote MCP server over HTTP
- Your Bluesky handle and an app password (Settings → App Passwords), sent with each request as headers; posting, timelines, bookmarks and account tools need them, while search, profiles, threads and feeds work without
- A Vercel account and the vercel CLI, to deploy your own copy
INSTALLATION
Connect your client
Server setup
Setup
git clone https://github.com/Ravishka17/Bluesky-MCP.git
cd Bluesky-MCP
vercelclaude mcp add
claude mcp add --transport http bluesky https://<YOUR_APP>.vercel.app/mcp --header "X-BLUESKY-IDENTIFIER: <YOUR_NAME>.bsky.social" --header "X-BLUESKY-PASSWORD: <YOUR_BLUESKY_PASSWORD>"MCP Clients
Claude Code
claude mcp add --transport http bluesky https://<YOUR_APP>.vercel.app/mcp --header "X-BLUESKY-IDENTIFIER: <YOUR_NAME>.bsky.social" --header "X-BLUESKY-PASSWORD: <YOUR_BLUESKY_PASSWORD>"<YOUR_APP> is your Vercel deployment, and <YOUR_NAME>.bsky.social is your handle, and <YOUR_BLUESKY_PASSWORD> is an app password from Bluesky Settings → App Passwords. Reads work without the headers; posting, likes, bookmarks and account tools need them.
Mistral Vibe
[[mcp_servers]]
name = "bluesky"
transport = "streamable-http"
url = "https://<YOUR_APP>.vercel.app/mcp"
api_key_env = "BLUESKY_CREDENTIALS"
api_key_header = "X-BLUESKY-CREDENTIALS"
api_key_format = "{}"Then set BLUESKY_CREDENTIALS=<YOUR_NAME>.bsky.social:<YOUR_BLUESKY_PASSWORD> in ~/.vibe/.env — your handle and an app password joined by one colon.
Hermes Agent
mcp_servers:
bluesky:
url: https://<YOUR_APP>.vercel.app/mcp
headers:
X-BLUESKY-CREDENTIALS: "${BLUESKY_CREDENTIALS}"Set BLUESKY_CREDENTIALS=<YOUR_NAME>.bsky.social:<YOUR_BLUESKY_PASSWORD> in your shell or .env file — your handle and an app password joined by one colon.