Command Palette

Search for a command to run...

UnylyUnyly
Browse all

AT Protocol

FreeNot checked

Browses public AT Protocol network data including repository metadata, records, blobs, and search without requiring authentication.

GitHubEmbed

About

Browses public AT Protocol network data including repository metadata, records, blobs, and search without requiring authentication.

README

An MCP server for reading public data from the AT Protocol network without authentication.

Operates at the abstract repo/collection/record level rather than exposing Bluesky-specific APIs, so it works with any data stored on any AT Protocol PDS. Also includes Bluesky search as a convenience.

Tools

Tool Description
resolve_handle Resolve an AT Protocol handle to its DID
describe_repo Get repository metadata: handle, DID, DID document, and available collections
list_records List records in a collection with pagination and reverse ordering
get_record Fetch a single record by repo, collection NSID, and record key
get_blob Fetch a blob by repo and CID — returns images as inline MCP image content
search_posts Full-text search for posts (via Bluesky AppView)
search_actors Search for users by name or handle (via Bluesky AppView)

How it works

The server resolves each identity's PDS dynamically through the AT Protocol identity layer, then sends XRPC requests directly to that PDS. This means it correctly handles users on any PDS, not just those hosted by Bluesky.

Client ──MCP──▶ atproto-mcp
                    │
                    ├── resolve identity ──▶ slingshot.microcosm.blue
                    │       (handle/DID → PDS URL)
                    │
                    ├── repo operations ──▶ user's actual PDS
                    │       (describeRepo, listRecords, getRecord, getBlob)
                    │
                    └── search ──▶ public.api.bsky.app
                            (searchPosts, searchActors)

Building

Requires Rust 1.85+ (edition 2024).

cargo build --release

The binary is at target/release/atproto-mcp.

Usage

The server communicates over stdio using the Model Context Protocol. Add it to your MCP client configuration:

{
  "mcpServers": {
    "atproto": {
      "command": "/path/to/atproto-mcp"
    }
  }
}

Examples

Browse a user's collections:

Call describe_repo with {"repo": "karashiiro.moe"} to see all collections in their repository.

Read posts:

Call list_records with {"repo": "alice.bsky.social", "collection": "app.bsky.feed.post", "limit": 10} to list their recent posts.

Fetch a specific record:

Call get_record with {"repo": "alice.bsky.social", "collection": "app.bsky.actor.profile", "rkey": "self"} to read their profile record.

Fetch an image:

Find an image CID from a post record's embed, then call get_blob with {"repo": "alice.bsky.social", "cid": "bafkrei..."}.

Dependencies

  • rmcp — Rust MCP SDK
  • jacquard — AT Protocol client SDK
  • slingshot — Identity resolution service (for PDS discovery)

from github.com/karashiiro/atproto-mcp

Installing AT Protocol

This server has no published package — it is built from source. Open the repository and follow its README.

▸ github.com/karashiiro/atproto-mcp

FAQ

Is AT Protocol MCP free?

Yes, AT Protocol MCP is free — one-click install via Unyly at no cost.

Does AT Protocol need an API key?

No, AT Protocol runs without API keys or environment variables.

Is AT Protocol hosted or self-hosted?

Self-hosted: the server runs locally on your machine via the install command above.

How do I install AT Protocol in Claude Desktop, Claude Code or Cursor?

Open AT Protocol on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare AT Protocol with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All development MCPs