GOcontrol模块化MCP——概述
建筑
Claude Desktop ──HTTP :8080──► gocontroll-mcp.service (Node.js, /opt/gocontroll/go-mcp/)
│ │
└──mDNS _gocontroll-mcp._tcp──────────────────────────────────┘
两个组成部分:
- 控制器API --Moduline上的Node.js HTTP服务器(
/opt/gocontroll/go-mcp/)
- MCPB束 --用户PC上的MCP服务器,通过安装
.mcpb 文件
控制器API-端点
| 端点 |
方法 |
函数 |
/api/info |
GET |
主机名、序列号、型号、正常运行时间、内核、节点RED状态、IP/MAC |
/api/modules |
GET |
8个模块插槽:名称、硬件/软件版本(通过 go-modules scan) |
/api/modules/firmware |
GET |
中的可用固件文件 /usr/lib/firmware/gocontroll/ |
/api/modules/update |
POST |
更新模块固件-- { slot: "all" | 1-8 } |
/api/modules/overwrite |
POST |
覆盖模块固件-- { slot, firmware } |
/api/mem-sim |
GET |
实时信号值来自 /usr/mem-sim/ (Simulink/节点RED) |
/api/mem-diag |
GET |
激活J1939 DTC故障代码 /usr/mem-diag/ |
/api/power |
GET |
K30(电池)和K15-A/B/C(点火),单位为mV和V(通过IIO/MCP3004) |
/api/can |
GET |
CAN接口can0–can6+CAN-mbm1–3:比特率,上行/下行状态 |
/api/updates |
GET |
将已安装的文件与最新的GitHub版本(GOcontroll Moduline)进行比较 |
/api/test/leds |
GET |
LED硬件测试通过 go-test-leds |
/api/test/can |
GET |
CAN硬件测试通过 go-test-can (需要物理环回) |
/api/network/connections |
GET |
通过NetworkManager实现以太网、WiFi、GSM连接 |
/api/network/wifi |
GET |
可用WiFi网络(SSID、信号、安全) |
/api/network/wifi/connect |
POST |
连接到WiFi-- { ssid, password } |
/api/network/connection/up |
POST |
激活连接-- { name } |
/api/network/connection/down |
POST |
停用连接-- { name } |
错误格式: { "error": "...", "code": 404 }
MCP工具——MCPB捆绑包
| 工具 |
参数 |
调用 |
discover_controllers |
-- |
mDNS扫描,回退到已知地址 |
get_controller_info |
host |
/api/info |
get_modules |
host |
/api/modules |
list_module_firmware |
host |
/api/modules/firmware |
update_modules |
host, slot |
/api/modules/update |
overwrite_module |
host, slot, firmware |
/api/modules/overwrite |
get_mem_sim |
host |
/api/mem-sim |
get_dtc_codes |
host |
/api/mem-diag |
get_power_supply |
host |
/api/power |
get_can_interfaces |
host |
/api/can |
check_for_updates |
host |
/api/updates --与GitHub版本进行比较 |
test_leds |
host |
/api/test/leds |
test_can |
host |
/api/test/can --需要物理CAN环回 |
get_network_connections |
host |
/api/network/connections |
scan_wifi |
host |
/api/network/wifi |
connect_wifi |
host, ssid, password? |
/api/network/wifi/connect |
set_network_connection |
host, name, action |
/api/network/connection/up|down |
基础设施
| 组件 |
位置 |
状态 |
| systemd服务 |
/etc/systemd/system/gocontroll-mcp.service |
enabled, Restart=always |
| Avahi mDNS |
/etc/avahi/services/gocontroll-mcp.service |
_gocontroll-mcp._tcp:8080 |
systemctl status gocontroll-mcp
journalctl -u gocontroll-mcp -f
添加扩展
1.API终点 --创建 lib/feature.js,添加路线 server.js,重新启动服务。
2.MCP工具 --添加 server.tool(...) 在 mcpb/server/index.js,通过GitHub Actions重建捆绑包。
项目/构建/运行API
项目路径: /home/project/GOcontroll-Project
| 端点 |
方法 |
函数 |
/api/project/status |
GET |
Git提交,应用程序。如果存在,应用程序正在运行/已停止 |
/api/project/setup |
POST |
Git克隆或pull+子模块更新 |
/api/project/files |
GET |
文件在 application/ 和 examples/ |
/api/project/file?path=... |
GET |
读取项目文件的内容 |
/api/project/file |
POST |
将文件写入 application/ — { path, content } |
/api/project/build |
职位 |
make clean && make [target] --返回完整的编译器输出 |
/api/project/run |
POST |
开始 build/app.elf 作为后台进程 |
/api/project/stop |
POST |
停止使用SIGTERM运行应用程序 |
/api/project/run/output?lines=N |
GET |
应用程序中stdout/stderr的最后N行 |
MCP工具——项目/构建/运行
| 工具 |
参数 |
说明 |
get_project_status |
host |
状态概述:git、构建、运行中 |
setup_project |
host |
克隆或更新项目 |
list_project_files |
host |
应用程序中的文件/和示例/ |
read_project_file |
host, path |
读取源文件(包括示例) |
write_project_file |
host, path, content |
将C代码写入应用程序/ |
build_project |
host, target? |
使用make编译,返回编译器输出 |
run_app |
host |
在后台启动build/app.elf |
stop_app |
host |
停止正在运行的应用程序 |
get_app_output |
host, lines? |
从应用程序读取最近的stdout/stderr |
典型工作流程
get_project_status --检查项目是否准备就绪
list_project_files + read_project_file --复习示例
write_project_file --写 application/main.c
build_project --编译,检查输出是否有错误
run_app --启动应用程序
get_app_output --查看输出/调试
计划扩展
| 功能 |
端点 |
工具 |
| 读取输入通道 |
GET /api/input/:slot/:channel |
read_input |
| 控制输出模块 |
POST /api/output |
set_output |
| 读取CAN消息 |
GET /api/can/:iface/recv |
read_can |
| 发送CAN消息 |
POST /api/can/:iface/send |
send_can |
| 读取日志文件 |
GET /api/log |
tail_log |
| 控制器温度 |
GET /api/temperature |
get_temperature |
| 更改CAN比特率 |
POST /api/can/:iface/bitrate |
set_can_bitrate |