Figma Context MCP
Give your coding agent access to your Figma data. Implement designs in any framework in one-shot.
Description from the maker (original English)
Analyze video mood and pace, then recommend license-safe BGM with a mix spec.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
GEMINI_API_KEY, JAMENDO_CLIENT_ID, FREESOUND_API_KEYValues marked secret are keys to your account. Never share them or paste them into a chat.
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Download the maker’s .mcpb file
The link goes to the maker’s own file; we do not host or repackage it. Open the file and Claude Desktop installs it.
Run this in your terminal
Fill in the empty values before running it.
Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 8, 2026
The registry name was verified with the GitHub account js713-lab, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: GEMINI_API_KEY, JAMENDO_CLIENT_ID, FREESOUND_API_KEY
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.2.0) reached the registry 2 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need MCPB on your computer.
In the same category: Figma Context MCP, Claude Real Video, Figma MCP Server
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Give your coding agent access to your Figma data. Implement designs in any framework in one-shot.
Let any LLM watch a video locally — and search everything it has ever watched.
Figma’s official server gives AI your design data so it can turn designs into code or describe them accurately. Connects to Figma’s cloud.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Video-native MCP server for license-safe BGM. Watches the footage — not the script — and returns a shortlist, a 12–20s hook, and an ffmpeg ducking spec.
Package / CLI: sonicmatch-mcp. A Model Context Protocol server for Claude Desktop, Cursor, Codex, and other MCP clients. Drop an Instagram Reel, YouTube Short, or TikTok-style clip. Get royalty-free / Creative Commons matches with the license printed on every row.
Video-to-BGM already exists. The wedge is not “I also match music”:
Catalog quality will kill or save this. More tools will not.
Video or URL in
→ scene / mood / pace / speech analysis → license-safe BGM shortlist
Do not treat this as “script in → YouTube Music search out.” That already exists (mcp-bgm-recommender). Sonicmatch watches the video.
| You own | You do not own |
|---|---|
| Local file / public URL ingest | Platform music licenses |
| Mood, energy curve, speech vs silence, scene cuts | Meta/TikTok “trending audio” graph |
| CC / royalty-free catalogs + optional paid adapters | Spotify / IG official libraries |
| Ranked tracks, preview URLs, mix spec, ffmpeg | Auto-publish to Instagram |
North star: ingest_video → analyze_video_music → recommend_bgm → preview_mix → export_mix_spec
examples/user_library.example.json). Do not scrape those sites.I dropped
./clip.mp4. Analyze it for an Instagram Reel and recommend 5 instrumental BGMs. Then mix the top pick with ducking and give me the ffmpeg command.
That prompt is the product. Install below, wire Claude Desktop, Cursor, or Codex, and paste it.
Requires Python 3.10+ and ffmpeg / ffprobe on PATH. yt-dlp is optional and off by default (SONICMATCH_ALLOW_YTDLP=0) because platform extractors break and may violate ToS. Prefer a local file.
The PyPI project is sonicmatch-mcp. The console script is sonicmatch-mcp, which is what uvx and pipx run. python -m sonicmatch is the same server. The PyPI badge stays empty until the first tag is published. Install from git until then. Maintainer steps: PUBLISH.md.
uvx --from git+https://github.com/js713-lab/sonic-match-mcp.git sonicmatch-mcp
pip install git+https://github.com/js713-lab/sonic-match-mcp.git
sonicmatch-mcp --version # or: python -m sonicmatch --version
uvx sonicmatch-mcp
pipx install sonicmatch-mcp sonicmatch-mcp --version
git clone https://github.com/js713-lab/sonic-match-mcp.git
cd sonic-match-mcp python3 -m venv .venv source .venv/bin/activate pip install -e ".[dev]" cp .env.example .env # optional keys
sonicmatch-mcp
sonicmatch-mcp --http --port 8765
# same clone, uv
uv venv && uv pip install -e ".[dev]" uv run sonicmatch-mcp
pytest # generates tiny color mp4s with ffmpeg
ruff check src tests
The seed catalog is about 20 Reel-editor rows (cafe, product, talking-head, travel, food, fashion, event) plus a vocal fixture and a CC-BY-NC fixture. It runs without API keys. Gemini, Jamendo, and Freesound are optional and degrade with a note in the tool response. Seed rows have no hosted audio on purpose — preview_mix synthesizes a demo bed. For real ads, point SONICMATCH_LIBRARY_PATH / EPIDEMIC_LIBRARY_PATH / ARTLIST_LIBRARY_PATH at JSON you already licensed.
| Variable | Required | What it does |
|---|---|---|
GEMINI_API_KEY | no | Gemini video understanding for analyze_video_music |
JAMENDO_CLIENT_ID | no | Jamendo search |
FREESOUND_API_KEY | no | Freesound beds and loops |
SONICMATCH_LIBRARY_PATH | no | User-owned library JSON. Also EPIDEMIC_LIBRARY_PATH, ARTLIST_LIBRARY_PATH |
SONICMATCH_ALLOW_YTDLP | no | 1 turns on platform URL ingest. Default 0 |
SONICMATCH_MAX_DOWNLOAD_MB | no | Download cap. Default 200 |
SONICMATCH_HTTP_HOST / SONICMATCH_HTTP_PORT | no | --http bind. Default 127.0.0.1:8765 |
GEMINI_API_KEY is set; otherwise local ffmpeg / audio heuristics (optional Whisper, PySceneDetect, librosa).asset_id.suggest_cuts snaps scene cuts to a BPM grid and returns EDL-ish intro / peak / outro.brand_kit=… into recommend_bgm.analyze_batch (max 20) clusters mood and returns one shared mini-playlist.| Tool | What it does |
|---|---|
status | ffmpeg / keys / seed count / day-1 risk gates |
ingest_video | Local path or HTTPS URL → asset_id (never video bytes). Platform URLs need SONICMATCH_ALLOW_YTDLP=1 |
analyze_video_music | Mood, energy curve, speech, scenes, hook window, BPM, search queries |
recommend_bgm | 3–7 ranked tracks + why + license + hook in/out |
search_music | Free-text / BPM / mood over seed + optional catalogs |
get_track | One track’s metadata, license, attribution, URLs |
preview_mix | Hook trim, loop, optional ducking → preview files + ffmpeg + mix spec |
export_mix_spec | Mix spec + ffmpeg + attribution (no render unless render=true) |
suggest_cuts | Beat grid, snapped scene cuts, EDL, intro / peak / outro |
generate_bed | Demo bed marked source=generated. Requires i_understand_not_commercially_cleared=true |
save_brand_kit | Persist BPM / moods / no-vocals for recommend_bgm(brand_kit=…) |
analyze_batch | Up to 20 clips → mood cluster + shared mini-playlist |
Also ships a prompt template: “Score this video like an IG music sticker.”
speech_coverage > 0.25cuts at 0.8s average, 112 BPM, warm gold hour)Prompt:
I dropped
./clip.mp4. Analyze it for an Instagram Reel and recommend 5 instrumental BGMs. Then mix the top pick with ducking and give me the ffmpeg command.
The agent should call, in order:
ingest_video with the local path. The result is an asset_id, not video bytes.analyze_video_music with platform_hint set to instagram_reel.recommend_bgm with that asset_id and max_results of 5.preview_mix on the top track with ducking, then export_mix_spec.A recommendation row carries score, reason, suggested_in_out (the hook), ducking, license_ok_for_platform, and content_id_risk (unknown or likely, never cleared). Seed fixtures include seed_golden_hour_latte (CC0-1.0) and seed_indie_porch_110 (CC-BY-4.0). They have no hosted audio. preview_mix synthesizes a demo bed. CC-BY-NC rows are searchable and are not auto-recommended.
claude_desktop_config.json. From git, no clone:
{
"mcpServers": { "sonicmatch": { "command": "uvx", "args": [ "--from", "git+https://github.com/js713-lab/sonic-match-mcp.git", "sonicmatch-mcp" ], "env": { "GEMINI_API_KEY": "", "JAMENDO_CLIENT_ID": "", "FREESOUND_API_KEY": "" } } } }
After a clone, command can be the absolute path of .venv/bin/sonicmatch-mcp. After the PyPI release, args is just ["sonicmatch-mcp"]. Copy-paste files: examples/claude_desktop.mcp.json, examples/claude_desktop.pypi.mcp.json.
.cursor/mcp.json (project) or ~/.cursor/mcp.json. From git, no clone — examples/cursor.mcp.json:
{
"mcpServers": { "sonicmatch": { "command": "uvx", "args": [ "--from", "git+https://github.com/js713-lab/sonic-match-mcp.git", "sonicmatch-mcp" ], "env": { "GEMINI_API_KEY": "", "JAMENDO_CLIENT_ID": "", "FREESOUND_API_KEY": "" } } } }
After PyPI, use examples/cursor.pypi.mcp.json (uvx with args ["sonicmatch-mcp"]). From a clone: "command": "uv", "args": ["--directory", "/absolute/path/to/sonic-match-mcp", "run", "sonicmatch-mcp"]. After pip install, "command": "python3", "args": ["-m", "sonicmatch"] works if that interpreter has the package.
Codex reads ~/.codex/config.toml. The same file is shared with the Codex IDE extension and the ChatGPT desktop app. Works today — examples/codex.config.toml:
[mcp_servers.sonicmatch]
command = "uvx" args = ["--from", "git+https://github.com/js713-lab/sonic-match-mcp.git", "sonicmatch-mcp"]
[mcp_servers.sonicmatch.env] GEMINI_API_KEY = "" JAMENDO_CLIENT_ID = "" FREESOUND_API_KEY = ""
Or from the CLI:
codex mcp add sonicmatch -- uvx --from git+https://github.com/js713-lab/sonic-match-mcp.git sonicmatch-mcp
After the PyPI release, the args shrink to sonicmatch-mcp. That file is [`examples/codex.pypi.config.to
Only the beginning is shown; read the rest in the repo