关于 EPICS-MCP-Server
EPICS-MCP-Server 是用于访问 EPICS 过程变量的 Python MCP 服务,面向监控或控制硬件及软件参数的场景。它提供读取、写入和查询变量信息的工具,并通过标准输入输出通信。
主要功能
- 01读取过程变量值
- 02设置过程变量值
- 03查询变量详细信息
- 04通过标准输入输出通信
适用场景
- 01检查设备监控参数
- 02调整硬件或软件参数
MCP 相关
该 MCP 服务向客户端提供读取、设置 EPICS 过程变量及获取变量信息的工具,并通过 stdio 通信。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
暂未收录安装方式
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
EPICS-MCP-Server
概述
-
EPICS MCP 服务是一个基于 Python 的服务,旨在与 EPICS(实验物理和工业控制系统)过程变量(PV)交互。它提供一组工具,用于获取 PV 值、设置 PV 值以及获取 PV 的详细信息。该服务基于 mcp 框架构建,使用标准输入输出(stdio)进行通信,因此适合集成到更大型的控制系统或工作流中。
-
此工具特别适用于使用 EPICS PV 监控和控制硬件或软件参数的环境。
功能
- EPICS MCP 服务提供以下工具:
-
get_pv_value
- 在仓库中创建或更新单个文件
- 输入:
pv_name(字符串):PV 变量的名称。
- 返回:包含状态(
success或error)以及获取到的值或错误消息的 JSON 对象。
-
set_pv_value
- 为指定的 PV 设置新值。
- 输入:
pv_name(字符串):PV 变量的名称。pv_value(字符串):要为 PV 设置的新值。
- 返回:包含状态(
success或error)以及确认消息或错误消息的 JSON 对象。
-
get_pv_info
- 获取指定 PV 的详细信息。
- 输入:
pv_name(字符串):PV 变量的名称。
- 返回:包含状态(
success或error)以及 PV 详细信息或错误消息的 JSON 对象。
与 Langchain 搭配使用
- 要将此服务与 Langchain 搭配使用,必须安装项目所需的依赖项。
pip install -r requirements.txt
-
Langchain
server_params = StdioServerParameters(
command="python",
# Make sure to update to the full absolute path to your math_server.py file
args=["/path/server.py"],
)
-
EPICS
- 使用 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.
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。