Skip to main content
Glama
symflow-mcp
by DanikVR

symflow-mcp — Claude MCP for TikTok Symphony Creative Studio

Run TikTok's Symphony Creative Studio from Claude Code or Claude Desktop: trend templates with their full director prompts, reference-to-video / image-to-video / text-to-video on Seedance, talking avatars, product and apparel try-on, video refresh from your own footage, dubbing into other languages and the editor draft — inside your own Symphony account and weekly credits.

This package is the open bridge: an MCP server (stdio) plus a tiny local HTTP queue. The work in the browser is done by the SymFlow Chrome extension (https://lingoflow.pro/symflow), which reads the studio's data with your session and reports results back. No API keys, no scraping services, nothing leaves your machine except the calls your browser already makes to ads.tiktok.com.

Claude ──MCP stdio──▶ symflow-mcp ──▶ bridge 127.0.0.1:8789 ◀── polling ── SymFlow extension ──▶ Creative Studio tab
                                            │
                                     files on disk (symflow-out/<job>/)

Install

claude mcp add symflow -- npx -y symflow-mcp

Then install the SymFlow extension, open ads.tiktok.com/creative/creativestudio signed in, and ask Claude to call sym_status. Claude receives the director playbook from the extension and works by it: asks what you sell and where, proposes ideas, names the cost in credits before spending, generates, waits and downloads the files.

Related MCP server: TAP Insights MCP

Tools

Tool

What it does

sym_status

connection, credits (weekly grant, spent, next refill), available models, inbox from the "→ Claude" button, the director playbook

sym_templates, sym_template

TikTok trend templates with the complete director prompt, reference image and sample video

sym_generate

reference-to-video, image-to-video, text-to-video, image generation; dryRun returns the price first

sym_avatars, sym_voices, sym_avatar_video

AI and real avatars, voices, a talking avatar video from a script with captions

sym_tryon

avatar holding your product or wearing your apparel (images, then animated clips)

sym_transform

"Video refresh": new 15/30 s TikTok cuts from your ≥15 s footage and photos, 11 languages

sym_dub

dubbing into other languages, subtitle replacement, lip-sync

sym_editor

read / update / render / export the server-side editor draft

sym_history, sym_links, sym_upload, sym_credits

what was generated, download links, library uploads, ledger

sym_wait, sym_cancel, sym_log

wait for files, cancel the queue, diagnostics

Credits

Symphony grants weekly credits. Only Seedance clips are charged (Seedance 1.5: 1 credit per second; 2.0: 5; 2.0 Mini: 2; 2.0 Fast: 3; 2.5: 10). Image generation, talking avatars, try-on images, video refresh and dubbing were free at the time of writing. Claude reads the balance before every batch and stops when a job would exceed it.

Remote Claude

By default the bridge listens on 127.0.0.1:8789. For Claude on another machine set OF_HOST to a Tailscale address; a non-loopback bind requires the token from ~/.symflow-token (header X-SymFlow-Token), which you paste into the extension settings.

Security

The bridge refuses requests with an http(s) Origin (only chrome-extension:// and local callers), keeps its queue in memory, and never stores your TikTok session — the extension uses the cookies your browser already has. The Symphony adapter and the director playbook are part of the extension, not of this package.

MIT © DanikVR — https://lingoflow.pro/symflow

Available Tools

21 tools
sym_apiA

Developer escape hatch: call a Symphony JSON endpoint from inside the signed-in tab (path relative to https://ads.tiktok.com). Use only when a documented tool cannot do it.

Inputs: path (required), body, query, method.

sym_avatarsA

Avatars: kind aigc (1400+ AI-generated presenters, default), real (licensed real people), tryon (avatars for apparel/product try-on), product (avatars holding a product). Filter by query (name/tags) or tagsAll (e.g. ["female","e-comm","western_europe"]). Returns avatarId, name, tags, cover, preview.

Inputs: kind, page, limit, query, +1 more.

sym_avatar_videoA

Talking avatar video from a script: the studio synthesises the voice (TTS), lip-syncs the avatar and adds captions. script ≤ 1000 characters in the spoken language; voiceId from sym_voices (default: the avatar's own voice); speed 0.8–1.3. Currently free of credits. Returns jobId — wait with sym_wait.

Inputs: items (required), folder, prefix.

sym_cancelA

Remove everything that has not started yet. Running renders are not interrupted.

Inputs: no named parameters.

sym_creditsA

Live Symphony credit account: balance, weekly grant and spent, tier, available models, recent ledger with the price actually charged per task, expected next refill. Use before batches and after failures.

Inputs: limit.

sym_downloadA

Download the files of an already finished studio task (taskId from sym_history / sym_status) into a job folder without generating anything. Returns jobId — get the paths with sym_wait.

Inputs: taskId (required), folder, watermarked.

sym_dubA

Dubbing: translate the speech of a video into other languages with a synthetic voice; options: replace burned-in subtitles, lip-sync (one visible speaker). Up to 20 videos per call. Returns jobId.

Inputs: videos (required), targets (required), dryRun, folder, +4 more.

sym_editorC

Server-side draft of the Symphony editor: op get (read the draft JSON), update (write a changed draft), estimate, render, check_render, export. Drafts are CapCut-style documents (tracks, materials, texts); change them structurally and render.

Inputs: op (required), draftId (required), draft, taskId, +2 more.

sym_generateA

Queue video/image generation in the live Symphony account. Modes: r2v (reference-to-video: up to 4 photos/videos on Seedance 1.5, 12 on 2.0, 50 on 2.5; optional templateId adds the template reference first), i2v (image-to-video from 1–2 frames), t2v (text-to-video), i2i (image with Nano Banana Pro / Flux). Returns jobId immediately; the extension waits for the render and downloads the files — get them with sym_wait. ALWAYS run with dryRun:true first unless the user confirmed the cost: dryRun returns model, seconds, cost in credits and balance without spending.

Inputs: items (required), dryRun, folder, prefix.

sym_historyC

What was generated in this account: drafts with status, type, vid, cover, errors. miniAppTypes: 1 refresh, 2 i2v, 3 t2v, 5 hpi, 6 try-on, 7 dubbing, 9 avatar, 11 image, 13 r2v.

Inputs: limit, offset, miniAppTypes.

sym_inboxA

Templates the user sent from the studio page with the "→ Claude" button (full director prompt, reference image, sample). Newest first. clear:true empties the inbox after reading.

Inputs: clear.

sym_logB

Last lines of the extension log (diagnostics).

Inputs: n.

sym_statusA

Bridge and extension state: whether the SymFlow extension is connected, whether a Creative Studio tab is open and signed in, credits (weekly grant, spent, next refill, available models), the queue, the last templates sent with the "→ Claude" button (inbox) — plus extension.director, the director playbook sent by the extension. Call it FIRST and follow the playbook. If extension.license is "expired", ask the user to activate a key (https://lingoflow.pro/symflow); the queue resumes by itself.

Inputs: no named parameters.

sym_templateB

One template with its COMPLETE director prompt (Format & Look, Lenses, Grade, shot list), reference image URL and sample video. Use it as the structure of your own prompt.

Inputs: templateId (required), inspirationItemId.

sym_templatesB

TikTok trend templates (about 78) with name, description, use cases, industry, reference image and the director prompt (videoPrompt, truncated unless full:true). useCase: 1 viral ads (default list), 8 ready-to-use on the Create page; query filters by text.

Inputs: full, page, limit, query, +2 more.

sym_transformA

"Video refresh": Symphony cuts new TikTok-ready clips (15 or 30 s) from the user's own product videos (each ≥ 15 s) and photos, with a voice-over in one of 11 languages (ar de en es fr id ms vi th ja pt). Returns jobId.

Inputs: videos (required), productName (required), dryRun, folder, +4 more.

sym_tryonB

Avatar try-on: a video of an avatar wearing the user's apparel (kind apparel) or presenting the product (kind product). avatarId from sym_avatars kind=tryon|product; images = product/apparel photos. Returns jobId.

Inputs: images (required), avatarId (required), kind, dryRun, +2 more.

sym_uploadA

Upload files into the Symphony library without generating anything (to reuse URLs/vids across tasks).

Inputs: files (required).

sym_voicesC

Voices for talking avatars (assets of the studio) with tags (language, gender, age, style) and preview audio. language: e.g. english, spanish; gender: male|female.

Inputs: limit, query, gender, language, +1 more.

sym_waitA

Wait for a job and return its items with local file paths (symflow-out//…), links, cost data and errors. Returns the intermediate picture on timeout — call again.

Inputs: jobId (required), timeoutSec.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 21 tools

    Disambiguation4/5

    Most tools target distinct resources or actions (templates vs template, generate vs editor, upload vs download). The only mild ambiguity is between sym_links and sym_download, since both retrieve finished outputs, but descriptions clarify links vs file download jobs.

    Naming Consistency4/5

    All tools share the consistent sym_ prefix and snake_case style, making the set feel cohesive. However, naming mixes resource nouns (sym_inbox, sym_history, sym_links) with action verbs (sym_generate, sym_upload, sym_cancel), so it is not a strict verb_noun pattern.

    Tool Count3/5

    With 21 tools, the server sits at the heavy end of the appropriate range. The count is justified by the broad video-generation domain, but it pushes past the ideal 3-15 tool sweet spot.

    Completeness5/5

    The tool surface covers the full workflow: status, credits, templates, generation modes, avatars, voices, dubbing, editing, history, file transfer, job waiting, and cancellation. No major dead ends are apparent, and the escape-hatch sym_api further fills rare gaps.

    Maintenance

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      D
      maintenance
      Integrates TikTok video analysis into Claude AI via TikNeuron, enabling users to retrieve subtitles, analyze content for virality factors, and extract video details including engagement metrics and metadata.
      3
      2 npm
      MIT
    • F
      license
      Not graded
      quality
      B
      maintenance
      Enables Claude to generate videos and images via TopView.ai's API, including text-to-video, image-to-video, text-to-image, and image editing.
      -