一款专为通过GraphQL API与SIEMENS WinCC Unified SCADA系统交互设计的模型上下文协议(MCP)服务器。该服务器将各种WinCC Unified功能暴露为MCP工具,允许AI助手和其他兼容MCP的客户端与SCADA系统进行交互。
login-user)。browse-objects)。get-tag-values)。get-logged-tag-values)。get-active-alarms)。get-logged-alarms)。write-tag-values)。acknowledge-alarms)。reset-alarms)。服务器通过环境变量进行配置:
GRAPHQL_URL:必需。您的WinCC Unified GraphQL服务器的完整URL。
示例:https://your-wincc-server.example.com/graphqlGRAPHQL_USR:(可选)服务账户用户名。如果与GRAPHQL_PWD一起提供,服务器将在启动时尝试使用这些凭据登录,并定期(每分钟一次)以维持会话。此令牌全局存储并由工具使用,除非已发生用户特定登录。GRAPHQL_PWD:(可选)服务账户密码。示例环境变量设置(Linux/macOS):
export GRAPHQL_URL="http://localhost:4000/graphql"
export GRAPHQL_USR="username1"
export GRAPHQL_PWD="password1"
export NODE_TLS_REJECT_UNAUTHORIZED=0 # 设置为0以禁用TLS证书验证(仅限开发)
导航到项目目录。
安装依赖项: 如果尚未安装,请安装必要的Node.js包:
npm install
设置环境变量:
确保如“配置”部分所述设置GRAPHQL_URL(以及可选的GRAPHQL_USR,GRAPHQL_PWD)环境变量。
运行服务器:
您可以使用提供的run.sh脚本(在Linux/macOS上):
./run.sh
run.sh脚本执行export NODE_TLS_REJECT_UNAUTHORIZED=0后,使用node index.js启动服务器。NODE_TLS_REJECT_UNAUTHORIZED=0设置禁用TLS证书验证,这可能在您的WinCC Unified GraphQL服务器使用HTTPS和自签名或内部颁发的证书时需要。
警告: 只应在受信任的开发或内部网络环境中禁用证书验证(NODE_TLS_REJECT_UNAUTHORIZED=_0),因为它绕过了重要的安全检查。
或者,您可以直接运行服务器:
# 在Linux/macOS上,如果您的GraphQL服务器使用带有自签名证书的HTTPS:
# export NODE_TLS_REJECT_UNAUTHORIZED=0
# 在Windows(PowerShell)上,如果需要:
# $env:NODE_TLS_REJECT_UNAUTHORIZED = "0"
node index.js
MCP服务器默认监听端口3000。您可以通过MCP_PORT环境变量配置端口:
MCP_PORT=8080 node index.js
MCP请求期望在/mcp端点(例如,http://localhost:3000/mcp)接收。
安全通知: 此服务器未经过强化或安全处理以用于生产用途。用户有责任在部署或在任何环境中公开此服务器之前实施适当的安全措施(如身份验证、授权、网络限制和HTTPS)。
要使用此MCP服务器与Claude AI桌面应用程序(或其他支持mcp-remote的客户端)配合使用,您需要配置客户端以连接到此服务器。对于Claude桌面应用,这通常是通过编辑claude_desktop_config.json文件来完成的。此文件的位置因操作系统而异,但通常位于Claude应用的支持或配置目录中。
在您的claude_desktop_config.json文件中添加或更新mcpServers部分如下所示:
{
"mcpServers": {
"WinCC Unified": {
"command": "npx",
"args": ["mcp-remote", "http://localhost:3000/mcp"]
}
}
}
解释:
"WinCC Unified":这是此服务器连接在Claude应用中显示的用户定义名称。您可以将其更改为对您有意义的内容(例如,"WinCC_Unified_Plant_A")。"command": "npx":这告诉客户端使用npx(Node Package Execute)运行mcp-remote工具。"args": ["mcp-remote", "http://localhost:3000/mcp"]:
mcp-remote:这是一个命令行MCP客户端。确保npx能够找到它。您可能需要全局安装@modelcontextprotocol/tools(npm install -g @modelcontextprotocol/tools)或使其在npx可访问的项目上下文中可用。http://localhost:3000/mcp:这是您的WinCC Unified MCP服务器正在监听的URL。根据服务器运行的位置或端口调整主机名和端口。保存此配置后,重新启动您的Claude桌面应用程序。它现在应该列出“WinCC Unified”(或您选择的名称)作为可用的MCP服务器,允许您使用其工具。
服务器提供了以下工具用于与WinCC Unified交互:
login-user:
使用用户名和密码登录WinCC Unified。存储会话令牌以供后续请求使用。它是可选的,因为MCP服务器可以在启动时自动使用服务账户登录。
browse-objects:
根据提供的过滤标准查询标签、元素、类型、报警、日志标签以及基本上任何具有配置名称的对象。
get-tag-values:
从WinCC Unified查询标签值。基于提供的名称列表。如果直接读取为真,则从PLC直接获取值。
get-logged-tag-values:
从数据库查询记录的标签值。
get-active-alarms:
查询来自所提供系统的活动报警。
get-logged-alarms:
查询存储系统中的记录报警。
write-tag-values:
基于提供的TagValueInput列表更新标签。
acknowledge-alarms:
确认一个或多个报警。
每个报警标识符必须具有配置报警的名称,可选地具有实例ID。如果实例ID为0或未提供,则确认给定报警的所有实例。
reset-alarms:
重置一个或多个报警。
每个报警标识符必须具有配置报警的名称,可选地具有实例ID。如果实例ID为0或未提供,则重置给定报警的所有实例。