
通过MCP工具,Python和TypeScript实现提供了相同的OPC UA操作核心功能,但在实现方法和部署模型上有所不同。
配置完成后,您可以要求Claude执行实际的OPC UA操作:
用户: “反应器R-101的温度是多少?”
助手: 我将读取反应器R-101的温度传感器。
工具调用: 使用node_id "ns=2;i=11" 调用read_opcua_node
结果: “反应器R-101的温度:87.3°C”
用户: “启动主传送带电机”
助手: 我将为您启动主传送带电机。
工具调用: 使用node_id "ns=2;i=12" 和值 "true" 调用write_opcua_node
结果: “主传送带电机成功启动”
用户: “将泵速设置为65%”
助手: 我将调整泵速至65%。
工具调用: 使用node_id "ns=2;i=13" 和值 "65" 调用write_opcua_node
结果: “泵速已设置为65%”
用户: “显示系统中所有可用变量”
助手: 我将获取OPC UA服务器中所有变量的完整列表。
工具调用: 调用get_all_variables
结果: “找到15个变量:
- 名称:Temperature_Sensor_01,NodeID:ns=2;i=101,值:87.3°C
- 名称:Pressure_Sensor_01,NodeID:ns=2;i=102,值:2.5巴
- 名称:Flow_Rate_01,NodeID:ns=2;i=103,值:125.8升/分钟
…”
opcua-mcp-server)opcua(FreeOpcUa)opcua-mcp-server.pyopcua-mcp-npx-server)node-opcuasrc/index.ts(编译为build/index.js)| 功能 | Python版本 | NPX版本 | 备注 |
|---|---|---|---|
| 读取单个节点 | ✅ | ✅ | 两者都支持自动类型检测 |
| 写入单个节点 | ✅ | ✅ | 两者都支持自动类型转换 |
| 浏览节点子项 | ✅ | ✅ | 两者返回JSON格式的结果 |
| 调用OPC UA方法 | ✅ | ✅ | 两者支持参数转换 |
| 读取多个节点 | ✅ | ✅ | 批量读取操作 |
| 写入多个节点 | ✅ | ✅ | 批量写入操作 |
| 获取所有变量 | ✅ | ✅ | 发现服务器地址空间中的所有变量 |
| 连接管理 | ✅ | ✅ | 两者自动处理生命周期 |
| 错误处理 | ✅ | ✅ | 全面的错误报告 |
| 类型转换 | ✅ | ✅ | 自动数据类型转换 |
read_opcua_node
node_id(字符串)write_opcua_node
node_id(字符串),value(字符串)browse_opcua_node_children
node_id(字符串)read_multiple_opcua_nodes
node_ids(字符串数组)write_multiple_opcua_nodes
nodes_to_write({node_id, value}对象数组)call_opcua_method
object_node_id,method_node_id,arguments(可选)get_all_variables
# 安装
cd opcua-mcp-server
uv install # 或者pip install
# 使用
uv run opcua-mcp-server.py
# 或者
python opcua-mcp-server.py
# 直接使用(推荐)
npx opcua-mcp-npx-server
# 全局安装
npm install -g opcua-mcp-npx-server
opcua-mcp-npx-server
# 开发
npm install
npm run build
npm start
NPM包:https://www.npmjs.com/package/opcua-mcp-npx-server
两个版本使用相同的环境变量:
OPCUA_SERVER_URL:OPC UA服务器端点(默认:opc.tcp://localhost:4840){
"mcpServers": {
"opcua-python": {
"command": "/Users/mx/.local/bin/uv",
"args": [
"--directory",
"/path/to/opcua-mcp-server",
"run",
"opcua-mcp-server.py"
],
"env": {
"OPCUA_SERVER_URL": "opc.tcp://localhost:4840"
}
}
}
}
{
"mcpServers": {
"opcua-npx": {
"command": "npx",
"args": ["opcua-mcp-npx-server"],
"env": {
"OPCUA_SERVER_URL": "opc.tcp://localhost:4840"
}
}
}
}
mcp[cli]>=1.9.1:MCP框架opcua>=0.98.13:OPC UA客户端库cryptography>=45.0.2:安全支持httpx>=0.28.1:HTTP客户端@modelcontextprotocol/sdk:Node.js的MCP SDKnode-opcua:全面的OPC UA库typescript:TypeScript编译器@types/node:Node.js类型定义两个版本目前连接时使用:
SecurityPolicy.NoneMessageSecurityMode.None对于生产用途,两者应实现: