模块化控制器API服务

GOcontroll Moduline MCP是一个模块化控制器API服务,提供硬件模块管理、网络连接控制、固件更新和项目构建运行等功能,适用于工业自动化和嵌入式系统开发。

  • by GOcontroll
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 GOcontroll/go-mcp

使用说明

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

典型工作流程

  1. get_project_status --检查项目是否准备就绪
  2. list_project_files + read_project_file --复习示例
  3. write_project_file --写 application/main.c
  4. build_project --编译,检查输出是否有错误
  5. run_app --启动应用程序
  6. 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