项目简介

这是一个利用 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 服务器负责处理。

信息

分类

桌面与硬件