Skip to main content
Glama
sandraschi
by sandraschi

bluesky-mcp

Bluesky / AT Proto client — compose, timelines, and a human-approved outbox for promotion drafts from fleet-public-relations-mcp.

v0.1.1 · Ports 10760 / 10761 · Sibling of discord-mcp · ActivityPub sibling mastodon-mcp

FastMCP 3.4+ · full portmanteau (reply/repost/media/webhooks) · SOTA webapp · dry-run default · Windows CI + local just ci

Bluesky = AT Proto. Not Mastodon / ActivityPub.


Principle

Agents draft. Humans approve. Nothing posts without outbox approve → publish.

Tone: FLEET_PROMOTION.md.


Related MCP server: Bluesky MCP Server

Features

  • Human-approved outbox + fleet-PR REST handoff

  • Full bluesky_social ops: post, reply, Repost, media, timelines, notifications, webhooks

  • Dark SOTA webapp: Dashboard, Inbox, Outbox, Compose (AI assist), Chat, Skills, Tools, Settings, Help

  • Dry-run default; inbound webhooks with shared secret

  • Ruff + Biome + pytest gate; Windows-only CI workflow


Stack

Layer

Tech

Backend

FastAPI + FastMCP 3.4 (uvicorn, pydantic v2, httpx)

Webapp

React 18 + Vite + TailwindCSS + Lucide + Framer Motion + Zustand + TanStack Query

Storage

SQLite outbox + webhook event log

Desktop

Tauri 2 (NSIS installer, embedded PyInstaller backend)

Quality

ruff, biome, pyright, pytest + pytest-cov, Playwright e2e


Quick start

cd D:\Dev\repos\bluesky-mcp
Copy-Item .env.example .env
# Edit BLUESKY_INSTANCE + BLUESKY_ACCESS_TOKEN
.\start.bat

Dashboard: http://127.0.0.1:10761 · MCP: http://127.0.0.1:10760/mcp

Claude Desktop / Cursor MCP config (stdio):

{
  "mcpServers": {
    "bluesky-mcp": {
      "command": "uv",
      "args": ["run", "--directory", "D:\\Dev\\repos\\bluesky-mcp", "python", "-m", "bluesky_mcp"]
    }
  }
}

Documentation

Doc

Contents

INSTALL.md

Install paths

docs/ONBOARDING.md

First-timer: account creation, app passwords, download links, verify

docs/FEDIVERSE.md

Bluesky / AT Proto vs ActivityPub — where this server sits

docs/CONFIGURATION.md

Env vars

docs/TOOLS.md

MCP + REST reference

docs/DEVELOPMENT.md

Lint, just ci, packaging

docs/TROUBLESHOOTING.md

Symptom → fix

PRD.md

Product requirements + roadmap

llms.txt / llms-full.txt

LLM index + full corpus

CHANGELOG.md

Release history


Ports

Service

Port

Backend

10760

Webapp

10761


MCP tools

Portmanteau bluesky_social — all operations implemented (see docs/TOOLS.md). Also bluesky_help, bluesky_shutdown, show_outbox_card.


Quality

just ci

Private repos: GitHub Actions stay disabled at account level (billing). Workflow file is still required; run just ci locally.


License

MIT (see LICENSE if present)

Available Tools

4 tools
bluesky_helpC

Help for bluesky-mcp.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
portsNo
toolsNo
serverNo
dry_runNo
versionNo
outbox_flowNo

TDQS

C2.1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are empty, so the description must disclose behavior. It only says 'Help for bluesky-mcp,' which does not communicate what happens (e.g., returns a help message, lists tools, side effects, safety profile). No behavioral traits are disclosed, making the tool a black box.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The entire description is a seven-word fragment. While it is short, it is under-specified rather than concise; it reads as a placeholder. It does not earn its place because it conveys almost no information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no params) and the presence of an output schema, the description still fails to provide enough context. It does not state what help is offered, whether it is safe/read-only, or how it relates to sibling tools. The agent cannot confidently invoke this tool based on this description alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The schema description coverage is trivially 100%, and the description correctly avoids adding parameter details that don't exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Help for bluesky-mcp' is essentially a restatement of the tool name without specifying a clear action or what the help contains. It lacks a specific verb and resource, and does not differentiate from siblings beyond being a generic help entry. This is closer to a tautology than a purposeful description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to call this tool versus alternatives like bluesky_shutdown or bluesky_social_tool. There is no mention of context, prerequisites, or exclusions. The agent receives no decision-relevant usage information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bluesky_shutdownA

Signal graceful shutdown (process exit left to host).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNo
successNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds a valuable behavioral detail beyond the tool name: 'process exit left to host.' This clarifies that the tool only signals shutdown and does not terminate the process itself. With no annotations, this disclosure is meaningful, though it does not address other potential side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the action ('Signal graceful shutdown') and adds the key qualifier about process exit. Every word earns its place, with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, no annotations), the description is nearly complete. It covers the essential behavior, and the output schema presumably handles return values. The lack of usage guidance is minor but not a significant gap for such a straightforward tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and an empty schema. The description naturally provides no parameter information, but the zero-parameter baseline of 4 is appropriate since there is nothing to explain.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as signaling a graceful shutdown, with a specific verb ('signal') and resource ('graceful shutdown'). It is distinct from sibling tools like bluesky_help or show_outbox_card, which serve different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (call when you want a graceful shutdown) but provides no explicit context, prerequisites, or alternatives. There is no stated when-to-use or when-not-to-use guidance, making it acceptable but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bluesky_social_toolC

