EPICS-MCP服务器
概述
EPICS MCP 服务器是一款基于 Python 的服务器,旨在与 EPICS(实验物理和工业控制系统)过程变量 (PV) 交互。它提供了一组工具来检索 PV 值、设置 PV 值以及获取有关 PV 的详细信息。该服务器使用 mcp 框架构建,并通过 stdio 进行通信,因此非常适合集成到更大型的控制系统或工作流程中。
该工具在使用 EPICS PV 监控和控制硬件或软件参数的环境中特别有用。
特征
EPICS MCP 服务器提供以下工具:
获取 pv_value
在存储库中创建或更新单个文件
输入:
pv_name(字符串):PV 变量的名称。
返回:包含状态(
success或error)和检索到的值或错误消息的 JSON 对象。
设置 pv_value
为指定的 PV 设置新值。
输入:
pv_name(字符串):PV 变量的名称。pv_value(字符串):要为 PV 设置的新值。
返回:包含状态(
success或error)和确认消息或错误消息的 JSON 对象。
获取 pv_info
获取有关指定 PV 的详细信息。
输入:
pv_name(字符串):PV 变量的名称。
返回:一个 JSON 对象,包含状态(
success或error)以及有关 PV 或错误消息的详细信息。
与 Langchain 一起使用
要将其与 Langchain 一起使用,您必须安装项目所需的依赖项。
pip install -r requirements.txt朗查因
server_params = StdioServerParameters(
command="python",
# Make sure to update to the full absolute path to your math_server.py file
args=["/path/server.py"],
)史诗
在使用 EPCIS mcp 服务器之前,您必须在本地计算机上成功安装 EPCIS,确保 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+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
测试结果
Mcp 客户端:
async def run():
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
# Initialize the connection
await session.initialize()
# Get tools
tools = await load_mcp_tools(session)
# Create and run the agent
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.