Automation14 min readMar 25, 2026

MCP for Social Media: How AI Agents Publish Content

Model Context Protocol (MCP) lets AI agents call real tools — file systems, databases, APIs — without copy-pasting. CodivUpload exposes an MCP server so Claude, Cursor, or any MCP-compatible agent can publish to 10 social platforms in one natural language instruction.

What is MCP?

Model Context Protocol is an open standard created by Anthropic that defines how AI models communicate with external tools. Instead of an agent writing code and executing it, MCP lets the agent call pre-defined tools directly — the protocol handles the transport, schema validation, and response formatting.

Think of it like this: before MCP, giving an AI agent access to your database meant it would write SQL, you'd review it, run it, paste the results back. With MCP, the agent calls a query_database tool directly and gets structured results back in the same context window.

Key distinction: MCP tools are not the same as function calling. MCP servers are persistent processes — the tools are defined by the server, not by the model. Any MCP-compatible client (Claude, Cursor, Windsurf, etc.) can connect to the same server and call the same tools.

Why MCP changes social media publishing

The typical publishing workflow requires context-switching: you write content in one tool, export it, log into a scheduling tool, fill in forms, choose platforms, publish. Every step is manual and disconnected.

With an MCP connection to CodivUpload, publishing becomes a side effect of work you're already doing in your AI context:

Before MCP

Write post → copy text → open dashboard → paste → select platforms → fill overrides → publish

With MCP

"Post this to TikTok and Instagram with Reels format"

Before MCP

Deploy app → open social tools → write announcement → publish manually

With MCP

Deploy script triggers MCP tool → announcement published automatically

Setting up CodivUpload MCP in 30 seconds

Install the codivupload-mcp package via npx. Add it to your MCP client's config with your API key:

claude_desktop_config.json / .cursor/mcp.json
{
  "mcpServers": {
    "codivupload": {
      "command": "npx",
      "args": ["-y", "codivupload-mcp"],
      "env": {
        "CODIVUPLOAD_API_KEY": "cdv_your_api_key"
      }
    }
  }
}

Get your API key from Dashboard → Settings → API Keys. The same key that works for REST calls works for MCP.

Available MCP tools

The CodivUpload MCP server exposes four tools. The agent sees their schemas and knows which parameters to pass based on natural language context.

publish_post

Publish to 1–12 platforms in one call. Accepts all API parameters including per-platform overrides.

profile_nameplatforms[]post_typemedia_urls[]descriptionscheduled_date

list_profiles

Returns all connected profiles with their platform connections and quota status.

get_post_status

Checks delivery status for a previously submitted post by post ID.

post_id

schedule_post

Same as publish_post with a required scheduled_date field. Queues for future delivery.

scheduled_date (UTC ISO 8601)...all publish_post params

What MCP Tools Does CodivUpload Expose?

The CodivUpload MCP server exposes five tools. Each one maps to a specific API capability, but the agent handles parameter formatting, validation, and error recovery automatically. Here is the full reference:

When an MCP client connects, it receives these tool schemas. The agent reads the parameter types, required fields, and descriptions — then maps your natural language instruction to the correct tool call without you writing a single line of JSON.

publish_post

tool

Create and publish content to one or more platforms simultaneously. Supports per-platform caption overrides, privacy settings, media types, and scheduling.

Parameters

profile_namestringrequiredTarget profile name
platformsstring[]requiredPlatform list: twitter, instagram, tiktok, youtube, linkedin, facebook, threads, bluesky, pinterest
post_typeenumrequiredpost | reel | story | short
descriptionstringrequiredPost caption / body text
media_urlsstring[]CDN URLs for images or video
tiktok_privacy_levelnumber0 = public, 1 = friends, 2 = private
instagram_media_typeenumREELS | STORIES | IMAGE

schedule_post

tool

Identical to publish_post but queues delivery for a future date/time. Posts sit in the queue until the scheduled moment, then dispatch through the same pipeline.

Parameters

scheduled_dateISO 8601requiredUTC datetime for delivery, e.g. 2026-04-02T14:00:00Z
...publish_post paramsrequiredAll publish_post parameters apply

get_posts

tool

List recent posts with delivery status, platform breakdown, and timestamps. Filter by status (queued, published, failed) or date range.

Parameters

profile_namestringFilter to a specific profile
statusenumqueued | published | failed
limitnumberNumber of posts to return (default 10)

get_profiles

tool

List all connected social profiles with their active platform connections, token health, and posting quota remaining.

Parameters

include_quotabooleanInclude remaining quota per platform

upload_media

tool

Upload an image or video file to the CDN and receive a public URL. Use the returned URL in publish_post or schedule_post media_urls.

Parameters

file_pathstringrequiredLocal file path or remote URL to upload
media_typeenumimage | video (auto-detected if omitted)

Real Agent Workflows

Abstract tool lists only tell half the story. Here are three concrete agent conversations — the exact back-and-forth between you, the agent, and the CodivUpload MCP server. These are not hypothetical; they reflect actual tool calls the MCP server handles.

ClaudeCross-platform video with different captions

Publish this video to TikTok and Instagram with different captions. TikTok: 'POV: shipping at 2am again'. Instagram: 'New feature just dropped — link in bio for early access.' Make TikTok friends-only.

I'll publish that video to both platforms with separate captions and TikTok set to friends-only.

