EPICS-MCP-Server
Überblick
- Der EPICS MCP Server ist ein Python-basierter Server, der für die Interaktion mit EPICS-Prozessvariablen (Experimental Physics and Industrial Control System) entwickelt wurde. Er bietet eine Reihe von Tools zum Abrufen und Festlegen von PV-Werten sowie zum Abrufen detaillierter Informationen zu PVs. Der Server basiert auf dem MCP-Framework und kommuniziert über stdio. Dadurch eignet er sich für die Integration in größere Steuerungssysteme oder Workflows.
- Dieses Tool ist besonders in Umgebungen nützlich, in denen EPICS PVs zur Überwachung und Steuerung von Hardware- oder Softwareparametern verwendet werden.
Merkmale
- Der EPICS MCP-Server bietet die folgenden Tools:
- get_pv_value
- Erstellen oder Aktualisieren einer einzelnen Datei in einem Repository
- Eingänge:
pv_name
(Zeichenfolge): Der Name der PV-Variable.
- Gibt zurück: Ein JSON-Objekt, das den Status (
success
oder error
) und den abgerufenen Wert oder eine Fehlermeldung enthält.
- setze_pv_value
- Legen Sie einen neuen Wert für einen angegebenen PV fest.
- Eingänge:
pv_name
(Zeichenfolge): Der Name der PV-Variable.pv_value
(Zeichenfolge): Der neue Wert, der für den PV festgelegt werden soll.
- Gibt zurück: Ein JSON-Objekt, das den Status (
success
oder error
) und eine Bestätigungsnachricht oder eine Fehlermeldung enthält.
- get_pv_info
- Ruft detaillierte Informationen zu einem angegebenen PV ab.
- Eingänge:
pv_name
(Zeichenfolge): Der Name der PV-Variable.
- Gibt zurück: Ein JSON-Objekt, das den Status (
success
oder error
) und die detaillierten Informationen zum PV oder eine Fehlermeldung enthält.
Verwendung mit Langchain
- Um dies mit Langchain zu verwenden, müssen Sie die für das Projekt erforderlichen Abhängigkeiten installieren.
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"],
)
EPICS
- Bevor Sie den EPCIS-MCP-Server verwenden, müssen Sie EPCIS erfolgreich auf Ihrem lokalen Rechner installieren, sicherstellen, dass IOC normal startet und Funktionen wie
caget
, caput
und cainfo
ordnungsgemäß funktionieren. Detaillierte Installationsanweisungen finden Sie unter 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
Testergebnis
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.