EPICS-MCP-сервер
Обзор
- EPICS MCP Server — это сервер на основе Python, разработанный для взаимодействия с переменными процесса (PV) EPICS (Experimental Physics and Industrial Control System). Он предоставляет набор инструментов для извлечения значений PV, установки значений PV и получения подробной информации о PV. Сервер создан с использованием фреймворка mcp и взаимодействует через stdio, что делает его пригодным для интеграции в более крупные системы управления или рабочие процессы.
- Этот инструмент особенно полезен в средах, где фотоэлектрические модули EPICS используются для мониторинга и управления параметрами оборудования или программного обеспечения.
Функции
- Сервер EPICS MCP предоставляет следующие инструменты:
- получить_pv_value
- Создать или обновить отдельный файл в репозитории
- Входные данные:
pv_name
(строка): Имя переменной PV.
- Возвращает: объект JSON, содержащий статус (
success
или error
) и полученное значение или сообщение об ошибке.
- set_pv_value
- Установите новое значение для указанного PV.
- Входные данные:
pv_name
(строка): Имя переменной PV.pv_value
(строка): новое значение, которое будет установлено для PV.
- Возвращает: объект JSON, содержащий статус (
success
или error
), а также сообщение с подтверждением или сообщение об ошибке.
- получить_pv_info
- Получает подробную информацию об указанном PV.
- Входные данные:
pv_name
(строка): Имя переменной PV.
- Возвращает: объект JSON, содержащий статус (
success
или error
) и подробную информацию о 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 может нормально запуститься, и проверить, что такие функции, как
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
Результат теста
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.