Epics Mcp Server

Epics Mcp Server

🚀 EPICS-MCP-Server

EPICS-MCP-Server 是一个基于 Python 的服务器,旨在与 EPICS(实验物理和工业控制系统)过程变量(PV)进行交互。它提供了一组工具,用于检索 PV 值、设置 PV 值以及获取 PV 的详细信息。该服务器使用 mcp 框架构建,并通过标准输入输出进行通信,适合集成到更大的控制系统或工作流程中。

🚀 快速开始

依赖安装

若要将此服务器与 Langchain 结合使用,你需要安装项目所需的依赖项:

pip install -r requirements.txt

Langchain 配置

server_params = StdioServerParameters(
command="python",
# 请确保更新为你的 math_server.py 文件的完整绝对路径
args=["/path/server.py"],
)

EPICS 安装与验证

在使用 EPCIS mcp 服务器之前,你必须在本地机器上成功安装 EPCIS,确保 IOC 能够正常启动,并验证 cagetcaputcainfo 等功能是否正常工作。详细的安装说明请参考 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 服务器提供了以下工具:

  1. get_pv_value

    • 功能:获取指定 PV 的值。
    • 输入:
      • pv_name(字符串):PV 变量的名称。
    • 返回:一个 JSON 对象,包含状态(successerror)以及检索到的值或错误消息。
  2. set_pv_value

    • 功能:为指定的 PV 设置新值。
    • 输入:
      • pv_name(字符串):PV 变量的名称。
      • pv_value(字符串):要为 PV 设置的新值。
    • 返回:一个 JSON 对象,包含状态(successerror)以及确认消息或错误消息。
  3. get_pv_info

    • 功能:获取指定 PV 的详细信息。
    • 输入:
      • pv_name(字符串):PV 变量的名称。
    • 返回:一个 JSON 对象,包含状态(successerror)以及 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
)

测试结果

================================ Human Message =================================

To query the value of a PV (Process Variable) named temperature:water
================================== Ai Message ==================================
Tool Calls:
get_pv_value (call_vvbXwi51CyYUxEM0hcyvCFCY)
Call ID: call_vvbXwi51CyYUxEM0hcyvCFCY
Args:
pv_name: temperature:water
================================= Tool Message =================================
Name: get_pv_value

{
"status": "success",
"value": 88.0
}
================================== Ai Message ==================================

The current value of the PV named `temperature:water` is 88.0.
  • 0 关注
  • 0 收藏,27 浏览
  • system 提出于 2025-10-06 13:39

相似服务问题

相关AI产品