MCP Server

TikTok MCP Server Let any AI agent post to TikTok

Let AI agents publish videos, photo carousels and drafts to TikTok, set privacy and AI labels, check processing status and pull performance metrics from a single prompt.

mcp.json
{
  "mcpServers": {
    "upload-post": {
      "url": "https://mcp.upload-post.com/mcp",
      "headers": {
        "Authorization": "ApiKey YOUR_API_KEY"
      }
    }
  }
}

TikTok tools the agent can call

Part of the Upload-Post MCP server. The agent picks the right tool from your prompt.

Tool What it does
upload_video Publish a video to TikTok with caption, privacy and scheduling options
upload_photos Publish a photo carousel of up to 35 images to TikTok
tiktok_publishing_settings Read which privacy levels the account allows, its max video length and its comment, duet and stitch switches
tiktok_music_trending / tiktok_music_search / tiktok_location_search Find a Commercial Music Library track or a place to tag on the post
get_status Track upload and processing status
get_post_comments / create_comment / comment_action Read, answer, like, pin or hide comments on your videos
list_scheduled / edit_scheduled / cancel_scheduled Manage scheduled TikTok posts
get_analytics / get_post_analytics Pull views, likes and engagement per post or account
submit_ffmpeg_job Trim or re-encode a clip before posting

Looking for another way to post? See the TikTok API page or the Claude Code TikTok skill.

Add the TikTok MCP server to Claude or Cursor

One hosted server at mcp.upload-post.com/mcp. Sign in with OAuth or paste an Upload-Post API key, whichever your client supports.

Claude Desktop

Open it from Settings > Developer > Edit Config, paste the entry and restart Claude Desktop. It runs the open-source npm package @upload-post/mcp on your machine and needs Node.js 18 or newer.

Using Claude in the browser? Skip the file: Settings > Connectors > Add custom connector, paste https://mcp.upload-post.com/mcp and sign in with your Upload-Post account (OAuth).

claude_desktop_config.json
{
  "mcpServers": {
    "upload-post": {
      "command": "npx",
      "args": ["-y", "@upload-post/mcp"],
      "env": { "UPLOAD_POST_API_KEY": "YOUR_API_KEY" }
    }
  }
}

Claude Code

Prefer OAuth? Drop the --header line, then run /mcp inside Claude Code and sign in. Add --scope user to use the server in every project.

Terminal
claude mcp add --transport http upload-post https://mcp.upload-post.com/mcp \
  --header "Authorization: ApiKey YOUR_API_KEY"

Cursor

Put it in .cursor/mcp.json for one project or ~/.cursor/mcp.json for all of them, then reload Cursor.

.cursor/mcp.json
{
  "mcpServers": {
    "upload-post": {
      "url": "https://mcp.upload-post.com/mcp",
      "headers": {
        "Authorization": "ApiKey YOUR_API_KEY"
      }
    }
  }
}

Your API key is under API Keys in app.upload-post.com. Before the first post, connect TikTok to a profile in the dashboard: the agent passes that profile name as user. On ChatGPT, search for Upload-Post under Apps and click Connect; no config file needed.

Example: publish an AI-made clip with the right labels

An example flow with placeholder names, IDs and URLs, not a customer transcript. The tool names and parameters are the real ones the server exposes.

You

