EPICS-MCP-Server 是一个基于 Python 的服务器,旨在与 EPICS(实验物理和工业控制系统)过程变量(PV)进行交互。它提供了一组工具,用于检索 PV 值、设置 PV 值以及获取 PV 的详细信息。该服务器使用 mcp 框架构建,并通过标准输入输出进行通信,适合集成到更大的控制系统或工作流程中。
若要将此服务器与 Langchain 结合使用,你需要安装项目所需的依赖项:
pip install -r requirements.txt
server_params = StdioServerParameters(
command="python",
# 请确保更新为你的 math_server.py 文件的完整绝对路径
args=["/path/server.py"],
)
在使用 EPCIS mcp 服务器之前,你必须在本地机器上成功安装 EPCIS,确保 IOC 能够正常启动,并验证 caget、caput 和 cainfo 等功能是否正常工作。详细的安装说明请参考 https://epics-controls.org/resources-and-support/base/。
以下是启动 IOC 并验证功能的示例:
jiangyan@DESKTOP-84CO9VB:~$ softIoc -d ~/EPICS/DB/test.db
Starting iocInit
############################################################################
## EPICS R7.0.8
## Rev. 2025-02-13T14:29+0800
## Rev. Date build date/time:
############################################################################
iocRun: All initialization complete
epics>
jiangyan@DESKTOP-84CO9VB:~$ caget temperature:water
temperature:water 88
jiangyan@DESKTOP-84CO9VB:~$ caput temperature:water 100
Old : temperature:water 88
New : temperature:water 100
jiangyan@DESKTOP-84CO9VB:~$ cainfo temperature:water
temperature:water
State: connected
Host: 127.0.0.1:5056
Access: read, write
Native data type: DBF_DOUBLE
Request type: DBR_DOUBLE
Element count: 1
EPICS MCP 服务器提供了以下工具:
get_pv_value
pv_name(字符串):PV 变量的名称。success 或 error)以及检索到的值或错误消息。set_pv_value
pv_name(字符串):PV 变量的名称。pv_value(字符串):要为 PV 设置的新值。success 或 error)以及确认消息或错误消息。get_pv_info
pv_name(字符串):PV 变量的名称。success 或 error)以及 PV 的详细信息或错误消息。以下是使用 Mcp 客户端的示例:
async def run():
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
# 初始化连接
await session.initialize()
# 获取工具
tools = await load_mcp_tools(session)
# 创建并运行代理
agent = create_react_agent(model, tools)
agent_response = await agent.ainvoke({"messages": "To query the value of a PV (Process Variable) named temperature:water"})
return agent_response
)
================================[1m Human Message [0m=================================
To query the value of a PV (Process Variable) named temperature:water
==================================[1m Ai Message [0m==================================
Tool Calls:
get_pv_value (call_vvbXwi51CyYUxEM0hcyvCFCY)
Call ID: call_vvbXwi51CyYUxEM0hcyvCFCY
Args:
pv_name: temperature:water
=================================[1m Tool Message [0m=================================
Name: get_pv_value
{
"status": "success",
"value": 88.0
}
==================================[1m Ai Message [0m==================================
The current value of the PV named `temperature:water` is 88.0.