Portmanteau: post/timeline/outbox_* — fleet drafts use outbox_enqueue → approve → publish.

Return Format

{success, message?, error?, …} dialogic dict from bluesky_social.

Examples

  • operation=outbox_list

  • operation=notifications

  • operation=outbox_enqueue with status_text

ParametersJSON Schema
NameRequiredDescriptionDefault
cidNo
reasonNo
dry_runNo
payloadNo
timelineNohome
operationYes
outbox_idNo
status_idNo
media_pathNo
visibilityNopublic
status_textNo
in_reply_to_idNo
media_descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are empty, so the description carries the full burden of behavioral disclosure. It only provides a vague return format ('dialogic dict') and a few examples, without addressing side effects, authorization, rate limits, or error handling. The 'fleet drafts' note is a workflow clue but doesn't reveal operational traits like whether operations are destructive or read-only.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short but poorly structured; the 'Portmanteau' opener is cryptic and wastes the front-loaded position. The return format section is clear but too generic, and the examples are helpful yet insufficient. The overall content is concise in volume but not in usefulness, with jargon like 'dialogic dict' adding confusion.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 13 parameters, no annotations, and only a vague return format, the description is far from complete. It doesn't enumerate possible operation values, explain output schema, or cover use scenarios beyond the outbox example. The tool's complexity demands a much more detailed description to be usable by an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for parameter semantics. It only references operation and status_text in examples, leaving 11 parameters unexplained. While names like media_path and visibility are intuitive, their constraints, defaults, or interactions with operations are not described, and payload is entirely opaque.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Portmanteau: post/timeline/outbox_*' which hints at a multi-operation dispatcher but never states a clear verb+resource purpose. The examples show operation=outbox_list, notifications, and outbox_enqueue, but no overarching statement like 'perform Bluesky social actions'. This leaves the tool's core function ambiguous and fails to distinguish it from siblings other than by implication.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage hint is 'fleet drafts use outbox_enqueue → approve → publish', which describes a specific workflow but doesn't explain when to choose this tool over alternatives like bluesky_help or show_outbox_card. There are no decision criteria for selecting operations, and no exclusions or alternatives are mentioned. The guidance is minimal and not actionable for an agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

show_outbox_cardB

Rich Prefab card summarizing pending outbox drafts.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With empty annotations, the description carries full responsibility for behavioral disclosure. It only states that the tool 'summarizes pending outbox drafts', but it does not indicate whether this is a read-only operation, if it has side effects, or what the output format is. The lack of behavioral details is a significant gap for a tool that likely consumes UI resources.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that gets to the point. However, the phrase 'Rich Prefab card' is not self-explanatory and adds slight ambiguity, preventing a perfect score. Still, it is efficiently worded with no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema, the description is minimal and fails to provide context about what 'pending outbox drafts' are, what 'Rich Prefab card' means, or when the tool should be used. Given its simplicity, some context might be assumed, but the description alone is insufficient for an AI agent to fully understand the tool's role in a larger workflow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, which earns a baseline score of 4. The input schema is empty, so there are no parameter details to explain. The description does not need to add parameter semantics, and the 100% schema coverage is vacuous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Rich Prefab card summarizing pending outbox drafts' clearly states the tool's function: to display a card summarizing pending outbox content. It uses a strong verb ('summarizing') and a specific resource ('pending outbox drafts'), distinguishing it from sibling tools like bluesky_help and bluesky_shutdown. The term 'Prefab' is somewhat jargon, but the core purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidance is provided. The description does not explain when to use this tool versus alternatives, nor does it mention any prerequisites or contexts. Users are left to infer that this is for viewing outbox drafts, but there is no explicit direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 4 tool updatesv0.1.1
    • First observedbluesky_help
    • First observedbluesky_shutdown
    • First observedbluesky_social_tool
    • First observedshow_outbox_card

TDQS

C2.7/5.0

Scored across 4 tools

Disambiguation3/5

bluesky_help and bluesky_shutdown are clearly distinct, but show_outbox_card overlaps with the outbox operations in bluesky_social_tool. The portmanteau nature of bluesky_social_tool also makes it a catch-all, increasing selection difficulty.

Naming Consistency2/5

Naming is inconsistent: bluesky_help and bluesky_shutdown share a prefix, but show_outbox_card uses a verb_noun pattern without the prefix, and bluesky_social_tool is a descriptive noun. No uniform verb or prefix convention is applied.

Tool Count4/5

4 tools is within the typical 3-15 range, though the portmanteau tool feels overloaded by encapsulating many operations. Still, the count is reasonable for the server's apparent scope.

Completeness4/5

The tool set covers help, shutdown, outbox management (enqueue/approve/publish/list), and social interactions (post/timeline/notifications). Minor gaps like explicit post deletion or profile updates may exist, but the core workflow appears covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • 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.
    12
    7
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for Bluesky/AT Protocol that enables AI agents to search, post, reply, like, and follow.
    15
    16
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables search, reading, and posting to Bluesky from any MCP client; features 11 tools (5 read, 6 write) with gated writes requiring explicit confirmation to prevent accidental publishing.
    11
    11
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sandraschi/bluesky-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server