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 thevideo.publishscope, 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/.
export TIKTOK_MCP_CLIENT_KEY=...
export TIKTOK_MCP_CLIENT_SECRET=...
tiktok-studio-mcp auth
Prefer the environment over --client-key / --client-secret: command-line
arguments are visible to any user on the box via ps and land in shell history.
The flags still work as a fallback.
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
Release files for tiktok-studio-mcp 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tiktok_studio_mcp-0.1.4.tar.gz | 21.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tiktok_studio_mcp-0.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 37.7 kB
Release files / tiktok_studio_mcp-0.1.4.tar.gz
| Download URL | tiktok_studio_mcp-0.1.4.tar.gz |
|---|---|
| Size | 21.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c4ce726e2ced12daba341f29db5f2a08882749ec152efc27913e07a389bb2a3b
|
|
BLAKE2b-256 checksum How to use checksums |
a0bb053bf0c1779d73a719f949506425a7ccca9a5e616d3b55f933b06672d579
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.
Transparency logRelease files / tiktok_studio_mcp-0.1.4-py3-none-any.whl
| Download URL | tiktok_studio_mcp-0.1.4-py3-none-any.whl |
|---|---|
| Size | 16.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
430081ad94282d1490b7144267de2dbe16a4b2505f8f067b0ec5d35cf19f2ed5
|
|
BLAKE2b-256 checksum How to use checksums |
ac1fc6cd8060deb0c9b0c31b65e9f4da11a1276183461fcb16aa89bdf7d0231e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.
Transparency log