Figma Context MCP
Give your coding agent access to your Figma data. Implement designs in any framework in one-shot.
作者提供的说明(英文原文)
Music-aware, multi-level comparison of two MusicXML files
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"comparer": {
"command": "uvx",
"args": [
"comparer-mcp"
]
}
}
}在终端中运行这条命令
claude mcp add comparer -- uvx comparer-mcp粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"comparer": {
"command": "uvx",
"args": [
"comparer-mcp"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"comparer": {
"type": "stdio",
"command": "uvx",
"args": [
"comparer-mcp"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月8日
注册名称已通过 GitHub 账户 raulkivi 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(0.2.1)于43天前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Python (uv)。
同一分类中有:Figma Context MCP, Claude Real Video, Figma MCP Server
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
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.
The Figma MCP server brings Figma design context directly into your AI workflow.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
MCP server for music-aware comparison of MusicXML files. Provides structured, multi-level diffs that report what changed between two scores — from global similarity down to individual notes.
omr-mcp output against a known-good referencemusicxml-abc-mcpbash install.sh
See SETUP.md for client config snippets (Claude Desktop, Cursor, Windsurf, Continue, Zed) and TROUBLESHOOTING.md if something doesn't work.
| Tool | Description |
|---|---|
compare_musicxml | Full diff of two scores, inline or by path → structured ComparisonResult JSON |
compare_musicxml_files | Full diff of two MusicXML file paths (.musicxml, .xml, or .mxl) inside the allowed folders → structured ComparisonResult JSON |
quick_similarity | Similarity score (0.0–1.0) + summary statistics only, no per-note detail |
list_changes | Note-level diffs (operation != MATCH), optionally filtered by part name and/or measure range |
generate_comparison_report | Human-readable version comparison report — similarity headline, missing/extra parts and measures, key/time signature changes, note-level differences grouped by measure range (e.g. "transposed by 3 semitones in measures 17-24") |
export_annotated_musicxml | MusicXML with per-note color annotations marking the diff. Small results come back inline (reference_annotated_musicxml + target_annotated_musicxml); large ones are written to files and returned as *_path fields plus a score_summary (return: auto/path/inline). Pass the paths to render-mcp's render_to_pdf/render_to_image as musicxml_path |
describe_score | Title, key, time, tempo, parts (IDs, names, clefs, ranges), measures and duration of a score, without returning the score |
health_check | Server status — verifies music21 is importable and runs a self-comparison smoke test |
list_capabilities | Server metadata per project conventions |
Each score can be passed inline (reference_xml, target_xml) or as a file path (reference_path, target_path; .musicxml, .xml or .mxl), exactly one of each pair. Paths save copying whole scores through the conversation. They must be inside the output folder (SHEET_MUSIC_OUTPUT_ROOT, default the working directory), one of the client's roots, or a folder listed in SHEET_MUSIC_INPUT_ROOTS.
// Compare two MusicXML strings
{ "tool": "compare_musicxml", "arguments": { "reference_xml": " ... ", "target_xml": " ... " } }
// Compare two files { "tool": "compare_musicxml_files", "arguments": { "reference_path": "/path/to/reference.musicxml", "target_path": "/path/to/omr_output.musicxml" } }
// Quick similarity check { "tool": "quick_similarity", "arguments": { "reference_xml": " ... ", "target_xml": " ... " } } // → {"similarity_score": 0.87, "summary": {...}}
// Filtered changes, e.g. "what changed in the Alto, measures 17-24?" { "tool": "list_changes", "arguments": { "reference_xml": " ... ", "target_xml": " ... ", "part": "Alto", "measures": [17, 24] } } // → {"changes": [{"measure_number": 18, "operation": "PITCH_CHANGE", "part_name": "Alto", ...}], "count": 1}
// Human-readable report { "tool": "generate_comparison_report", "arguments": { "reference_xml": " ... ", "target_xml": " ... " } } // → {"report": "Overall similarity: 87% (minor differences)\n...", "similarity_score": 0.87}
// Colored MusicXML diff export — chain straight into render-mcp to visualize { "tool": "export_annotated_musicxml", "arguments": { "reference_xml": " ... ", "target_xml": " ... " } } // → {"reference_annotated_musicxml": "...", "target_annotated_musicxml": "...", // "similarity_score": 0.87, "legend": {"PITCH_CHANGE": "#FF8800", ...}} // For scores over 8 KB (return: "auto", the default): // → {"reference_annotated_musicxml_path": ".../scores/annotated-reference_annotated_musicxml-....musicxml", // "target_annotated_musicxml_path": "...", "similarity_score": 0.87, "legend": {...}, // "score_summary": {"reference_annotated_musicxml": {...}, "target_annotated_musicxml": {...}}}
// Paths instead of inline text { "tool": "quick_similarity", "arguments": { "reference_path": "scores/reference.musicxml", "target_path": "scores/omr_output.mxl" } }
compare_musicxml, compare_musicxml_files, generate_comparison_report, and export_annotated_musicxml all accept an optional options object:
{
"expand_repeats": false, // unfold repeats before comparing (default: false — opt-in) "normalize_pitch": false, // transpose transposing instruments to concert/sounding pitch "ignore_articulations": false, // exclude articulations from NoteInfo/diffs "parts": ["Soprano"], // compare only these parts: IDs, names or voices ("P1", "S"); // part_filter is a deprecated alias "measures": [1, 32] // only differences in measures 1-32, inclusive (scores are not // cut); measure_range is a deprecated alias }
The comparison engine (src/comparer_mcp/engine.py) has no MCP dependency and is fully usable as a plain Python library, independent of the MCP server:
cd comparer-mcp
uv sync
from comparer_mcp.engine import compare, compare_files
result = compare(reference_xml, target_xml)
result = compare_files("reference.musicxml", "omr_output.mxl")
print(result.similarity_score) # float, 0.0-1.0 print(result.summary) # ComparisonSummary: parts/measures/notes matched, missing, changed print(result.part_diffs) # list[PartDiff] -> list[MeasureDiff] -> list[NoteDiff]
Errors are raised as comparer_mcp.engine.ProcessingError (e.g. for a missing file or invalid MusicXML), carrying a .error_code attribute (FILE_NOT_FOUND, INVALID_INPUT, etc.) matching the format the MCP tools return.
# Unit tests
VIRTUAL_ENV= .venv/bin/pytest tests/ -v -m "not integration"
VIRTUAL_ENV= .venv/bin/pytest tests/ -v -m integration
uv sync
| Phase | Status |
|---|---|
| Phase 1 — Core comparison (MVP) | Complete — 45/45 tests passing (43 unit + 2 integration) |
| Phase 2 — Rich detail (key/time signature diffs, voice-aware alignment, articulations) | Complete — 67/67 tests passing (65 unit + 2 integration) |
Phase 3 — MCP server & integration (server.py, all 6 tools, install.sh, SETUP.md, client config examples) | Complete — 94/94 tests passing (90 unit + 4 integration) |
Phase 4 — Advanced features (options wiring, generate_comparison_report, export_annotated_musicxml) | Complete — 134/134 tests passing (127 unit + 7 integration) |
UX Wave 2 — Score references (reference_path/target_path, return for the annotated export, describe_score) | Complete — 239 unit tests passing (+7 integration) |