EPICS MCP 服务器

项目简介

这是一个利用 Model Context Protocol (MCP) 标准构建的服务器,旨在让大型语言模型 (LLM) 或其他支持MCP协议的客户端能够安全、标准化地与 EPICS (Experimental Physics and Industrial Control System) 环境进行交互。它提供了一系列工具来获取 EPICS 过程变量 (PV) 的值、设置 PV 的值以及查询 PV 的详细信息,将复杂的控制系统操作转化为对 LLM 友好的工具调用。

主要功能点

  • 连接 EPICS: 作为 LLM 与 EPICS 系统之间的桥梁。
  • 获取 PV 值: 允许 LLM 通过工具调用获取指定 EPICS 过程变量的当前值。
  • 设置 PV 值: 允许 LLM 通过工具调用设置指定 EPICS 过程变量的新值。
  • 查询 PV 信息: 允许 LLM 通过工具调用获取指定 EPICS 过程变量的详细属性(如状态、访问权限、数据类型等)。
  • MCP 标准兼容: 实现了 MCP 协议的核心功能,支持工具声明和服务端能力描述。
  • Stdio 传输支持: 通过标准输入/输出流进行通信,便于集成。

安装步骤

  1. 安装 EPICS: 首先,确保您已成功安装 EPICS 基础系统,并且相关的 Input/Output Controllers (IOC) 正常运行。您可以使用 'caget', 'caput', 'cainfo' 等 EPICS 命令行工具来验证 EPICS 环境是否工作正常。具体安装指南请参考 EPICS 官方文档。
  2. 克隆项目: 从 GitHub 克隆本项目代码到您的本地计算机。
    git clone https://github.com/Jacky1-Jiang/EPICS-MCP-Server.git
  3. 安装依赖: 进入项目目录,使用 pip 安装所需的 Python 依赖库。
    cd EPICS-MCP-Server
    pip install -r requirements.txt
    这将安装 'mcp' 框架、'pyepics' 等必需的库。

服务器配置

本 EPICS MCP 服务器设计为由 MCP 客户端启动并与其通过标准输入/输出流(Stdio)通信。MCP 客户端(如使用 Langchain MCP 适配器)需要知道如何启动这个服务器进程。配置信息通常在客户端的代码或配置文件中指定,核心是提供服务器的启动命令及其参数。

配置信息通常包含以下关键部分(请注意这仅为说明,实际配置方式取决于您使用的 MCP 客户端库):

  • 'server_name': 服务器的唯一标识符,例如 "epics_tools"。
  • 'command': 用于启动服务器的可执行命令,例如 "python"。
  • 'args': 传递给启动命令的参数列表,通常包含服务器主代码文件的路径。例如:'["/path/to/your/EPICS-MCP-Server/src/epics-mcp-server/server.py"]'。

您需要将 '/path/to/your/EPICS-MCP-Server' 替换为您在本地文件系统中实际存放本项目代码的绝对路径

基本使用方法

成功安装并配置好 EPICS 环境及本 MCP 服务器后,您可以通过支持 MCP 协议的客户端库(如 'mcp-client' 或基于它的适配器,例如 'langchain-mcp-adapters')连接到该服务器。

  1. 客户端连接: 配置您的 MCP 客户端,使其能够通过 Stdio 启动并连接到 'src/epics-mcp-server/server.py' 脚本。
  2. 发现工具: 客户端连接后,会进行初始化握手并通常会自动发现服务器提供的工具列表(通过调用 MCP 的 'list_tools' 方法,本项目服务器已实现响应)。
  3. LLM 调用: 将这些发现的工具提供给 LLM。当用户提出与 EPICS 相关的请求时(例如“请告诉我 temperature:water 的值”),LLM 会识别出需要使用相应的工具(如 'get_pv_value'),并根据用户意图生成工具调用的参数(如 '{"pv_name": "temperature:water"}')。
  4. 执行工具: 客户端接收到 LLM 的工具调用请求后,会通过 MCP 协议将请求发送给本 EPICS MCP 服务器(调用 MCP 的 'call_tool' 方法)。
  5. 返回结果: 服务器执行 EPICS 操作(如 'caget'),并将结果封装成 MCP 响应格式返回给客户端。客户端再将结果提供给 LLM,LLM 根据结果生成用户友好的回复。

整个过程对用户和 LLM 而言都是通过自然的语言交互和标准化的工具接口进行的,底层复杂的 EPICS 交互由本 MCP 服务器负责处理。

服务器信息