posterly MCP server: Instagram, TikTok, LinkedIn and 15 more platforms
Schedule and publish social posts on 18 platforms from any MCP client.
posterly is a social media scheduler with a hosted MCP server. Connect Claude, ChatGPT, Cursor, Windsurf, Cline, or any MCP client and your assistant can list connected accounts, check a post with validate_post, schedule it with create_post, upload media, write captions, read analytics, reply to comments, and manage Google Business reviews. It covers Instagram, Facebook, TikTok, X, LinkedIn, YouTube, Pinterest, Threads, Google Business, Telegram, Bluesky, Discord, Slack, Mastodon, Dev.to, Hashnode, WordPress, and Lemmy. Use the hosted endpoint (https://www.poster.ly/api/mcp, OAuth sign-in) or run it locally with npx -y posterly-mcp-server@latest.
People looking for an Instagram MCP, a TikTok MCP, or a LinkedIn MCP can use this same server. It is one connection for all 18 platforms, not a separate server per network.
The installable package is posterly-mcp-server on npm. Source code: github.com/awpthorp/posterly-mcp-server. The official MCP Registry name is io.github.awpthorp/posterly. Smithery lists the same hosted endpoint: smithery.ai/servers/awpthorp/posterly.
What you need
- Node.js 20 or newer, for the local
npx server.
- A posterly plan with API and MCP access for authenticated tools.
- New accounts that start from poster.ly/mcp pay for a plan and API and MCP in one Stripe subscription, charged immediately. That path has no free trial. Starter + API is $10/month.
- The add-on on its own is $3/month on Starter and Pro, $5/month on Power, and $29/month on Agency. Base plans start at $7/month. Combined monthly totals are $10, $18, $30, and $78.
- After checkout, create a key at Dashboard, API and MCP if your client needs one. Hosted OAuth connectors sign in instead of pasting a key.
User-created API keys: Starter 1, Pro 2, Power 3, Agency 4.
Hosted endpoint
POST https://www.poster.ly/api/mcp
Use the www host. https://poster.ly/api/mcp redirects, and some connector clients do not follow that redirect.
- Wire format: JSON-RPC 2.0 over one HTTPS POST. The response is a JSON body. This v1 endpoint does not open an SSE stream.
GET https://www.poster.ly/api/mcp returns a short JSON capability hint and does not require auth.
- Auth: OAuth sign-in for Claude and ChatGPT custom connectors, or
Authorization: Bearer pst_live_... where the client accepts a header.
- Docs: poster.ly/mcp and MCP server docs.
- Server card: /.well-known/mcp/server-card.json.
curl -s https://www.poster.ly/api/mcp \
-H "Authorization: Bearer pst_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Hosted tool calls are JSON only. Chat attachments never reach posterly. On ChatGPT web, Claude.ai, and Gemini web, ask for create_media_drop, open the returned https://www.poster.ly/drop/... link, then call list_media. Clients that can upload bytes (Cursor, Claude Code, Codex) can use create_signed_upload and PUT the file to the returned upload_url. Small images can use upload_media.
Create-post calls are limited to 100 requests per hour per key. create_posts_batch takes up to 25 posts in one confirmed request. Media writes and reads have separate limits.
create_post does not go out until you agree and the call includes confirmation (confirm: true). Comment replies, direct messages, Google review replies, and similar public or destructive actions return a preview first, then need the same fields again with that preview_id.
Source
This repository is a read-only mirror, published from the posterly monorepo. Issues are welcome. Pull requests are not merged here: an accepted change is reapplied in the posterly monorepo and arrives in the next sync.
git clone https://github.com/awpthorp/posterly-mcp-server.git
Clients should use the npx block below, or the hosted URL. The clone is the public source, not a second install path.
Local server
{
"mcpServers": {
"posterly": {
"command": "npx",
"args": ["-y", "posterly-mcp-server@latest"],
"env": {
"POSTERLY_API_KEY": "pst_live_your_key_here"
}
}
}
}
Leave out POSTERLY_API_KEY only when an assistant should start signup first. These public tools work before a key exists: whoami with view set to status, get_agent_signup_info, start_signup, and get_signup_session. They are on the local npm server, not on the hosted endpoint.
The local package exposes the full tool catalog. The hosted endpoint exposes the same catalog without the three signup tools. The current list is on poster.ly/mcp.
Claude
Custom connector (Claude chat, and the same connector in the Claude desktop app):
- Open Settings, Connectors, Add custom connector. On claude.ai you can also start from the chat +, Connectors, Add connector, Add custom connector.
- Name it posterly.
- Paste
https://www.poster.ly/api/mcp.
- Choose Connect, sign in to posterly, and press Allow.
- Leave the advanced OAuth client ID and secret empty.
Claude Desktop local config file: claude_desktop_config.json, using the npx block above.
Claude Code, hosted:
claude mcp add --transport http posterly https://www.poster.ly/api/mcp
Claude Code, local stdio:
claude mcp add --scope user -e POSTERLY_API_KEY=pst_live_your_key_here posterly -- npx -y posterly-mcp-server@latest
Setup pages: poster.ly/claude.
ChatGPT
ChatGPT web talks to the hosted endpoint only. Do not paste the npx config into ChatGPT.
- On chatgpt.com open Settings, Security and login, and turn on Developer mode.
- Open chatgpt.com/plugins, choose +, Create app, Create MCP App.
- Set the server URL to
https://www.poster.ly/api/mcp and choose OAuth.
- Sign in to posterly.
Write actions (create_post and other writes) need ChatGPT Business, Enterprise, or Edu. Pro custom MCP is read and fetch only. Custom MCP is web only. There is no mobile MCP.
This is a custom app you add yourself. It is not a one-click directory listing.
Setup pages: poster.ly/chatgpt.
Cursor
Project file .cursor/mcp.json, or global file ~/.cursor/mcp.json. You can also add a server from Settings, MCP.
Local stdio (Cursor Desktop and the local CLI), the npx block above. That path can read a real file_path.
Hosted HTTP, for Cloud Agents, which cannot see a local npx process:
{
"mcpServers": {
"posterly": {
"url": "https://www.poster.ly/api/mcp",
"headers": {
"Authorization": "Bearer pst_live_your_key_here"
}
}
}
}
OAuth is also supported on Cursor. SSE is not the posterly v1 transport.
Setup pages: poster.ly/cursor.
Windsurf, Cline, and Codex
Windsurf uses the same npx JSON in ~/.codeium/windsurf/mcp_config.json.
Cline, Continue, and Zed use that same JSON shape in their MCP settings.
Codex (the terminal, the IDE extension, and the Codex tab in the ChatGPT desktop app) shares ~/.codex/config.toml:
codex mcp add posterly --env POSTERLY_API_KEY=pst_live_your_key_here -- npx -y posterly-mcp-server@latest
codex mcp add posterly --url https://www.poster.ly/api/mcp
codex mcp list
The --url command is the hosted endpoint documented on the ChatGPT page. The posterly server answers with a single JSON-RPC body, not an SSE stream.
Tools sit in sets: core (accounts, posting, media, schedule, analytics, support), creative (AI image and video generation, post suggestions), inbox (comments and DMs), google_business (reviews, media, profile audit), admin (API keys, webhooks, workspace members, publishing pause), and billing (subscription changes). Signup tools are local only.
Real tool names include whoami, list_accounts, list_platforms, validate_post, create_post, create_posts_batch, list_posts, update_post, find_available_slot, upload_media, generate_captions, generate_image, list_analytics, list_comments, manage_comment, list_google_business_reviews, manage_google_business_review, and audit_google_business_profile.
The full list, with views and actions, is on poster.ly/mcp.
Analytics (list_analytics) currently supports Instagram, X, Facebook Pages, LinkedIn, Google Business Profile, Pinterest, YouTube, and Threads.
Links
Licence
MIT. See LICENSE.