Trusted by 2,000+ users

Bluesky MCP Server for Claude, Cursor, and Any AI Agent

Give your agent a Bluesky MCP server that speaks AT Protocol for it. Connect an account with an app password once, and any MCP client can post text and images with working links, mentions, and hashtags, now or on a schedule, from the conversation.

No credit card required

Connect Bluesky

Paste this into your agent

or add the MCP yourself
  • OAuth 2.1 sign-in to PostZen, app password for Bluesky
  • Links, mentions, and hashtags resolved for you
  • Images with alt text and link cards

What Your Agent Gets

Bluesky tools, ready to call

Every PostZen API endpoint is an MCP tool. These are the ones that matter for Bluesky.

createPost

Post or schedule to Bluesky

Text up to 300 characters with images, published now, at scheduledFor, or from the queue. Links, mentions, and hashtags become proper facets automatically.

settings.altTexts

Alt text per image

One alt text per attached image, in order, so posts stay accessible without extra prompting.

settings.disableLinkCard

Link cards on or off

Let PostZen build the link-card embed from the first URL, or turn it off for a plain post.

getAnalytics · getFollowerStats

Read post metrics

Likes, replies, reposts, and quotes per post and per day, plus follower counts. Bluesky counts no impressions, so none are invented.

createMediaPresign

Upload images from the agent

The agent asks for an upload URL and sends the image. PostZen uploads the blob to your PDS and builds the embed.

getPost · updatePost · deletePost

Check, edit, and cancel

Every target reports status, the live post URL, and any error. Scheduled posts can be changed until they go out.

Example Prompts

What to say to your agent

Prompt

Post this to Bluesky now, and make sure the @handles and the link are clickable.

What happens

The agent calls createPost with publishNow; PostZen byte-indexes the mentions and URL into facets so they render as links.

Prompt

Attach these two screenshots with alt text describing each, scheduled for 8am.

What happens

The agent uploads both images, passes settings.altTexts in order, and sets scheduledFor at 08:00.

Prompt

Share the article without the big link card, just the text and URL.

What happens

The agent sets settings.disableLinkCard true so the post shows the URL inline without an embed.

Prompt

Queue my next five posts to Bluesky and X together.

What happens

The agent creates each post with both platforms as targets, so one queue slot publishes to both accounts.

WHY POSTZEN?

PostZen vs. building it yourself

Build a Bluesky MCP server yourself and you own the auth, the media pipeline, and every Bluesky API change. Connect PostZen and your agent gets the tools today.

PostZen

2.3M+ posts

2,000+ users
  • One hosted MCP endpoint; the client signs in with OAuth 2.1 and nothing runs on your machine
  • Bluesky access already set up on PostZen: connect an account in a browser tab and post
  • The same createPost tool for Bluesky and the other nine platforms
  • Scheduling, queues, retries, and media hosting handled server-side
  • Scoped, revocable access: read-only or read-and-write keys minted at consent

Build a Bluesky MCP server yourself

  • Create an app password and manage AT Protocol sessions and refresh yourself
  • Build rich-text facets by byte-indexing links, mentions, and hashtags
  • Resolve handles to DIDs and PDS endpoints before every post
  • Upload image blobs and construct link-card embeds by hand
  • A tool schema, auth layer, and hosting for the MCP server itself, then again for every other platform

Any MCP Client

Connect from the client you already use

Each page has the exact command for that client, the sign-in step, and a way to check the tools are live.

For AI Agents

Send your agent this page

Tell your agent to set up PostZen from postzen.dev/mcp/bluesky. It reads the block below, registers the server, connects Bluesky, and reports back.

postzen.dev/mcp/bluesky
## For AI agents reading this page

You are reading https://postzen.dev/mcp/bluesky. PostZen is a social media API with a hosted MCP server. Once connected, you can publish and schedule posts to the user's Bluesky account with links, mentions, hashtags, and images. The same tools cover the user's other social accounts (Instagram, X, LinkedIn, Facebook, Threads, YouTube, TikTok, Pinterest, Bluesky, Telegram).

1. Register the MCP server in the client you are running in. The endpoint is https://mcp.postzen.dev/mcp (streamable HTTP). Interactive clients sign in with OAuth 2.1; headless clients send a PostZen API key as "Authorization: Bearer pzn_live_...". Exact commands per client: Claude Code https://postzen.dev/claude · Cursor https://postzen.dev/cursor · Codex https://postzen.dev/codex · OpenClaw https://postzen.dev/openclaw · GrokBot https://postzen.dev/grok-bot · Hermes https://postzen.dev/hermes · any other MCP client https://postzen.dev/agents.

