mcpField
E
EPICS-MCP-Server

EPICS-MCP-Server

本地服务
github.com/Jacky1-Jiang科研与教育475 周前更新

关于 EPICS-MCP-Server

EPICS-MCP-Server 是用于访问 EPICS 过程变量的 Python MCP 服务,面向监控或控制硬件及软件参数的场景。它提供读取、写入和查询变量信息的工具,并通过标准输入输出通信。

主要功能

  1. 01读取过程变量值
  2. 02设置过程变量值
  3. 03查询变量详细信息
  4. 04通过标准输入输出通信

适用场景

  1. 01检查设备监控参数
  2. 02调整硬件或软件参数

MCP 相关

该 MCP 服务向客户端提供读取、设置 EPICS 过程变量及获取变量信息的工具,并通过 stdio 通信。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

EPICS-MCP-Server

smithery 徽章

概述

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

  • 此工具特别适用于使用 EPICS PV 监控和控制硬件或软件参数的环境。

功能

  • EPICS MCP 服务提供以下工具:
  1. get_pv_value

    • 在仓库中创建或更新单个文件
    • 输入:
      • pv_name(字符串):PV 变量的名称。
    • 返回:包含状态(success 或 error)以及获取到的值或错误消息的 JSON 对象。
  2. set_pv_value

    • 为指定的 PV 设置新值。
    • 输入:
      • pv_name(字符串):PV 变量的名称。
      • pv_value(字符串):要为 PV 设置的新值。
    • 返回:包含状态(success 或 error)以及确认消息或错误消息的 JSON 对象。
  3. 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"],
)
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
)
  • 结果:
================================ 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.

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。