使用说明
炼油厂roborio mcp
一个嵌入式MCP(模型上下文协议)服务器,在roboRIO(和模拟中)的FRC机器人代码内运行。通过HTTP JSON-RPC 2.0向AI助手(GitHub Copilot、Claude等)公开机器人状态、匹配信息、子系统状态和NetworkTables浏览。
支持 Java, C,以及 python (RobotPy)机器人项目。
改编自 open-ds.ai的MCP服务器,但直接从WPILib API读取(DriverStation, RobotController, CommandScheduler, NetworkTables)而不是来自驾驶员站GUI。
安装
复合构建(用于开发)
在你的机器人项目中 settings.gradle:
includeBuild 'refinery-roborio-mcp'
在你的 build.gradle 依赖关系:
implementation 'com.bionanomics.refinery:refinery-roborio-mcp'
供应商部(用于分销)
即将推出 --一旦发布到Maven存储库,团队将把供应商JSON URL粘贴到他们的项目中。
用法
Java
在你的 Robot.java robotInit():
import com.bionanomics.refinery.mcp.RoboRioMcpServer;
@Override
public void robotInit() {
// ... existing init code ...
RoboRioMcpServer.start(); // default port 8765
// RoboRioMcpServer.start(9000); // or custom port
}
C
在你的 Robot.cpp RobotInit():
#include <refinery/mcp/RoboRioMcpServer.h>
void Robot::RobotInit() {
// ... existing init code ...
refinery::mcp::RoboRioMcpServer::Start(); // default port 8765
// refinery::mcp::RoboRioMcpServer::Start(9000); // or custom port
}
Python(RobotPy)
安装软件包:
pip install refinery-roborio-mcp
在你的 robot.py:
import wpilib
from refinery_roborio_mcp import RoboRioMcpServer
class MyRobot(wpilib.TimedRobot):
def robotInit(self):
# ... existing init code ...
RoboRioMcpServer.start() # default port 8765
# RoboRioMcpServer.start(9000) # or custom port
MCP客户端配置
VS代码(GitHub副本)
增添 .vscode/mcp.json:
{
"servers": {
"roborio-mcp-sim": {
"type": "http",
"url": "http://localhost:8765/mcp"
},
"roborio-mcp": {
"type": "http",
"url": "http://10.TE.AM.2:8765/mcp"
}
}
}
替换 10.TE.AM.2 使用您团队的roboRIO IP(例如。, 10.99.99.2 9999队)。
克劳德桌面版
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"roborio-mcp-sim": {
"url": "http://localhost:8765/mcp"
},
"roborio-mcp": {
"url": "http://10.TE.AM.2:8765/mcp"
}
}
}
替换 10.TE.AM.2 使用您团队的roboRIO IP(例如。, 10.99.99.2 9999队)。
可用工具
所有工具都是 只读 --无需通过MCP进行机器人控制。
| 工具 | 说明 |
|---|---|
get_robot_status |
启用状态、操作模式、紧急停止、蓄电池电压、断电、代码状态 |
get_battery_voltage |
蓄电池电压加倍 |
get_match_info |
联盟颜色/站、比赛类型/号码、比赛信息、比赛时间 |
get_robot_stats |
CAN总线状态、3.3V/5V/6V轨道电压/电流/故障、输入电压 |
get_connection_info |
驾驶员站已连接,FMS已连接 |
get_subsystems |
已注册的子系统+其当前/默认命令 |
get_networktables |
浏览网络表树(接受可选 path 参数,默认值 /) |
建筑
Java
- 零外部依赖 --使用轻量级的内置JSON实现(没有Gson/Jackson)
- WPILib是
compileOnly--消费机器人项目在运行时提供WPILib - 2线程HTTP服务器 --通过以下方式使用roboRIO友好的资源
com.sun.net.httpserver
C
- 用途
wpi::json(与WPILib捆绑在一起的nlohmann JSON)——不需要自定义JSON解析器 - POSIX插座 对于HTTP--零外部依赖
- 2个工作线程池 使用专用的接受线程--roboRIO友好的资源使用
- 作为源分发 --由消费机器人项目编译的headers+源代码
python
- 纯 Python --使用stdlib
http.server,json,threading(除了RobotPy之外没有外部依赖) - RobotPy WPILib绑定 --通道
wpilib,ntcore,commands2由RobotPy提供 - 守护进程线程HTTP服务器 --roboRIO友好,使用机器人代码自动停止
- 以pip包形式分发 —
pip install refinery-roborio-mcp
共同
- MCP协议版本:
2025-03-26 - 运输: 端口8765上的流式HTTP
- 所有工具都是只读的 --无需通过MCP进行机器人控制
- 7工具 显示机器人状态、电池、比赛信息、统计数据、连接、子系统和网络表
许可证
麻省理工学院