streamable-httpMITupdated 1mo ago
Model Context Protocol server for publishing to social networks โ secured by OAuth.
What can you do with 1Social?
1Social MCP
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.
- Server URL:
https://mcp.1social.dev/mcp - Transport: Streamable HTTP
- Auth: OAuth 2.1 with PKCE and Dynamic Client Registration
- Landing & setup: 1social.dev/mcp
Install
1Social 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:
{
"mcpServers": {
"1social": {
"url": "https://mcp.1social.dev/mcp"
}
}
}
One-click install: Cursor ยท VS Code ยท Claude connectors ยท ChatGPT connectors
CLI clients (Claude Code, Gemini CLI, Codex CLI) and manual snippets: see Supported clients.
Quick start
- Create a 1Social account at 1social.dev.
- Connect your social accounts in the browser. This step needs a browser and cannot be done from a chat โ each network's OAuth consent screen has to be signed for by you.
- Add the server to your client with the one-click link, the CLI command, or the JSON/TOML snippet above.
- Authorize with OAuth when your client opens the consent screen.
- Ask your assistant to post.
What you can do from chat
- ๐ค Publish and schedule โ one message goes to every network you pick, now or up to 30 days ahead.
- ๐ Check before it goes โ per-network character counts, whether an image is required, whether a multi-part post will thread natively or be joined, and what it costs against your quota.
- ๐งพ Read the receipt โ what reached each network, what failed and why, and what genuinely could not be determined.
- โป๏ธ Fix what broke โ retry one network without touching the ones that already went out.
- ๐ผ Attach media โ post an image or video from the chat. Instagram and TikTok refuse posts without one.
- โ๏ธ Edit, cancel, delete โ change a scheduled post, unschedule it, or delete it from the networks that allow deletion.
Tool surface
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.
It tells you when it doesn't know
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.
What deletion can and cannot do
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.
Plans & access
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.
Supported clients
- Claude (web & desktop) โ Settings โ Connectors โ Add custom connector
- ChatGPT โ Settings โ Apps & Connectors โ Advanced โ Developer mode โ Add custom connector
- Cursor โ one-click deeplink, or
~/.cursor/mcp.json - VS Code โ one-click deeplink, or
.vscode/mcp.json - Claude Code (CLI) โ
claude mcp add --transport http 1social https://mcp.1social.dev/mcp - Gemini CLI โ
gemini mcp add --transport http 1social https://mcp.1social.dev/mcp - Codex CLI โ
codex mcp add 1social --url https://mcp.1social.dev/mcp - Generic HTTP MCP client โ point it at the URL and let it complete OAuth discovery
Full per-client instructions: docs/setup.md.
Cursor plugin
This repository is also a Cursor plugin. It contributes one MCP server (1social) and no rules, skills, agents, or hooks.
.cursor-plugin/plugin.json โ plugin manifest
mcp.json โ the MCP server it contributes
assets/logo.svg โ plugin logo
There is nothing to configure. The server advertises OAuth 2.1 metadata, Cursor registers itself dynamically, and the consent screen opens on first use.
Example prompts
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.
Authorization
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.
Troubleshooting
Common connection, OAuth, and tool-call errors: docs/troubleshooting.md.
Marketplace listings
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.
Project links
- Product: 1social.dev
- MCP page: 1social.dev/mcp
- MCP server:
https://mcp.1social.dev/mcp - OAuth issuer:
https://1social.dev - Issues: github.com/sultanlive/1social-mcp/issues
License
MIT โ 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.
Install
Add 1Social to your client. Pick the one you use.
claude mcp add --transport http 1social https://mcp.1social.dev/mcpcodex mcp add 1social --url https://mcp.1social.dev/mcp{
"mcpServers": {
"1social": {
"url": "https://mcp.1social.dev/mcp"
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
{
"servers": {
"1social": {
"type": "http",
"url": "https://mcp.1social.dev/mcp"
}
}
}Add to `.vscode/mcp.json` in your workspace.
{
"mcpServers": {
"1social": {
"url": "https://mcp.1social.dev/mcp"
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"1social": {
"serverUrl": "https://mcp.1social.dev/mcp"
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
10 tools
1Social exposes 10 tools to a connected agent.
- 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](#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?
Score
77 / 100
Good
- Documentation25/25
- Maintenance19/25
- Trust13/20
- Capability8/15
- Install experience12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 28 days ago
- Has a release history
- Repository is not archived
- Licensed MIT
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 10 tool(s) documented
- Provides prompt templates
- Provides resources
- 6 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint โ no local install
Version history
| Versions | Published |
|---|---|
| 0.1.0Latest | Aug 3, 2026 |