EPICS-MCP服务器
概述
- EPICS MCP 服务器是一款基于 Python 的服务器,旨在与 EPICS(实验物理和工业控制系统)过程变量 (PV) 交互。它提供了一组工具来检索 PV 值、设置 PV 值以及获取有关 PV 的详细信息。该服务器使用 mcp 框架构建,并通过 stdio 进行通信,因此非常适合集成到更大型的控制系统或工作流程中。
- 该工具在使用 EPICS PV 监控和控制硬件或软件参数的环境中特别有用。
特征
- 获取 pv_value
- 在存储库中创建或更新单个文件
- 输入:
- 返回:包含状态(
success
或error
)和检索到的值或错误消息的 JSON 对象。
- 设置 pv_value
- 为指定的 PV 设置新值。
- 输入:
pv_name
(字符串):PV 变量的名称。pv_value
(字符串):要为 PV 设置的新值。
- 返回:包含状态(
success
或error
)和确认消息或错误消息的 JSON 对象。
- 获取 pv_info
- 获取有关指定 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"],
)
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
测试结果
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.