Skip to content
UGC API

MCP servers for social media posting: what they are and how to pick one

An MCP server lets an AI assistant like Claude, ChatGPT or Cursor act on a service through a fixed set of tools. For social media, that means an assistant that can list your accounts, schedule a TikTok or Reel, and tell you what failed, without you writing code.

Updated

What MCP is, in one paragraph

The Model Context Protocol (MCP) is an open standard for connecting AI applications to outside tools and data. A service runs an MCP server that describes its tools: a name, a description, and a JSON schema for the inputs. An MCP client, such as Claude, ChatGPT, Cursor, VS Code or Gemini CLI, reads that list and lets the model call those tools during a conversation. The model decides when to call a tool; the client shows you the call and, for anything that changes data, usually asks first.

A remote MCP server runs on the service's own domain and is reached over HTTP (the Streamable HTTP transport). Nothing to install: you paste a URL into your assistant and sign in. UGC API's server is at https://ugcapi.dev/mcp.

Why social posting fits MCP well

  • The work is conversational. "Post this to my two TikToks tomorrow at 10" is easier to say than to click through a scheduler, and easier than writing a cron job.
  • The inputs are messy. Captions, hashtags, times in a time zone, a list of accounts. A model is good at turning a sentence into those fields, then showing them back to you.
  • The follow-up is the valuable part. "What failed this week and why?" means reading results across many posts. An assistant can call get_stats and list_posts and summarize in seconds.

The tools a posting MCP server should expose

A useful server covers the whole loop: who can I post as, post or schedule, check results, fix mistakes. Here is UGC API's set, grouped by job.

JobUGC API toolsChanges anything?
Know the accountget_account_overview, list_accounts, get_creator_infoNo
Add accountscreate_connect_linkCreates a link
Mediaupload_media_from_urlStores a file
Postpublish_postPublishes; uses credits
Plan many postspreview_campaign, create_campaignPreview: no. Create: schedules
Check resultslist_posts, get_post, list_campaigns, get_statsNo
Fix mistakescancel_post, cancel_campaign, retry_postCancels or resends

Watch for two things when you compare servers. First, every tool should be marked read-only or not, so clients can skip the confirmation for reads and ask for writes. Second, there should be a preview step for bulk work. Scheduling 60 posts from one sentence without a dry run is how mistakes reach real accounts.

Sign-in: OAuth, not API keys pasted into chat

A good remote server uses OAuth 2.1 with PKCE, plus dynamic client registration so any MCP client can register itself. The flow looks like this: you add the URL, the client opens the service's sign-in page, you approve a consent screen, and the client gets a short-lived token it refreshes on its own. You never paste a secret into the chat.

UGC API's /mcp endpoint accepts OAuth tokens only. Your ugc_live_ API keys work on the REST API, not on MCP, so a key can't leak through a chat transcript into an assistant. Tokens last an hour and refresh automatically, and you can disconnect the app at any time.

Safety rules that matter for posting

  • Confirm before publishing. The server's instructions should tell the model to restate the accounts, caption and time and wait for a yes. UGC API's do, and Claude also asks before running tools that change things unless you have allowed them.
  • Platform rules come through. TikTok requires apps to show the creator's nickname and let the person choose privacy, with no default. UGC API's publish_post refuses a TikTok post without a privacy choice, so the assistant has to ask you.
  • Tool output is data. Captions, usernames and error messages come from the outside world. The server should tell the model to treat them as data, never as instructions.
  • Same limits as the API. Credits, rate limits and platform caps should apply exactly as they do for code. An assistant shouldn't be a way around them.
TikTok note: until a new app passes TikTok's audit, TikTok only lets it publish private (only-me) posts. That applies to every posting tool, MCP or not. See the TikTok audit guide.

How to evaluate a social media MCP server

  1. Platforms and formats. Which networks, and which placements on each? TikTok photo posts, Instagram carousels and Stories, Facebook Reels and YouTube Shorts are not all the same call.
  2. Bulk scheduling. Can it spread many posts across many accounts on a cadence, with a preview? Or is it one post per call?
  3. Results. Does it return the public URL per account, the error when something fails, and engagement numbers afterwards?
  4. Pricing. Does posting through MCP cost the same as the API? With UGC API it does: $10 per 1,000 posts, 50 free.
  5. Clients. Does it work in the assistants your team uses? A standard remote server with OAuth works in Claude, ChatGPT, Cursor, VS Code, Windsurf, Gemini CLI and others. Setup for each is in the MCP docs.

A conversation, step by step

It helps to see what actually happens on the wire. Say you ask: "Post this slideshow to my TikTok and Instagram tonight at 8." The client sends your message and the tool list to the model. The model replies with a call to list_accounts, which is read-only, so most clients run it straight away. It gets back your accounts with ids like acc_tt_mia and acc_ig_mia. Next it calls get_creator_info for the TikTok account, which returns the creator's nickname and the privacy levels TikTok allows for them.

Now the model has enough to make a plan. It writes back to you in plain words: two accounts, the caption, 20:00 in your time zone, one TikTok photo post and one Instagram carousel, two credits, and a question about TikTok privacy. You answer. Only then does it call publish_post, and the client shows you that call (or asks for permission) because the tool is marked as one that changes things. The result comes back with a status per account. Later, get_post turns those into public URLs.

Two details make this reliable. Tool descriptions say exactly what each input means, so the model doesn't guess the shape of scheduled_at or which option turns on Story frames. And every write returns something the model can read back to you, so you can check it did what you asked rather than trusting a summary.

Questions to ask a vendor

  • Is the server remote with OAuth, or a local package that needs an API key in a config file?
  • Which tools are read-only, and are they annotated so clients can tell?
  • Is there a dry run for bulk scheduling, and does it show credits?
  • Do failed posts refund? Does cancelling refund?
  • Are posting limits per platform enforced before sending, with a clear error?
  • Can a team share one workspace, and what does an assistant see when a teammate connects?

When MCP is the wrong tool

MCP shines when a person is in the loop. If you want an agent to post on a schedule with nobody watching, for example a nightly job that publishes whatever your generator made, call the REST API as a tool with an API key instead. That is how frameworks like the OpenAI Agents SDK and LangChain, or Grok through the xAI API, usually work. See agent frameworks and how to let an AI agent post to TikTok and Instagram.

Try it

Add https://ugcapi.dev/mcp to your assistant, sign in with your email, and ask: "Which accounts do I have connected, and how many credits are left?" Then connect an account with "Make me a link to connect my TikTok." Client-by-client setup: Claude, ChatGPT, Cursor, VS Code and Windsurf, Gemini.

FAQ

Is MCP only for Claude?

No. MCP is an open protocol. Claude, ChatGPT, Cursor, VS Code with Copilot, Windsurf, Gemini CLI and Codex CLI all support remote MCP servers, with some differences in setup.

Can I use my API key with the MCP server?

No. The MCP endpoint uses OAuth only, so you sign in and approve access instead of pasting a key. API keys are for the REST API.

Does posting through MCP cost more?

No. Each post to one account is one credit, the same as the API: $10 per 1,000 posts, with 50 free when you sign up.

Can the assistant upload a video I attach in chat?

Not directly. The server needs a public https URL to the file. Upload it in the dashboard composer or host it, then paste the link.

Related