Skip to main content
Glama
Bluesky MCP Server

Bluesky MCP Server

by ffylaktis

Bluesky MCP Server

A Model Context Protocol server that connects to Bluesky and provides tools to interact with the ATProtocol.

You can use this MCP server to bring context from various Bluesky / ATProtocol API endpoints directly into the context window of your LLM based application. For example, you can add this server to Claude Desktop and then use it as a natural language Bluesky client.

Features & Tools

  • Interact with common Bluesky features via natural language (e.g. "Get recent posts from David Roberts")

  • Fetch and analyze feeds ("Find me a feed about Seattle and tell me what people are talking about")

  • Fetch and analyze lists of followers ("What types of accounts does Mark Cuban follow? Give me a detailed report")

  • Use an LLM to write a post and then post it for you 😱 ("Write a haiku about today's weather in my area and post it to bluesky")

  • Search for feeds, posts, and people ("Find posts about the #teslatakedown and give me a summary of recent events")

  • Analyze who follows you? ("Who follows me on Bluesky? Give me a report")

Here's the current list of tools provided:

  • get-pinned-feeds: returns the set of all "pinned" items from the authenticated user's preferences.

  • get-timeline-posts: returns posts from the authenticated user's home timeline

  • get-feed-posts: returns posts from the specified feed

  • get-list-posts: returns posts from the specified list

  • get-user-posts: returns the specified user's posts

  • get-profile: returns the profile details of the specified user

  • get-follows: returns the set of users an account follows

  • get-followers: returns the set of users who follow an account

  • get-liked-posts: returns recent posts liked by the authenticated user

  • get-trends: returns current trending topics on Bluesky with post counts

  • get-post-thread: returns a full conversation thread for a specific post, showing all replies and context

  • convert-url-to-uri: converts a Bluesky web URL to an AT URI format that can be used with other tools

  • search-posts: returns posts for a given query. can specify top or latest

  • search-people: returns people for a given search query

  • search-feeds: returns feeds for a given query

  • like-post: like a post with a specific URI

  • create-post: publish a post

  • follow-user: follow a specific user

Tips:

  • You can ask for post from search, timelines, lists, feeds, or profiles by time range. For example: Summarize posts from my timeline for the last three days" or "Find me the most interesting article people have been talking about this week"

  • Get weird: "What the funniest/most unhinged/weirdest/goofiest post you've seen on my timeline in the last 24 hours?"

  • Learn about yourself: "Analyze my liked posts and tell me what I'm into. Give me 3 interesting facts about what you've found and how it relates to my personality on bluesky" or "Who follows me on bluesky? Give me a comprehensive report."

Related MCP server: bluesky-mcp

Installation

Installing via Smithery

To install Bluesky MCP Server for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @brianellin/bsky-mcp-server --client claude

Installing Manually

First clone this repo, then install dependencies and build the server:

# Install dependencies
pnpm install

# Build the project
pnpm run build

Testing with MCP Inspector

You can test the bluesky tools directly without connecting to an LLM via the amazing MCP Inspector. First make sure you have built the server and then run:

npx @modelcontextprotocol/inspector node build/src/index.js

Navigate to the local URL provided in your terminal, and then set your BLUESKY_IDENTIFIER, BLUESKY_APP_PASSWORD, and BLUESKY_SERVICE_URL environment variables from the panel on the left. Try the get-timeline tool to see the most recent posts from your home timeline.

MCP Client Configuration

Follow the steps to set up MCP with your client of choice. For example, to set up Claude for desktop to connect to Bluesky, add the following to bluesky section to your claude_desktop_config.json:

{
    "mcpServers": {
      "bluesky": {
        "command": "node",
        "args": ["/path/to/bsky-mcp-server/build/src/index.js"],
        "env": {
            "BLUESKY_IDENTIFIER": "your-bluesky-handle",
            "BLUESKY_APP_PASSWORD": "your-app-password",
            "BLUESKY_SERVICE_URL": "https://bsky.social"
          }
      }
    }
  }

For more details about running MCP servers in Claude for desktop, see https://modelcontextprotocol.io/quickstart/user

Creating App Passwords

To use this MCP server, you need to create an app password for your Bluesky account:

  1. Log in to Bluesky

  2. Go to Settings > App Passwords

  3. Create a new app password specifically for this integration

  4. Set the app password using the BLUESKY_APP_PASSWORD environment variable

Security Notes

  • This server stores your session information in memory only and does not share it with the MCP client.

  • The MCP client only has access to the tools, not to your authentication or app password

License

MIT

Available Tools

32 tools
add-to-listB

Add a user to a Bluesky list