Post https://example.com/clips/launch.mp4 to TikTok on my profile "studio". Caption: "Our new editor in 30 seconds". It was made with AI, so label it, and turn off duets.

  1. Tool call 1

    tiktok_publishing_settings

    Checks which privacy levels this account allows before posting.

    arguments
    {
      "profile": "studio"
    }
    result (trimmed)
    {
      "success": true,
      "privacy_level_options": [
        "PUBLIC_TO_EVERYONE",
        "MUTUAL_FOLLOW_FRIENDS",
        "FOLLOWER_OF_CREATOR",
        "SELF_ONLY"
      ],
      "max_video_post_duration_sec": 600,
      "comment_disabled": false,
      "duet_disabled": false,
      "stitch_disabled": false
    }
  2. Tool call 2

    upload_video

    Publishes in the background and returns a request_id to follow.

    arguments
    {
      "videoPathOrUrl": "https://example.com/clips/launch.mp4",
      "user": "studio",
      "platforms": [
        "tiktok"
      ],
      "title": "Our new editor in 30 seconds",
      "asyncUpload": true,
      "platformOptions": {
        "tiktokPrivacyLevel": "PUBLIC_TO_EVERYONE",
        "tiktokDisableDuet": true,
        "tiktokIsAigc": true
      }
    }
    result (trimmed)
    {
      "success": true,
      "message": "Upload initiated successfully in background.",
      "request_id": "9f3c1a7e-5b2d-4c8e-a1f0-2d7b6e4c9a10",
      "total_platforms": 1
    }
  3. Tool call 3

    get_status

    Polls until TikTok confirms the post.

    arguments
    {
      "requestId": "9f3c1a7e-5b2d-4c8e-a1f0-2d7b6e4c9a10"
    }
    result (trimmed)
    {
      "request_id": "9f3c1a7e-5b2d-4c8e-a1f0-2d7b6e4c9a10",
      "status": "completed",
      "completed": 1,
      "total": 1,
      "results": [
        {
          "platform": "tiktok",
          "success": true
        }
      ]
    }

Assistant

Published to TikTok on "studio" with the AI-generated label and duets turned off.

  • If TikTok rejects the file itself (format, length, frame rate), get_status reports tiktok_media_rejected; a retry of the same file will fail again. tiktok_publish_failed is worth retrying.
  • The video has to be at a public URL. A hosted MCP server cannot read files on your computer.

Drafts and photo carousels

upload_video: Sends the clip to your TikTok drafts (inbox) so you can add a sound and publish from the app. In draft mode TikTok ignores the caption and privacy sent through the API.

{
  "videoPathOrUrl": "https://example.com/clips/launch.mp4",
  "user": "studio",
  "platforms": [
    "tiktok"
  ],
  "platformOptions": {
    "tiktokPostMode": "MEDIA_UPLOAD"
  }
}

upload_photos: A photo carousel with the first image as cover and music added automatically.

{
  "photosPathsOrUrls": [
    "https://example.com/slides/1.jpg",
    "https://example.com/slides/2.jpg",
    "https://example.com/slides/3.jpg"
  ],
  "user": "studio",
  "platforms": [
    "tiktok"
  ],
  "title": "3 editing mistakes",
  "description": "Swipe for the fix to each one.",
  "platformOptions": {
    "tiktokPrivacyLevel": "PUBLIC_TO_EVERYONE",
    "tiktokPhotoCoverIndex": 0,
    "tiktokAutoAddMusic": true
  }
}

Official TikTok API, through an approved app

How the TikTok MCP server reaches your account.

Every post goes out through TikTok’s Content Posting API using Upload-Post’s approved TikTok app. You connect the TikTok account once in the Upload-Post dashboard, on TikTok’s own authorization screen. There is no password sharing and no automation of the TikTok app.

That approval matters if you have looked at building this yourself. TikTok restricts everything posted by unaudited API clients to private viewing until the client passes an audit. With the hosted server you skip the developer app, the audit and the token handling.

TikTok decides per account which privacy levels are allowed. A private account, for example, has no PUBLIC_TO_EVERYONE. The agent can call tiktok_publishing_settings first and pick a level the account actually has, instead of failing with tiktok_privacy_unavailable.

Music, location tags, custom covers and comments depend on permissions granted when the account was connected. list_users shows them in a capabilities array on the TikTok account, and reconnecting TikTok picks up new ones.

Sources: TikTok Content Posting API, Upload-Post TikTok guide, upload-post-mcp on GitHub.

TikTok limits the agent works within

What TikTok and Upload-Post accept per post, checked September 2026.

