EPICS 控制系统 MCP 服务器是基于 Python 开发的服务器,主要用于和 EPICS(实验物理和工业控制系统)过程变量(PVs)进行交互。它提供了获取 PV 值、设置 PV 值以及检索 PV 详细信息等工具,适合集成到大型控制系统或工作流中,在监控和控制软硬件参数的场景中十分实用。
要使用该服务器,需要完成相关依赖的安装以及环境的配置。
与 Langchain 结合使用时,需安装项目所需的依赖项:
pip install -r requirements.txt
server_params = StdioServerParameters(
command="python",
# 确保将 math_server.py 文件的完整绝对路径更新到此处
args=["/path/server.py"],
)
在使用 EPICS MCP 服务器前,要在本地计算机成功安装 EPICS,保证 IOC 能正常启动,并且验证 caget、caput 和 cainfo 等功能可正常工作。详细安装说明请参考 https://epics-controls.org/resources-and-support/base/。
jiangyan@DESKTOP-84CO9VB:~$ softIoc -d ~/EPICS/DB/test.db
Starting iocInit
############################################################################
## EPICS R7.0.8
## Rev. 2025-02-13T14:29+08:00
############################################################################
... 启动日志 ...
jiangyan@DESKTOP-84CO9VB:~$ caget temperature.readback.value
88.0
EPICS MCP 服务器提供了以下工具:
pv_name (字符串):PV 变量的名称。success 或 error) 和检索到的值或错误消息的 JSON 对象。pv_name (字符串):PV 变量的名称。pv_value (字符串):要设置的新 PV 值。success 或 error) 和确认消息或错误消息的 JSON 对象。pv_name (字符串):PV 变量的名称。success 或 error) 和 PV 的详细信息或错误消息的 JSON 对象。以下是测试结果示例:
{
"pv_name": "temperature.readback.value",
"pv_value": 88.0,
"timestamp": "2025-02-13T14:29:00"
}
以下是完整的测试日志,展示了使用服务器的一系列操作步骤:
# 测试日志
## 步骤 1:启动 IOC
jiangyan@DESKTOP-84CO9VB:~$ softIoc -d ~/EPICS/DB/test.db
Starting iocInit
############################################################################
## EPICS R7.0.8
## Rev. 2025-02-13T14:29+08:00
############################################################################
... 启动日志 ...
## 步骤 2:连接到 PV
jiangyan@DESKTOP-84CO9VB:~$ caget temperature.readback.value
88.0
## 步骤 3:设置 PV 值
jiangyan@DESKTOP-84CO9VB:~$ caput temperature.setpoint.value 100
Write access allowed by default.
No security callback
old value = 88.0
new value = 100.0
## 步骤 4:获取 PV 信息
jiangyan@DESKTOP-84CO9VB:~$ cainfo temperature.readback.value
{
"pv_name": "temperature.readback.value",
"description": "Temperature Readback Value",
"type": "double",
"value": 100.0,
"alarm Severety": "NO_ALARM",
"timeStamp": "2025-02-13T14:29:00"
}