机器人状态协议服务器

一个运行在FRC机器人代码中的嵌入式MCP服务器,通过HTTP JSON-RPC 2.0向AI助手提供机器人状态、比赛信息、子系统状态和NetworkTables浏览功能。

  • by BioNanomics
  • Java
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 BioNanomics/refinery-roborio-mcp

使用说明

炼油厂roborio mcp

一个嵌入式MCP(模型上下文协议)服务器,在roboRIO(和模拟中)的FRC机器人代码内运行。通过HTTP JSON-RPC 2.0向AI助手(GitHub Copilot、Claude等)公开机器人状态、匹配信息、子系统状态和NetworkTables浏览。

设置短视频<1min

支持 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工具 显示机器人状态、电池、比赛信息、统计数据、连接、子系统和网络表

许可证

麻省理工学院