Tool Call
publish_post({
  profile_name: "codivupload",
  platforms: ["tiktok", "instagram"],
  post_type: "reel",
  media_urls: ["https://cdn.codivupload.com/u/abc/reel.mp4"],
  description: "New feature just dropped — link in bio for early access.",
  tiktok_description: "POV: shipping at 2am again",
  tiktok_privacy_level: 1,
  instagram_media_type: "REELS"
})
Result
Published to 2/2 platforms. TikTok: friends-only, Instagram: Reels. Post ID: p_8f3a2b.
CursorScheduled multi-platform announcement

Schedule my blog post announcement to LinkedIn and X for tomorrow 9am EST. Use this text: 'We just published our guide to MCP automation. Read it here: https://codivupload.com/blog/mcp-social-media'

Scheduling the announcement for April 2, 2026 at 14:00 UTC (9am EST).

Tool Call
schedule_post({
  profile_name: "codivupload",
  platforms: ["linkedin", "twitter"],
  post_type: "post",
  description: "We just published our guide to MCP automation. Read it here: https://codivupload.com/blog/mcp-social-media",
  scheduled_date: "2026-04-02T14:00:00Z"
})
Result
Scheduled for Apr 2, 2026 at 2:00 PM UTC. Queued for LinkedIn and X. Post ID: p_1c7e9d.
ClaudeChecking post delivery status

Show me the status of my last 5 posts.

Fetching your recent posts now.

Tool Call
get_posts({
  limit: 5
})
Result
5 posts returned:
1. "POV: shipping at 2am" — TikTok: published, Instagram: published (2 min ago)
2. "MCP automation guide" — LinkedIn: queued, X: queued (scheduled Apr 2)
3. "Q1 recap thread" — X: published, Threads: published (yesterday)
4. "New pricing tiers" — all 4 platforms: published (Mar 28)
5. "Behind the scenes" — TikTok: failed (token expired), Instagram: published (Mar 25)

MCP vs REST API vs Dashboard

CodivUpload offers three ways to publish: the visual dashboard, the REST API, and the MCP server. They all hit the same backend — the difference is how you interact with it. Pick the one that fits how you already work.

FeatureDashboardREST APIMCP
InterfaceVisual UIHTTP callsNatural language
Best forManual postingAutomation scriptsAI workflows
Setup requiredNoneAPI key + codeAPI key + config file
Bulk schedulingOne at a timeYes (loop/batch)Yes (single prompt)
Per-platform overridesYesYesYes
Requires codingNoYesNo
Chained workflowsNoManual integrationNative (agent chains tools)
Error handlingVisual feedbackHTTP status codesAgent retries + explains

Bottom line: If you are already working inside an AI agent (writing code, generating content, running workflows), MCP eliminates the context switch entirely. You never leave your current tool. The dashboard and REST API remain available for teams that prefer visual or programmatic control.

Setting Up MCP in 2 Minutes

Every MCP client stores server configurations in a JSON file. You add CodivUpload once, and the tools become available in every conversation. Here is the setup for the two most popular clients.

Claude Desktop

Open ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows) and add:

claude_desktop_config.json
{
  "mcpServers": {
    "codivupload": {
      "command": "npx",
      "args": ["-y", "codivupload-mcp"],
      "env": {
        "CODIVUPLOAD_API_KEY": "cdv_your_api_key"
      }
    }
  }
}

Cursor

Open Cursor Settings (Cmd+,) and navigate to MCP tab, or edit .cursor/mcp.json in your project root:

.cursor/mcp.json
{
  "mcpServers": {
    "codivupload": {
      "command": "npx",
      "args": ["-y", "codivupload-mcp"],
      "env": {
        "CODIVUPLOAD_API_KEY": "cdv_your_api_key"
      }
    }
  }
}

After saving, restart your MCP client. The agent will detect the CodivUpload tools automatically — try asking it to "list my connected profiles" to verify the connection.

What agents can do with these tools

These are real examples of prompts that an MCP-connected agent handles end-to-end:

Claude

"Post the video at https://cdn.example.com/reel.mp4 to TikTok and Instagram Reels with this caption: 'Behind the build — new feature just shipped.' Set TikTok to friends-only for now."

Claude calls publish_post with platforms=[tiktok, instagram], tiktok_privacy_level=1, instagram_media_type=REELS automatically.

Cursor

"After my deploy script runs, publish a release announcement post to LinkedIn and X using this changelog text."

Cursor chains the deploy task to a publish_post call — social media publishing is part of the CI/CD flow.

Claude

"Schedule five posts for the next five weekdays at 9am EST, each with a different quote from this list. Spread them across TikTok, Instagram, and YouTube Shorts."

Claude creates five schedule_post calls with staggered scheduled_date values and correct platform mappings.

Why this matters for automation

REST APIs require you to build a client. Webhooks require you to build a listener. MCP requires none of that — you write a prompt and the agent handles parameter mapping, retries, and error handling.

Zero glue code

No wrappers, no SDK setup, no JSON schema management. The agent reads the MCP tool schema automatically.

Works in any MCP client

One server config works in Claude Desktop, Cursor, Windsurf, or any future MCP-compatible host.

Chained workflows

Chain publish_post after a deploy, a PR merge, a design export, or any other agent action.

Agent-native publishing

Social media publishing becomes a first-class action in your AI workflow, not an afterthought.

Further reading

MCP is one piece of the CodivUpload automation story. These guides cover the rest:

Connect CodivUpload to your AI agent in 30 seconds

One API key. Works in Claude Desktop, Cursor, and every MCP-compatible host.

Get Started Free