crosspad mcp服务器
MCP(模型上下文协议)服务器,使Claude Code能够完全控制CrossPad开发工作流程——构建、测试、管理应用程序包、与模拟器交互、跨存储库搜索代码。都是自然语言。
安装
claude mcp add crosspad -- npx -y crosspad-mcp-server或者使用自定义仓库路径:
claude mcp add crosspad \
--env CROSSPAD_IDF_ROOT=/path/to/platform-idf \
--env CROSSPAD_PC_ROOT=/path/to/crosspad-pc \
-- npx -y crosspad-mcp-server就是这样。重新启动Claude Code,工具就可用了。
备选方案: .mcp.json 在您的项目中
添加到您的repo根目录中——Claude Code会自动拾取它:
{
"mcpServers": {
"crosspad": {
"type": "stdio",
"command": "npx",
"args": ["-y", "crosspad-mcp-server"],
"env": {
"CROSSPAD_IDF_ROOT": "/path/to/platform-idf",
"CROSSPAD_PC_ROOT": "/path/to/crosspad-pc"
}
}
}
}替代方案:克劳德桌面
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)或 %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"crosspad": {
"command": "npx",
"args": ["-y", "crosspad-mcp-server"],
"env": {
"CROSSPAD_IDF_ROOT": "/path/to/platform-idf"
}
}
}
}工具(28)+资源
v8统一了平台轴工具:构建/运行/杀死/检查/flash立即获取platform(或transport)作为arg,而不是按平台拆分。此文件底部的迁移表。
每个工具都专注于一个动作。严格的模式验证(MIDI/pad值的范围,平台/repos上的枚举)在执行前捕获错误的输入。
构建和闪存
| 工具 | 目的 | |
|---|---|---|
crosspad_build | 为 `platform: pc\ | idf (mode:PC的增量/清理/重新配置,IDF的增量/清洁/完全清洁; build_type` 适用于PC) |
crosspad_run | 发射内置模拟器(platform: pc),返回PID+后生成TCP就绪探测 | |
crosspad_kill | 停止运行模拟器(platform: pc,SIGTERM按exe名称匹配) | |
crosspad_check | 健康检查(platform: pc):过时的exe、新的源代码、子模块漂移 | |
crosspad_flash | 将固件闪存到设备(`transport: uart\ | ota, port?, firmware_path?` 仅限ota) |
crosspad_log | 捕获日志(target:pc=生成二进制文件/idf=读取串行文件) | |
crosspad_devices | 列出USB串行设备,标记CrossPad |
测试
| 工具 | 目的 |
|---|---|
crosspad_test_run | 构建+运行Catch2套件(filter, list_only) |
模拟器交互
| 工具 | 目的 |
|---|---|
crosspad_screenshot | PNG屏幕截图(默认为file_path; return_inline 对于base64) |
crosspad_input | 所有输入事件:pad_press/release、encoder\_\*、click、key(action 现场) |
crosspad_midi | 所有MIDI事件:note_on/off、cc、program_change(type 现场) |
crosspad_stats | 运行时状态:焊盘、功能、堆、应用程序 |
crosspad_settings_get / crosspad_settings_set | 读/写设置 |
Git/仓库
| 工具 | 目的 |
|---|---|
crosspad_repo_status | 所有检测到的存储库的状态 |
crosspad_repo_diff | 跨板pc/平台idf中的子模块漂移 |
crosspad_submodule_update | 将子模块更新为 `origin/ |
| ` 和舞台 | |
crosspad_commit | 提交分阶段的更改(拒绝冲突;从不推动) |
代码搜索和脚手架
| 工具 | 目的 |
|---|---|
crosspad_search_symbols | 查找类/函数/宏/枚举/类型定义 |
crosspad_list_interfaces | 列出跨板核心接口 |
crosspad_interface_implementations | 查找给定接口的实现 |
crosspad_capabilities | 能力标志+每个平台集 |
crosspad_list_apps_source | 通过注册的应用程序 REGISTER_APP() 宏观 |
应用程序包管理器(跨广告应用程序注册表)
| 工具 | 目的 |
|---|---|
crosspad_apps_list | 从注册表+安装的应用程序(不需要Python) |
crosspad_apps_install | 将应用程序作为子模块安装(platform, app_name, ref, force) |
crosspad_apps_remove | 删除已安装的应用程序子模块 |
crosspad_apps_update | 更新一个(app_name)或全部(update_all)应用程序 |
crosspad_apps_sync | 根据磁盘状态重建清单 |
资源
| URI | 目的 |
|---|---|
crosspad://workspace | JSON快照:检测到的存储库、分支、HEAD、脏计数、PC模拟器运行状态。无需工具调用即可加载——客户端(例如Claude Code)可以将其固定为会话上下文。 |
| `crosspad://apps/registry/ | |
| ` | 生的 app-registry.json 每个检测到的平台(pc/idf/ep32-s3)。 |
| `crosspad://apps/installed/ | |
| ` | 生的 apps.json (已安装清单)每个检测到的平台。 |
crosspad://symbols/{repo}/{symbol} | 资源模板--解析中单个符号的定义 ` (或 all).MCP原生替代品 crosspad_search_symbols` 对于已知的符号+回购对。 |
迁移:v7→ v8
平台/传输现在作为arg流动,而不是作为工具名称的一部分。净值:30→ 28 工具。
| 旧(v7) | 新(v8) |
|---|---|
crosspad_build_pc | crosspad_build 和 platform: pc |
crosspad_build_idf | crosspad_build 和 platform: idf |
crosspad_run_pc | crosspad_run 和 platform: pc |
crosspad_kill_pc | crosspad_kill 和 platform: pc |
crosspad_check_pc | crosspad_check 和 platform: pc |
crosspad_flash_uart | crosspad_flash 和 transport: uart |
crosspad_flash_ota | crosspad_flash 和 transport: ota |
运行/杀死/检查今天只适用于PC( platform arg是为将来的对称性保留的——IDF固件不在主机上运行)。构建模式按平台进行验证: reconfigure 仅限于PC; fullclean 只有IDF。
迁移:v6→ v7
工具已移除(逻辑已移至文档): crosspad_scaffold_app, crosspad_test_scaffold. 工具整合:
| 旧(v6) | 新(v7) |
|---|---|
crosspad_pad_press, crosspad_pad_release, crosspad_encoder_rotate, crosspad_encoder_press, crosspad_encoder_release, crosspad_click, crosspad_key | crosspad_input 和 action 现场 |
crosspad_midi_note_on, crosspad_midi_note_off, crosspad_midi_cc, crosspad_midi_program_change | crosspad_midi 和 type 现场 |
crosspad_log_pc, crosspad_log_idf | crosspad_log 和 target 现场 |
净值:42工具→ 30 工具+1资源(v7)。v8中的后续统一→ 28 工具(见上文)。
所有工具都返回一个统一的信封: { "success": boolean, ...data, "error"?: string }失败时,结果也有MCP协议 isError: true 设置标志,以便客户端可以将错误与成功呼叫区分开来。
每个工具都携带 MCP注释 (readOnlyHint, destructiveHint, openWorldHint)--客户端将这些用于确认提示。只读工具(状态、搜索、列表)跳过提示;破坏性工具(commit、flash、build_idf clean、apps_install)会触发一个。
配置
每个repo路径都可以通过env-vars单独配置。如果未设置,则回退到 $CROSSPAD_GIT_DIR/ (平面布局)。
| 变量 | 默认值 | 描述 |
|---|---|---|
CROSSPAD_GIT_DIR | ~/GIT | 基本目录(平面布局回退) |
CROSSPAD_PC_ROOT | $GIT_DIR/crosspad-pc | PC模拟器仓库 |
CROSSPAD_IDF_ROOT | $GIT_DIR/platform-idf | ESP-IDF平台仓库 |
CROSSPAD_ARDUINO_ROOT | $GIT_DIR/ESP32-S3 | Arduino平台仓库 |
CROSSPAD_CORE_ROOT | $GIT_DIR/crosspad-core | 交叉板核心(独立) |
CROSSPAD_GUI_ROOT | $GIT_DIR/crosspad-gui | 跨板图形用户界面(独立) |
IDF_PATH | 自动检测(~/esp/esp-idf) | ESP-IDF SDK路径 |
VCPKG_ROOT | ~/vcpkg (Linux)/ C:/vcpkg (Win) | vcpkg安装 |
VCVARSALL | VS2022默认值 | MSVC vcvarsall.bat(仅限Windows) |
CROSSPAD_REMOTE_PORT | 19840 | 用于模拟器远程控制的TCP端口 |
CROSSPAD_REMOTE_HOST | 127.0.0.1 | 用于模拟器远程控制的TCP主机 |
存储库是动态发现的——只有磁盘上存在的存储库才会出现在工具结果中。设置env变量时,不假定有平面目录结构。
运输
stdio(默认) — npx crosspad-mcp-server克劳德代码/Claude桌面/IDE插件的标准MCP传输。
HTTP(--http ) — npx crosspad-mcp-server --http 3000。在以下位置公开可流式传输的HTTP端点 http://localhost: /mcp 用于远程开发箱或基于浏览器的MCP客户端。有意义的会议(Mcp-Session-Id 头球在后面回响 initialize).一次传输,内部多路复用多会话。
# Minimal HTTP smoke test:
npx crosspad-mcp-server --http 3000
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"x","version":"0"}}}'运作原理
静态工具 (构建、存储库、代码、应用程序)在没有模拟器的情况下工作——它们在文件系统、git和Python包管理器上运行。
交互式工具 (sim)通过TCP与正在运行的PC模拟器通信 localhost:19840 使用换行符分隔的JSON。
流媒体 --长时间运行的工具(构建、测试、日志)通过MCP日志逐行发出输出,因此Claude可以实时看到进度。
应用程序管理器 --直接读取注册表JSON以进行列表(在所有存储库中聚合)。突变委托给 app_manager.py (at tools/ 对于IDF, scripts/ 适用于PC/Arduino) 跨广告应用程序.
发展
git clone https://github.com/CrossPad/crosspad-mcp.git
cd crosspad-mcp
npm install
npm run dev # watch mode
npm run build # one-shot build
npm test # run unit tests
npm run test:watch # tests in watch modesrc/
index.ts — 41 focused tool registrations (one tool per action)
config.ts — per-repo env vars, dynamic discovery, IDF/MSVC paths
config.test.ts — config unit tests (fs mocking)
utils/
exec.ts — platform-aware command execution (MSVC/IDF/shell)
git.ts — repo status, submodule pins
remote-client.ts — TCP client for simulator (localhost:19840)
tools/
app-manager.ts — crosspad_apps: multi-platform registry + Python subprocess
architecture.ts — interfaces, REGISTER_APP scan
build.ts — PC build + run
build-check.ts — build health check
diff-core.ts — submodule drift analysis
idf-build.ts — ESP-IDF build
input.ts — simulator input events
log.ts — exe log capture
repos.ts — multi-repo git status
scaffold.ts — app boilerplate generation
screenshot.ts — simulator screenshots
settings.ts — simulator settings R/W
stats.ts — simulator runtime stats
symbols.ts — cross-repo symbol search
test.ts — Catch2 test runner
*.test.ts — unit tests for each module许可证
麻省理工学院—— CrossPad 项目。
