Skip to main content
Glama
Jacky1-Jiang

EPICS MCP Server

by Jacky1-Jiang

EPICS-MCP服务器

概述

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

  • 该工具在使用 EPICS PV 监控和控制硬件或软件参数的环境中特别有用。

特征

  • EPICS MCP 服务器提供以下工具:

  1. 获取 pv_value

    • 在存储库中创建或更新单个文件

    • 输入:

      • pv_name (字符串):PV 变量的名称。

    • 返回:包含状态( successerror )和检索到的值或错误消息的 JSON 对象。

  2. 设置 pv_value

    • 为指定的 PV 设置新值。

    • 输入:

      • pv_name (字符串):PV 变量的名称。

      • pv_value (字符串):要为 PV 设置的新值。

    • 返回:包含状态( successerror )和确认消息或错误消息的 JSON 对象。

  3. 获取 pv_info

    • 获取有关指定 PV 的详细信息。

    • 输入:

      • pv_name (字符串):PV 变量的名称。

    • 返回:一个 JSON 对象,包含状态( successerror )以及有关 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 能够正常启动,并验证cagetcaputcainfo等功能是否正常运行。详细安装说明请参阅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
)
  • 结果:

================================ 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.
-
security - not tested
A
license - permissive license
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Jacky1-Jiang/EPICS-MCP-Server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server