Skip to main content

tiktok-studio-mcp

MCP server for TikTok. Publishes videos to your own TikTok account and reads back how they performed, through TikTok's official Content Posting and Display APIs.

Built as the TikTok counterpart to yt-studio-mcp.

What it can and cannot do

TikTok's creator APIs are narrower than YouTube's. Rather than advertise tools that cannot work, this server exposes only what the platform actually supports:

capability supported
Upload video (drafts or direct post) yes
View / like / comment / share counts yes
List your videos yes
List or moderate comments no — TikTok offers this only through the Research API, which is gated to academic institutions
Playlists, captions, thumbnails no — no API surface

Posting modes

TikTok gates direct publishing behind an app audit, so there are two modes, selected with TIKTOK_MCP_MODE:

  • upload (default) — the video lands in your TikTok inbox/drafts and you finish posting it in the app. Works without an audit.
  • publish — posts directly. Requires the video.publish scope, which needs TikTok's full app audit (2–4 weeks, demo video, privacy policy, domain verification).

Until the app is audited, TikTok forces everything an unaudited client posts to private, whatever privacy_level you ask for. post_video says so in its result rather than letting you assume something published.

Install

claude mcp add tiktok -s user -- uvx tiktok-studio-mcp

Authenticate

Register an app at developers.tiktok.com with Login Kit, Content Posting API and Display API, requesting the scopes user.info.basic, video.upload, video.list, video.publish. Set the Desktop redirect URI to http://localhost:8902/.

tiktok-studio-mcp auth --client-key KEY --client-secret SECRET

The flow is headless-friendly: it binds a fixed port and prints the consent URL rather than launching a browser. On a machine with a browser:

ssh -N -L 8902:localhost:8902 user@your-host

then open the printed URL.

Tools

tool purpose
health_check credentials refresh, account reachable, granted scopes, active mode
creator_info nickname, allowed privacy levels, duration cap, interaction toggles
post_video upload a file; returns publish_id. Supports dry_run
post_status poll a publish_id
list_videos your videos, with statistics
video_stats counts for specific video ids

post_video calls creator_info first and validates privacy_level against what the account actually allows, because TikTok rejects mismatches with an unhelpful error.

Secrets

TIKTOK_MCP_SECRETS selects the backend: file (default, ~/.config/tiktok-studio-mcp/credentials.json, mode 600), env, or vaultproxy.

TikTok rotates refresh tokens — every refresh returns a new one and invalidates the old. This server writes the new token back on every refresh; if it did not, authentication would work for 24 hours and then fail with no obvious cause.

Limits

Enforced by TikTok, surfaced by this server:

  • 6 requests per minute per access token on the init endpoints
  • 5 pending shares per 24 hours
  • chunked upload: files under 5 MB go whole; otherwise chunks are 5–64 MB, the final chunk may reach 128 MB, 1–1000 chunks, 4 GB maximum

Development

pip install -e '.[dev]'
ruff check src tests
pytest

Tests use an injected transport and need no TikTok credentials.

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tiktok_studio_mcp-0.1.0.tar.gz (17.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tiktok_studio_mcp-0.1.0-py3-none-any.whl (14.7 kB view details)

Uploaded Python 3

File details

Details for the file tiktok_studio_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: tiktok_studio_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 17.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for tiktok_studio_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9dbd89a665f720dcc3eb77750e38aae00420cb970e5b17615b5e5cda625628b7
MD5 8b87986b81fac6ed28c9b3c7e1ac1786
BLAKE2b-256 4f379f244413203c709e14ad6ed626d4e1a6fb4cbea0bd63b3500e7479cf3405

See more details on using hashes here.

Provenance

The following attestation bundles were made for tiktok_studio_mcp-0.1.0.tar.gz:

Publisher: publish.yml on aaronckj/tiktok-studio-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tiktok_studio_mcp-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for tiktok_studio_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 664504d12cfe422eab1b2b44302911ab3c420d1a99679b1f3d7228fcc3fb0747
MD5 ba18af06449965b67beabc7d93833bf8
BLAKE2b-256 f78ff51566cbcaf51e9977f285da28ec3676194bf29e10c4d55acbf466060d9f

See more details on using hashes here.

Provenance

The following attestation bundles were made for tiktok_studio_mcp-0.1.0-py3-none-any.whl:

Publisher: publish.yml on aaronckj/tiktok-studio-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page