Publish, schedule and verify social posts across seven networks from your AI assistant.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
Model Context Protocol server for publishing to social networks β secured by OAuth.
1Social MCP lets an AI assistant post for you. Connect Claude, ChatGPT, Cursor, VS Code, or a CLI client to 1Social, then publish, schedule, check and fix posts across Instagram, TikTok, X, LinkedIn, Bluesky, Threads and Facebook in natural language.
https://mcp.1social.dev/mcp1Social MCP is a remote, OAuth-secured server. There is no package to install and no API key to paste. Add this to your client's MCP config:
One-click install: Cursor Β· VS Code Β· Claude connectors Β· ChatGPT connectors
CLI clients (Claude Code, Gemini CLI, Codex CLI) and manual snippets: see Supported clients.
Ten tools, deliberately few. Publish-now and schedule are the same tool (scheduledAt: null means now), and reading one post is list_posts with a postId rather than a second tool β a smaller set is one a model picks from accurately.
| Tool | What it does |
|---|---|
list_accounts | Connected accounts, what each network accepts, current plan, remaining quota. Call it first β channel ids come from here. |
preview_post | Free dry run: per-network limits, media requirements, threading behaviour, quota cost. Nothing is published. |
publish_post | Publishes now, or schedules up to 30 days ahead. Returns a per-network receipt. Takes an idempotencyKey. |
list_posts | Posts with their delivery outcome per network β delivered, failed with a reason, cancelled, or unknown β plus stored engagement metrics. |
update_post | Edits a post that has not been sent yet. The networks have no edit endpoint, so it withdraws and replaces. |
cancel_post | Unschedules a post and releases the quota it reserved. |
delete_post | Deletes from 1Social and attempts removal from each network. See What deletion can and cannot do. |
retry_delivery | Retries one failed network, leaving the successful ones alone. Refused for permanent failures. |
upload_media | Pre-signed upload target, for clients that cannot attach a file to a tool call. |
confirm_delivery | Records your answer about a delivery whose outcome was unknown: is the post live on that network or not? |
The live set is what the server says it is β run tools/list against https://mcp.1social.dev/mcp for the exact, current shapes.
A post to four networks can land on three. Every tool result is per network: the failure is named in words you can act on, and a delivery whose outcome genuinely could not be determined comes back as unknown rather than as success.
unknown is not a dead end. You look at the network, tell the assistant what you see, and confirm_delivery settles it β confirming it is live commits the quota, confirming it is not marks the delivery failed so retry_delivery can pick it up. The assistant is not allowed to guess this on your behalf.
delete_post always removes the post from 1Social. Removal from the network depends on the network:
| Network | Remote delete |
|---|---|
| X, LinkedIn, Bluesky, Facebook | β works |
| Instagram, TikTok, Threads | β no working delete API β the post stays live and only you can take it down |
On a multi-part thread only the first post is removed; the rest stay live as orphans. The tool reports what actually came down, per network, and the assistant is instructed to tell you that rather than confirm a clean delete.
Publishing costs us money per delivery, so the quota is metered in deliveries, not posts β one post to four networks is four deliveries. A delivery to X costs more units than the others because X charges per post (pricing has the current numbers).
| No subscription | Solo | Pro | |
|---|---|---|---|
| Price | $0 | $19/mo | $39/mo |
| Monthly deliveries | 30 units | 600 units | 1,600 units |
| All seven networks | β | β | β |
| Delivery receipts & retries | β | β | β |
A new account has a small free monthly allowance β enough to publish, watch the receipt come back, retry something, and schedule a post β so the tools work before you pay for anything. A failed delivery does not count against the quota when the failure was ours or the network's.
You never have to leave the chat to pay. A tool call that runs out of quota comes back with a checkout link for your account.
~/.cursor/mcp.json.vscode/mcp.jsonclaude mcp add --transport http 1social https://mcp.1social.dev/mcpgemini mcp add --transport http 1social https://mcp.1social.dev/mcpcodex mcp add 1social --url https://mcp.1social.dev/mcpFull per-client instructions: docs/setup.md.
This repository is also a Cursor plugin. It contributes one MCP server (1social) and no rules, skills, agents, or hooks.
There is nothing to configure. The server advertises OAuth 2.1 metadata, Cursor registers itself dynamically, and the consent screen opens on first use.
Cross-post with a check first
"Draft a post about our new pricing page for LinkedIn, X and Bluesky, check it fits, then publish."
β preview_post reports the per-network counts and cost; publish_post returns a receipt per network.
Schedule with an image
"Post this screenshot to Instagram and Threads on Friday at 9am."
β The attached file goes in media; Instagram would have refused the post without it.
Find out what actually happened
"Did yesterday's post make it everywhere?"
β list_posts returns the receipt β including any delivery still marked unknown.
Repair, not repost
"LinkedIn failed. Retry just LinkedIn."
β retry_delivery touches one delivery and leaves the successful networks alone.
More: docs/examples.md.
OAuth 2.1 with PKCE, per the MCP authorization spec. The authorization server is https://1social.dev; it supports Dynamic Client Registration, so compatible clients set themselves up and you only see the consent screen. Scopes granted are openid, profile, email and offline_access.
The assistant never sees your social credentials. Your network tokens stay in 1Social; the assistant holds only a token for your 1Social account, and you can revoke it at any time from the web app.
Flow details: docs/oauth.md.
Common connection, OAuth, and tool-call errors: docs/troubleshooting.md.
This repo is the source for two listings:
| Registry | Record | Manifest |
|---|---|---|
| MCP Registry | dev.1social/1social | server.json β published by CI on a v* tag, authenticated by a DNS TXT record on 1social.dev |
| LobeHub | sultanlive-1social-mcp | lhm.plugin.json β published with npx -y @lobehub/market-cli plugin publish --dir . |
The tools array in lhm.plugin.json is generated from the TOOLS table in the server's own contract (packages/contract/src/mcp/tools.ts in the private repo), the same table that answers tools/list. It is a snapshot: when the tool surface changes, regenerate it rather than hand-editing, or the listing will describe a server that no longer exists.
Note that the two registries carry different version numbers on purpose β server.json is at 0.1.0, while LobeHub assigned 1.0.0 at import time and a version cannot be renamed.
https://mcp.1social.dev/mcphttps://1social.devMIT β see LICENSE.
Built by @sultanlive. 1Social is a hosted publishing service; this repo is documentation for its public MCP server. Server source is not open.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/1social)<a href="https://allmcps.com/mcp/1social"><img src="https://allmcps.com/api/badge/1social?style=directory" alt="1Social on AllMCPs" /></a>