What Limit Source
Video caption 2,200 characters (an emoji counts as 2) Upload-Post character limits
Photo post text Title up to 90 characters, description up to 4,000 Upload-Post character limits
Video MP4, MOV or WebM; 3 seconds to 10 minutes through the API; 23 to 60 fps; at least 360 px on each side. Upload-Post rejects files over 3 GB. Upload-Post video requirements
Photos JPG, JPEG or WebP, up to 35 per post and 20 MB each. Images above 1080 x 1920 are downscaled automatically. Upload-Post photo requirements
Privacy PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR or SELF_ONLY, limited per account by TikTok Upload-Post TikTok guide
Posting rate (TikTok) 6 posts per minute and 15 per 24 hours per TikTok account Upload-Post video requirements

Works with every MCP client

Same server, same tools. Pick your AI client and follow its 3-step guide.

Try these TikTok prompts

No commands to memorize. Describe what you want.

“Publish this video to TikTok under profile "marketing", caption: "Spring launch 🌱".”
“Trim this clip to the first 30 seconds and post it to TikTok.”
“Schedule this TikTok for Friday at 6pm Madrid time.”
“How did my last 5 TikToks perform? Compare views and completion.”

Frequently asked questions

TikTok + AI agents, answered. Last updated September 2026.

What is a TikTok MCP server?

A TikTok MCP server is a Model Context Protocol server that exposes TikTok publishing as tools an AI agent can call. The Upload-Post MCP server lets ChatGPT, Claude, Gemini or any MCP client upload videos and photo carousels to TikTok, schedule posts and pull analytics, with no custom code.

Can AI agents post videos to TikTok?

Yes. Connect your TikTok account to Upload-Post once, add the MCP server to your AI client, and the agent can publish videos with captions, privacy settings and scheduling from a natural-language prompt.

What video formats does TikTok accept?

Through the API TikTok takes MP4, MOV or WebM from 3 seconds to 10 minutes, at 23 to 60 fps and at least 360 px on each side. Photos larger than 1080 x 1920 are downscaled automatically. If a clip is too long or in the wrong format, the agent can trim or re-encode it first with submit_ffmpeg_job.

Is the TikTok MCP server free?

The server code is free and open source (MIT). You connect it with an Upload-Post API key, and you can create an account for free.

How is this different from the TikTok Ads MCP?

They do different jobs. TikTok’s own TikTok for Business MCP server works on the Ads side: campaigns, ad groups, audiences, catalogs and ad reporting. The Upload-Post TikTok MCP works on your organic account: it publishes videos and photo carousels, sends clips to drafts, answers comments and reads post analytics, all through TikTok’s official developer APIs. If you run ads and also post organically, you can connect both to the same AI client.

Is it a TikTok scraper?

No. It only works with TikTok accounts you connect and own, through TikTok’s official API. It does not download other creators’ videos, search hashtags or collect profile data, which is what the scraping MCP servers listed for TikTok do.

Can the agent send videos to TikTok drafts instead of publishing?

Yes. Set tiktokPostMode to MEDIA_UPLOAD (or tiktokUploadToDraft to true) in platformOptions and the video lands in the TikTok inbox, where you finish and publish it in the app. In draft mode TikTok ignores the caption and privacy sent through the API.

Can it post TikTok photo carousels?

Yes. upload_photos with platforms ["tiktok"] publishes a photo post of up to 35 JPG, JPEG or WebP images. tiktokPhotoCoverIndex picks the cover and tiktokAutoAddMusic adds background music.

How do I label AI-generated videos?

Pass tiktokIsAigc: true in platformOptions. TikTok then shows the video as labeled by the creator as AI-generated.

How many TikToks can the agent post per day?

Up to 15 per TikTok account in a rolling 24 hours, and no more than 6 per minute. Those are TikTok’s own limits.

Let your AI agent run TikTok

Free to start, no credit card. Connect TikTok once and post from any MCP client.