LabscoMCP early access ↗
Ravishka17MCP SERVER

Bluesky MCP

Full Bluesky and AT Protocol access over Streamable HTTP, with credentials passed per request and never stored.

by Ravishka17 ↗Social Media Accounts & PostingCommunity

LABSCO 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_post and repost_post write to the timeline; get_posts, get_likes and get_reposted_by read it back
  • get_timeline, get_feed, get_author_feed and get_thread cover home feed, feed generators, one author and a full conversation
  • search_posts, search_actors and search_actors_typeahead search posts and people
  • get_profile and get_profiles fetch one profile or a batch of up to 25
  • create_bookmark, delete_bookmark and get_bookmarks manage private bookmarks
  • create_session, refresh_session, list_app_passwords and create_app_password handle sessions and credentials
  • create_invite_code, create_invite_codes and get_account_invite_codes run 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