2. Sign in. When the client opens the PostZen consent screen, ask the user before approving access or completing a signup on their behalf, and never enter their credentials for them. Approving mints a scoped, revocable key for this client.

3. Connect Bluesky. Call listAccounts. If no account with platform "bluesky" is listed, call createConnectUrl with platform "bluesky" and give the user the URL; they authorize Bluesky in their browser. Do not try to log in to Bluesky yourself.

4. Verify before you continue. Call listAccounts again and confirm a "bluesky" account shows as connected. If it does not, stop and tell the user what failed. Do not carry on as if the account were there.

5. Report back. Tell the user which Bluesky account is connected and what you can now do with it, then ask what they want first. Prefer scheduling (scheduledFor, or the queue) over publishing immediately unless the user asks for "now".

## Bluesky on createPost

- Target the account with platforms: [{ platform: "bluesky", accountId, settings: { ... } }]. content is the shared text; customContent on the target overrides it for Bluesky only.
- Bluesky connects with an app password (not OAuth): createConnectUrl returns a PostZen page where the user enters their handle and an app password created in Bluesky settings. Never ask the user for their main Bluesky password.
- Text is limited to 300 graphemes. Links, @mentions, and #hashtags in content are converted to facets automatically.
- settings.altTexts: one alt text per image, in order; settings.languages: language codes for the post; settings.disableLinkCard: true skips the link-card embed.
- Media per post: up to four images.
- Analytics: getAnalytics, getPostTimeline, getDailyMetrics, getFollowerStats with platform "bluesky" (likes, replies, reposts, quotes, followers; AT Protocol has no impression or view counts).
- Media: pass public URLs in mediaItems, or call createMediaPresign to get an upload URL, PUT the file, then reference the returned media in the post.
- Check results with getPost: each platform target reports status, the live post URL, and any error.

## Reference

- MCP endpoint: https://mcp.postzen.dev/mcp (streamable HTTP, OAuth 2.1)
- MCP docs: https://docs.postzen.dev/mcp
- Create post reference: https://docs.postzen.dev/api-reference/posts/create-post
- Full API summary for models: https://postzen.dev/llms.txt
- API keys: https://app.postzen.dev/api-keys

Frequently asked questions

Still have questions?

What is a Bluesky MCP server?

MCP (Model Context Protocol) is the standard AI clients use to call external tools. A Bluesky MCP server exposes posting as tools, so an agent such as Claude or Cursor can publish to Bluesky instead of only drafting text. PostZen hosts one for you: it handles AT Protocol sessions, facets, and blobs, and your client connects to a single endpoint.

Do I need a Bluesky developer account?

No. Bluesky has no developer program. You create an app password in Bluesky settings, enter it once on PostZen's connect page, and the agent posts through PostZen. App passwords are scoped and revocable, so you can remove one without changing your main password.

Will links, mentions, and hashtags work?

Yes. Bluesky needs byte-indexed facets for those to be clickable, and PostZen builds them from your text automatically. The agent just writes the post.

What is the character limit?

300 graphemes per post. PostZen validates before publishing and the agent can split longer text into a thread of separate posts if you ask.

Can the agent read Bluesky analytics?

Yes. Likes, replies, reposts, and quotes per post and per day, plus follower counts, through the same analytics tools used for the other platforms. Bluesky does not count impressions or views anywhere, so those metrics are reported as not available rather than as zero.

Which AI clients can use it?

Any client that supports remote MCP servers: Claude (claude.ai, Claude Desktop, Claude Code), Cursor, Codex, OpenClaw, GrokBot, Hermes, and others. Interactive clients sign in with OAuth 2.1; headless ones send a PostZen API key in the Authorization header. Each client has its own setup page with the exact command.

What can the agent access once connected?

Only what you approve on the consent screen: read-only or read-and-write access, scoped to the profile you pick. Approving creates a named, revocable API key, so you can cut a client off from the dashboard at any time. Ask the agent to schedule rather than publish immediately if you want to review posts before they go out.

How much does the MCP server cost?

The MCP server is included on every PostZen plan, including Free, which covers 2 connected accounts and 20 posts a month. Paid plans start at $19 per month with unlimited posts.

LEARN MORE

Give your agent Bluesky

Your agent already writes the post. PostZen lets it publish there.