Last updated: September 2026
Is there an MCP server that posts to both X and Bluesky?
Yes. The OpenTweet MCP server is hosted at https://mcp.opentweet.io/mcp, exposes 43 tools, and its posting tools take a platforms array. One tool call with ["x","bluesky"] publishes a native post on each network.
Worth saying up front, because this is where similar tools compete on a number: this is not a post-everywhere server. It goes deep on X and also publishes to Bluesky and to your LinkedIn profile. If you need a long list of networks, this is the wrong answer and you should keep looking.
The setup and the call
One URL and one bearer key. Streamable HTTP, so nothing runs on your machine.
{
"mcpServers": {
"opentweet": {
"type": "streamable-http",
"url": "https://mcp.opentweet.io/mcp",
"headers": { "Authorization": "Bearer ot_your_key" }
}
}
}After that the agent has posting, scheduling and threading tools, and the network choice is a parameter on the tool rather than a separate server per network.
// Publish natively to both networks in one call.
opentweet_create_tweet({
text: "Shipped cross-posting today.",
platforms: ["x", "bluesky"],
publish_now: true
})
// Where would a post with no platforms value actually land?
opentweet_list_platforms({})Add "linkedin" to the same array and the post also goes to your personal LinkedIn profile, connected once in Settings with no LinkedIn developer app. LinkedIn has no threads, so a thread lands there as one post, and anything over 3,000 characters is skipped on LinkedIn with a reason. Details in getting Claude Code to post to LinkedIn.
The one rule an agent has to be told
Leaving platforms out does not mean X. A post with no platforms value follows the account auto cross-post setting, and when that setting is on it goes to every connected network. Explicit values are always honoured exactly and never expanded.
Tell the agent to pass platforms explicitly
An agent that has been quietly publishing X-only posts by omitting the field will start sending them to every connected network, Bluesky and LinkedIn included, the moment auto cross-post is turned on. A single line in your project instructions saying to always pass an explicit platforms array removes the ambiguity for good, andopentweet_list_platforms lets the agent check rather than assume.A post that overruns a network is skipped there with the reason recorded, and still publishes wherever it fits. Bluesky allows 300 characters against 280 on X, or 25,000 on Premium, so the skip usually runs in the direction people do not expect.
Against the official X MCP server
The obvious comparison, since it is the other server people connect for this.
The official server is still the right pick for first-party trust and for full-archive search. It just cannot reach Bluesky or LinkedIn, and cannot schedule. More on that in can the official X MCP server schedule posts.
What the Bluesky side needs from you
Nothing in the MCP config. Bluesky issues no API keys and has no developer program, so there is no second credential to source. You connect the account once over atproto OAuth in the dashboard, meaning you sign in on the server that holds your account and OpenTweet keeps a scoped grant rather than a password. Accounts on a server you run yourself work the same way, because OAuth resolves the server from your handle.
What Bluesky does not give you is analytics. Nothing reads engagement back from Bluesky, so the analytics tools on the server are X-only, and video does not publish to Bluesky at all. Those are real gaps and the tools will say so rather than pretend.
7-day free trial. Cancel anytime.
Frequently asked questions
Is there an MCP server that posts to both X and Bluesky?
Yes. The OpenTweet MCP server, hosted at https://mcp.opentweet.io/mcp, exposes 43 tools, and the posting tools take a platforms array. Passing ["x","bluesky"] publishes a native post on each network from one tool call. The same array takes "linkedin" too, which posts to your personal LinkedIn profile.
Does the official X MCP server post to Bluesky?
No. It posts to X only, it bills X pay-per-use at roughly $0.015 a post and $0.20 when the post carries a link, and it needs your own X developer app. It also has no scheduling tool, so an agent using it publishes immediately or not at all.
How does the agent know where a post will actually go?
It calls opentweet_list_platforms. That returns the connected accounts on each network, the auto cross-post setting, and the per-network limits. Worth doing before the first post of a session, because a post with no platforms value follows the account setting rather than defaulting to X.
Does the Bluesky connection need an API key in the MCP setup?
No. Bluesky issues no API keys and has no developer program. You connect the account once over atproto OAuth in the dashboard, and the MCP server posts through that grant. The only credential in your MCP config is your own ot_ key.
Is this a multi-platform posting server?
It posts to three networks, X, Bluesky and LinkedIn, and stops there. OpenTweet is X-native: the depth is in X analytics, evergreen recycling, threads, Articles and DM campaigns. Bluesky and LinkedIn are publishing and scheduling for the posts you are already writing, with no analytics read back. LinkedIn posts go to your personal profile, not a Company Page. Threads from Meta, Instagram and TikTok are not supported.
What does it cost to run?
Flat $19.99 a month on Pro, with the MCP server and the REST API included on every plan. There is no per-post fee and no X developer account. Link posts are included on Pro (1 a day), Advanced ($29, 10 a day) and Agency ($49, 20 a day), with link credits as an add-on. The Bluesky side costs nothing regardless, because publishing to Bluesky is free.
Keep exploring
One server, depth on X, and a Bluesky mirror in the same tool call.
Getting Claude Code to post to Bluesky
The one command to add the server, and the instruction that makes it stick.
The REST version
One POST with a platforms array, and the gotcha about leaving it out.
Is there a Bluesky API key?
No, and nothing to apply for. What the agent is actually authorized against.
Can the official X MCP schedule?
It can post but not schedule, and it bills pay-per-use.
Posting to LinkedIn from Claude Code
The same server with "linkedin" in the platforms array, and what LinkedIn does with threads.
API or MCP for an agent?
When a REST call is the right tool and when an MCP server is.
Cross-posting to X and Bluesky
One draft, a native post on each network, and a per-network result you can read.
Paste one URL, post to both
43 tools at mcp.opentweet.io/mcp. No X developer account, no Bluesky key, flat $19.99 a month.
7-day free trial. Cancel anytime.