Inputs: handle (required), listUri (required).

convert-url-to-uriA

Convert a Bluesky web URL to an AT URI format that can be used with other tools

Inputs: url (required).

create-listA

Create a new list on Bluesky (curate list or moderation list)

Inputs: name (required), purpose (required), description.

create-postB

Create a new post on Bluesky

Inputs: text (required), replyTo.

delete-listB

Delete a list on Bluesky

Inputs: listUri (required).

follow-userA

Follow a user on Bluesky

Inputs: handle (required).

get-conversationsA

List your recent DM conversations on Bluesky

Inputs: limit.

get-dm-messagesB

Get messages from a specific DM conversation on Bluesky

Inputs: convoId (required), limit.

get-feed-postsB

Fetch posts from a specified feed

Inputs: feed (required), type (required), count (required).

get-followersB

Get a list of users that follow a person

Inputs: user (required), limit.

get-followsB

Get a list of users that a person follows

Inputs: user (required), limit.

get-liked-postsA

Get a list of posts that the authenticated user has liked

Inputs: limit.

get-list-postsA

Fetch posts from users in a specified list

Inputs: list (required), type (required), count (required).

get-listsA

Get all lists created by a user on Bluesky

Inputs: handle.

get-my-handle-and-didA

Return the handle and did of the currently authenticated user for this blusesky session. Useful for when someone asks information about themselves using "me" or "my" on bluesky.

Inputs: no named parameters.

get-notificationsA

Get your recent Bluesky notifications (likes, reposts, follows, mentions, replies)

Inputs: limit, filter.

get-pinned-feedsB

Get the authenticated user's pinned feeds and lists.

Inputs: no named parameters.

get-post-likesA

Get information about users who have liked a specific post

Inputs: uri (required), limit.

get-post-threadA

Get a full conversation thread for a specific post, showing replies and context

Inputs: uri (required).

get-profileB

Get a user's profile from Bluesky

Inputs: handle (required).

get-timeline-postsA

Fetch your home timeline from Bluesky, which includes posts from all of the people you follow in reverse chronological order

Inputs: type (required), count (required).

get-user-postsB

Fetch posts from a specific user

Inputs: type (required), user (required), count (required).

like-postB

Like a post on Bluesky

Inputs: uri (required).

list-resourcesA

List all available MCP resources with their descriptions

Inputs: no named parameters.

remove-from-listB

Remove a user from a Bluesky list

Inputs: handle (required), listUri (required).

repostB

Repost (retweet) a post on Bluesky

Inputs: uri (required).

search-feedsB

Search for custom feeds on Bluesky

Inputs: query (required), limit.

search-peopleB

Search for users/actors on Bluesky

Inputs: query (required), limit.

search-postsB

Search for posts on Bluesky

Inputs: query (required), sort, limit.

send-dmB

Send a direct message to a user on Bluesky

Inputs: text (required), handle (required).

unfollow-userB

Unfollow a user on Bluesky

Inputs: handle (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 32 tools

    Disambiguation4/5

    Most tools target distinct resources and actions, but a few pairs like get-post-likes vs. get-liked-posts or get-user-posts vs. get-timeline-posts could cause confusion. Descriptions largely clarify these differences, making the set mostly unambiguous.

    Naming Consistency5/5

    All tool names follow a consistent hyphenated verb-noun pattern (e.g., get-profile, create-post, unfollow-user), making the set predictable and easy to navigate. No mixed conventions or vague verbs are present.

    Tool Count2/5

    With 32 tools, the server exceeds the 25+ threshold for too many tools. While the broad scope of Bluesky interactions justifies many operations, the count feels heavy and several retrieval tools could potentially be consolidated.

    Completeness3/5

    Core social interactions are covered (posts, follows, likes, lists, DMs), but notable gaps exist: no post deletion, no profile editing, and no block/mute functionality. These omissions could hinder common workflows.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      D
      maintenance
      A Model Context Protocol server that enables AI assistants to interact with Bluesky/ATProtocol, providing authentication, timeline access, post creation, and social features like likes and follows.
      21
      51
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      A Model Context Protocol (MCP) server for Bluesky that can post on your behalf by using the AT Protocol.
      11 npm
      7
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Enables LLMs to interact with the AT Protocol ecosystem, including Bluesky, through natural language. Supports public data access without authentication and full write operations with authentication.
      51
      136 npm
      10
      MIT
    • A
      license
      Not graded
      quality
      Not graded
      maintenance
      MCP server for Bluesky/AT Protocol enabling LLM clients and agents to authenticate, search, post, like, follow, and manage chat on Bluesky.
      3 npm
      MIT