Skip to main content
Glama
Jacky1-Jiang

EPICS MCP Server

by Jacky1-Jiang

EPICS-MCP-서버

개요

  • EPICS MCP 서버는 EPICS(실험 물리학 및 산업 제어 시스템) 프로세스 변수(PV)와 상호 작용하도록 설계된 Python 기반 서버입니다. PV 값을 검색하고, 설정하고, PV에 대한 자세한 정보를 가져오는 도구 세트를 제공합니다. 이 서버는 mcp 프레임워크를 사용하여 구축되었으며 stdio를 통해 통신하므로 대규모 제어 시스템이나 워크플로에 통합하는 데 적합합니다.

  • 이 도구는 EPICS PV를 사용하여 하드웨어나 소프트웨어 매개변수를 모니터링하고 제어하는 환경에서 특히 유용합니다.

특징

  • EPICS MCP 서버는 다음과 같은 도구를 제공합니다.

  1. get_pv_value

    • 저장소에서 단일 파일을 생성하거나 업데이트합니다.

    • 입력:

      • pv_name (문자열): PV 변수의 이름입니다.

    • 반환: 상태( success 또는 error )와 검색된 값 또는 오류 메시지를 포함하는 JSON 객체입니다.

  2. 설정_pv_값

    • 지정된 PV에 대한 새 값을 설정합니다.

    • 입력:

      • pv_name (문자열): PV 변수의 이름입니다.

      • pv_value (문자열): PV에 설정할 새 값입니다.

    • 반환: 상태( success 또는 error )와 확인 메시지 또는 오류 메시지가 포함된 JSON 객체입니다.

  3. get_pv_info

    • 지정된 PV에 대한 자세한 정보를 가져옵니다.

    • 입력:

      • pv_name (문자열): PV 변수의 이름입니다.

    • 반환: PV에 대한 상태( success 또는 error )와 자세한 정보 또는 오류 메시지가 포함된 JSON 객체입니다.

Langchain과 함께 사용

  • Langchain과 함께 사용하려면 프로젝트에 필요한 종속성을 설치해야 합니다.

지엑스피1

  • 랭체인

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가 정상적으로 시작되는지 확인하고, 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
)
  • 결과:

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

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