Claude Code Social Media

Post to social media from Claude Code — MCP server + CLI skill

Give Claude Code and Claude Desktop direct access to bundle.social via the official MCP server, or wire the CLI in as a skill. Either way, Claude can draft, schedule and analyze social posts across 14+ platforms.

Last updated: May 2026

API key authScheduled publishing14 platforms
Quick start
API request
1// In Claude Code or Claude Desktop, add the MCP server:2// ~/.claude/mcp_servers.json3{4  "bundlesocial": {5    "command": "npx",6    "args": ["-y", "bundlesocial-mcp"],7    "env": { "BUNDLESOCIAL_API_KEY": "sk_live_..." }8  }9}1011// Then talk to Claude:12// "Draft a tweet thread + LinkedIn post about today's release notes,13//  schedule the thread for 9am tomorrow and the LinkedIn post for 10am."14// → Claude calls list_social_accounts, create_post, schedule_post tools.1516// Prefer the CLI as a skill?  bundlesocial-cli ships with a SKILL.md:17// $ npx skills add bundleglobal/bundlesocial-cli

Pasting copy into the Twitter web UI every release

Claude can write a great release post — but it can't actually publish without a tool surface that handles auth, scheduling and per-platform payloads.
Hand-rolling Claude tools per platform means rebuilding OAuth, media uploads and rate-limit handling inside your harness.
Skills and MCP both want a stable, well-documented integration — not a half-finished script that breaks when X changes a field.

What bundle.social handles

Drop the bundle.social MCP server into Claude Desktop or Claude Code once; every connected social account becomes a tool Claude can call.
Prefer the skill model? bundlesocial-cli ships with a SKILL.md — install with npx skills add bundleglobal/bundlesocial-cli.
Same auth, same posts, same teams across MCP, CLI and SDK — switch transports without losing state.

Two ways Claude can post — pick one

MCP server for Claude Desktop / Claude Code as a stdio tool surface. CLI as a skill when Claude shells out. Both backed by the same bundle.social API and team scoping.

Workflow

How it works

Connect accounts once, then create and schedule posts with channel-specific fields from one API.

01

Pick MCP or skill

Claude Desktop / Claude Code → MCP server (recommended for stable tool calls). Claude shelling out → CLI as a skill.

02

Add to Claude config

MCP: drop the JSON into ~/.claude/mcp_servers.json. Skill: npx skills add bundleglobal/bundlesocial-cli and Claude discovers it.

03

Ask Claude to publish

“Draft a release post for X + LinkedIn and schedule both for tomorrow 9am.” Claude calls the tools, returns post IDs.

Capabilities

What Claude can do with bundle.social

The tool surface is wide enough that Claude can run the full publishing loop — draft, upload, schedule, check status.

Multi-platform drafting + scheduling

Claude can create one post targeting many platforms with per-platform payloads (X text-only, LinkedIn long-form, TikTok video + privacy).

Media uploads from URL or path

Claude calls upload_media (MCP) or media:upload (CLI), receives an upload ID, and references it from the post.

Account & team discovery

list_social_accounts / accounts:list lets Claude check what it can post to before drafting — fewer apologies, fewer wrong-account posts.

Status & analytics

Claude can check whether a scheduled post ran, fetch analytics on what's already published, and use it as context for the next draft.

Developer example

Add bundle.social to Claude Code / Claude Desktop

Examples use bundle.social's public API shape: API key authentication, a post date, selected social account types, and platform-specific data.

TypeScript
API request
1// In Claude Code or Claude Desktop, add the MCP server:2// ~/.claude/mcp_servers.json3{4  "bundlesocial": {5    "command": "npx",6    "args": ["-y", "bundlesocial-mcp"],7    "env": { "BUNDLESOCIAL_API_KEY": "sk_live_..." }8  }9}1011// Then talk to Claude:12// "Draft a tweet thread + LinkedIn post about today's release notes,13//  schedule the thread for 9am tomorrow and the LinkedIn post for 10am."14// → Claude calls list_social_accounts, create_post, schedule_post tools.1516// Prefer the CLI as a skill?  bundlesocial-cli ships with a SKILL.md:17// $ npx skills add bundleglobal/bundlesocial-cli

Supported content

MCP tool callsCLI skill invocationsMulti-platform schedulingMedia uploadsAnalytics queries

Honest limitations

  • MCP path requires Claude Desktop or Claude Code (both ship MCP support). Older clients need the CLI skill path instead.
  • Skill discovery via SKILL.md depends on your skill runtime — Anthropic's Skills tooling is the supported path.
  • Per-platform rules still apply — Claude will get validation errors if it produces an invalid TikTok privacy enum, etc.

Guarantees

Developer-first infrastructure

2% error rate

We handle the platform edge cases, media processing, and rate limits so your requests succeed.

Verbose errors

When native APIs fail, we return human-readable error messages and actionable recovery steps.

Flat pricing

No per-post counting. Predictable pricing for teams managing many users, workspaces, and connected accounts.

Same-day support

Direct access to the engineers building the API. We respond to technical issues the same day. Sometimes the same hour. Test us c;

Resources

Technical guides & documentation

FAQ

Questions developers ask before building

Does this work with both Claude Code and Claude Desktop?

Yes. Both speak MCP. The mcp_servers.json snippet is the same; just the file location differs (~/.claude/mcp_servers.json for Claude Code, the Claude Desktop config dir for Desktop).

Should I use MCP or the CLI-as-skill?

MCP is the cleaner integration when the client supports it (Claude Desktop, Claude Code). The CLI-as-skill is the better fit when Claude is shelling out anyway (CI runners, headless agents).

Can Claude post without my approval?

By default Claude follows your client's tool-call confirmation flow. You can also set create_post to default to DRAFT status, so posts queue up for human review before going live.

Where do API keys go?

Into the MCP server's env (BUNDLESOCIAL_API_KEY) — Claude itself never sees the key. Same model for the CLI: env var or --api-key flag.