EPICS-MCP-サーバー
概要
EPICS MCPサーバーは、EPICS(実験物理学および産業用制御システム)のプロセス変数(PV)と連携するために設計されたPythonベースのサーバーです。PV値の取得、PV値の設定、PVに関する詳細情報の取得を行うためのツールセットを提供します。このサーバーはmcpフレームワークを使用して構築されており、stdio経由で通信するため、大規模な制御システムやワークフローへの統合に適しています。
このツールは、ハードウェアまたはソフトウェア パラメータの監視と制御に EPICS PV が使用される環境で特に役立ちます。
特徴
EPICS MCP サーバーは次のツールを提供します。
get_pv_value
リポジトリ内の単一のファイルを作成または更新する
入力:
pv_name(文字列): PV 変数の名前。
戻り値: ステータス (
successまたはerror) と取得された値またはエラー メッセージを含む JSON オブジェクト。
PV値の設定
指定された PV に新しい値を設定します。
入力:
pv_name(文字列): PV 変数の名前。pv_value(文字列): PV に設定する新しい値。
戻り値: ステータス (
successまたはerror) と確認メッセージまたはエラー メッセージを含む JSON オブジェクト。
取得PV情報
指定された PV に関する詳細情報を取得します。
入力:
pv_name(文字列): PV 変数の名前。
戻り値: ステータス (
successまたはerror) と PV に関する詳細情報またはエラー メッセージを含む JSON オブジェクト。
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
テスト結果
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
)結果:
================================[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.