Bluesky MCP server: let Claude or any agent post to your Bluesky account
https://postwire.io/api/mcp to Claude, ChatGPT, Cursor or any MCP client as a remote MCP server, paste your Bluesky handle and an app password once, and the agent publishes a post of up to 300 characters, with up to 4 images, using post_to_social, or queues it with schedule_post. It takes about a minute and has no sign-in screen: an app password is a separate password you create in Bluesky's settings and can delete at any time, so your real password never leaves Bluesky. The free plan includes Bluesky and the MCP server: 1 business, 20 posts a month, 5 AI drafts a day, 2 networks per post, no card.Links, @mentions and #hashtags in the post are clickable, every image carries its own alt text, and generate_posts writes the Bluesky version the way people there write: conversational, not a brand announcement.
Updated . Written from PostWire's own code; vendor prices read on Oct 10, 2026. Live networks: TikTok, Instagram, YouTube, LinkedIn (personal profiles), Facebook Pages, Bluesky, Mastodon, Telegram, Discord, and X on paid plans.
Set it up and post, step by step
- Add PostWire's MCP server to your agent
In Claude, open PostWire in the connector directory and press Connect. Anywhere else, add the remote server
https://postwire.io/api/mcp(Streamable HTTP; OAuth sign-in or an API key) — in Claude Code:claude mcp add --transport http postwire https://postwire.io/api/mcp. Cursor, VS Code, Windsurf, Codex and Gemini CLI configs: MCP client configs. - Sign in with your email
The first time the agent uses a PostWire tool, a sign-in window asks for your email and a 6-digit code; that also creates a free PostWire account if you have none. No password and no card. Agents that cannot do OAuth send an API key instead (dashboard → API & MCP → Copy key).
- Create an app password in Bluesky
In Bluesky, open Settings → Privacy and security → App passwords, add one and copy it. It is not your account password, and deleting it in Bluesky disconnects PostWire.
- Connect Bluesky
Ask "connect my Bluesky".
create_connect_linkgives you a one-hour link; choose Bluesky there and paste your full handle (name.bsky.social) and the app password. PostWire signs in to Bluesky with them before saving, so a wrong handle is refused on that page — and if you pasted your account password and Bluesky asked for an email code, the page tells you to use an app password instead. - Let PostWire write the post
"Write a Bluesky post about our open-source release, and the LinkedIn post for it."
generate_postsreturns one draft per network and publishes nothing. Bluesky's draft stays within 300 characters, sounds like a person taking part in the conversation, carries one or two specific hashtags and no hard sell; LinkedIn's is a longer first-person post. - Publish, or schedule it
After you approve, the agent calls
post_to_social(orschedule_postwith arun_attime, or"next_slot"). One image goes inphoto_url; up to four go inmedia, each with its ownalt:{ "name": "post_to_social", "arguments": { "platforms": ["bluesky"], "text": "we open-sourced the scheduler today. issues and rude feedback welcome https://example.com/repo #opensource", "media": [ { "url": "https://postwire.io/m/…/calendar.jpg", "alt": "A weekly calendar with six posts queued" }, { "url": "https://postwire.io/m/…/terminal.jpg", "alt": "Terminal output of the install command" } ] } } - Open the post, and see how it did
The result carries the post's link (
https://bsky.app/profile/…/post/…).get_post_statusreturns it again later, andget_post_performanceranks your Bluesky posts against your own median by likes, reposts and replies, the numbers Bluesky reports.list_scheduled_postsshows what is queued andcancel_scheduled_postremoves one before it goes out.
An image from your phone or laptop gets there through create_upload_link: a 24-hour page where you pick the file, then get_uploaded_file returns its media_url. The same post from your own code: POST /api/post with {"platforms": ["bluesky"], "text": "…"} and your API key, or the PostWire node in n8n. Prefer to set it up by hand first? Open the dashboard, connect the account under Accounts and copy your key under API & MCP.
Bluesky MCP servers for posting, side by side
Each vendor's endpoint, sign-in and price, read on its own Bluesky MCP or plans page on Oct 10, 2026.
| Server | Endpoint | Sign-in | Free to start | Cheapest paid plan | Writes the post |
|---|---|---|---|---|---|
| PostWire | https://postwire.io/api/mcp | OAuth 2.1 or API key | Free plan: 1 business, 20 posts a month, 5 AI drafts a day, 2 networks per post, no card | $9/mo — 3 businesses, every network in each post | Yes — generate_posts writes the Bluesky post and each other network's from one idea |
| Upload-Post | mcp.upload-post.com/mcp | OAuth or API key | Free plan: 2 profiles, 10 uploads a month | $24/mo — 5 profiles | Not listed |
| Blotato | mcp.blotato.com/mcp | OAuth (Claude) or API key header | No — its 7-day trial excludes API and MCP access | $29/mo flat | Not listed |
Checked on Oct 10, 2026 (2026-10-10) on each vendor's own pricing or docs page, linked in the first column and below. Monthly billing in USD unless noted. "Not listed" means we could not find it on their page, not that it is missing.
Where PostWire is ahead
- The post is written for Bluesky, and so is every other network's version:
generate_poststurns one idea into a conversational Bluesky post, a LinkedIn post and a Mastodon post in one call. - 20 posts a month on the free plan, without a card. Upload-Post's free plan has 10 uploads a month; Blotato's MCP access is not part of its 7-day trial.
- No password and no key to start: the sign-in window asks for your email and a 6-digit code, and that creates the free account too.
- The app password is tested before it is saved, and again later: a wrong handle or a deleted app password is caught when you connect, not when a scheduled post was due.
- Bluesky plus nine more networks in the same call: TikTok, Instagram, YouTube, LinkedIn, Facebook Pages, Mastodon, Telegram, Discord, and X on paid plans.
- Upload-Post — Bluesky MCP server (endpoint, tools): www.upload-post.com/mcp/bluesky/
- Upload-Post — LinkedIn MCP server (the same server: "Sign in with OAuth or paste an Upload-Post API key"): www.upload-post.com/mcp/linkedin/
- Upload-Post plans (llms-full.txt: Free 2 profiles, 10 uploads a month; Basic $24, 5 profiles): www.upload-post.com/llms-full.txt
- Blotato — Bluesky MCP server (endpoint, sign-in, $29/mo flat, API and MCP access not part of the 7-day trial): www.blotato.com/mcp/bluesky
Bluesky's rules the agent works within
- 300 characters per post.
generate_postswrites within that. - Clickable links, mentions and hashtags: on Bluesky a link is only clickable when the post marks where it starts and ends. PostWire marks every link, @mention and #hashtag, so none of them arrives as dead text.
- Up to 4 images, each with alt text, shown at their own proportions. A fifth image is refused with a message that says so.
- 1 MB per image: Bluesky takes images up to 1,000,000 bytes. A larger one is refused with its size and the fix (export it as a JPEG under 1 MB), and no Bluesky post is created.
- Images, not video: PostWire posts text and images to Bluesky. Video goes out through the networks that take it, such as TikTok, YouTube or Telegram.
- Dead app passwords are noticed: PostWire's connection check signs in with the stored app password; if you deleted it in Bluesky, the dashboard asks you to reconnect before a scheduled post is due.
Source: PostWire's Bluesky publisher, read Oct 10, 2026. More on the API itself: Does Bluesky have an API?
What it does not do
PostWire publishes and schedules your own posts on Bluesky. It does not read your timeline or notifications, reply, like, repost, follow or send direct messages, and it does not post video to Bluesky.
Questions people ask
Is there an MCP server that posts to Bluesky?
Yes. PostWire's hosted MCP server (https://postwire.io/api/mcp) publishes text and image posts to your Bluesky account from Claude, ChatGPT, Cursor or any MCP client, and can schedule them. It is in Claude's connector directory.
Do I give it my Bluesky password?
No. You create an app password in Bluesky (Settings → Privacy and security → App passwords) and paste that with your handle. It is separate from your account password and you can delete it in Bluesky at any time, which disconnects PostWire.
Do I need to write AT Protocol code or run a server?
No. The MCP server is hosted, and PostWire builds the post record for you, including the markers that make links, mentions and hashtags clickable.
Can it post images with alt text?
Yes. Up to 4 images per post, each with its own alt text, passed in media as { url, alt }. Each image can be up to 1 MB, Bluesky's limit; a larger one is refused with a clear message that gives its size.
Can it post video or threads to Bluesky?
PostWire posts single text and image posts to Bluesky, not video or threads. Video goes out through TikTok, YouTube, Instagram, Facebook Pages and Telegram.
Can the agent schedule Bluesky posts?
Yes. schedule_post takes a run_at time up to 365 days ahead, or "next_slot" for your next free queue slot. The free plan keeps 3 posts waiting in the queue at once.
How much does it cost?
The free plan includes Bluesky and the MCP server: 1 business, 20 posts a month, 5 AI drafts a day, 2 networks per post, no card. Starter is $9 a month for 3 businesses and Pro $29 for 10, with every network in each post; paid plans have a 14-day refund.
Try it on one business, free.
The free plan is 1 business, 20 posts a month, 5 AI drafts a day (about 20 a month) and 2 networks per post — every network connects free, no card, no time limit. Paid plans start at $9 a month and have a 14-day refund; Pro can be tried free for 7 days, with a card at checkout and nothing charged that day.