使用说明
WinCC统一MCP服务器
模型上下文协议(MCP)服务器,设计用于通过其GraphQL API与西门子WinCC Unified SCADA系统接口。该服务器将各种WinCC Unified功能作为MCP工具公开,允许AI助手和其他兼容MCP的客户端与SCADA系统进行交互。
特性
- 连接到WinCC统一GraphQL端点。
- 提供MCP工具,用于:
- 用户身份验证(
login-user). - 浏览SCADA对象(
browse-objects). - 读取当前标签值(
get-tag-values). - 查询历史/记录的标签数据(
get-logged-tag-values). - 获取活动警报(
get-active-alarms). - 获取记录的警报(
get-logged-alarms). - 将值写入标签(
write-tag-values). - 确认警报(
acknowledge-alarms). - 重置警报(
reset-alarms).
- 用户身份验证(
- 支持可选的自动服务帐户登录和令牌刷新机制。
先决条件
- Node.js(建议使用v18.x或更高版本)。
- npm(通常随Node.js一起提供)。
- 访问正在运行的WinCC Unified GraphQL服务器端点。
配置
使用环境变量配置服务器:
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 # Set to 0 to disable TLS certificate validation (development only)
如何开始
-
导航到项目目录。
-
安装依赖项: 如果你还没有,请安装必要的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.jsTheNODE_TLS_REJECT_UNAUTHORIZED=0设置禁用TLS证书验证,如果WinCC Unified GraphQL服务器使用HTTPS和自签名或内部颁发的证书,则可能需要进行TLS证书验证。 警告: 禁用证书验证(NODE_TLS_REJECT_UNAUTHORIZED=0)应该只在可信的开发或内部网络环境中进行,因为它绕过了重要的安全检查。或者,您可以直接运行服务器:
# On Linux/macOS, if your GraphQL server uses HTTPS with a self-signed certificate: # export NODE_TLS_REJECT_UNAUTHORIZED=0 # On Windows (PowerShell), if needed: # $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)。
与Claude桌面客户端连接
将此MCP服务器与Claude AI桌面应用程序(或其他支持 mcp-remote),您需要配置客户端以连接到此服务器。对于Claude Desktop应用程序,这通常是通过编辑 claude_desktop_config.json 文件。此文件的位置因操作系统而异,但通常在Claude应用程序的支持或配置目录中。
添加或更新 mcpServers 你的部分 claude_desktop_config.json 文件如下:
{
"mcpServers": {
"WinCC Unified": {
"command": "npx",
"args": ["mcp-remote", "http://localhost:3000/mcp"]
}
}
}
说明:
"WinCC Unified":这是此服务器连接的用户定义名称,将出现在Claude应用程序中。你可以把它变成对你有意义的东西(例如。,"WinCC_Unified_Plant_A")."command": "npx":此命令告诉客户端使用npx(节点包执行)运行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 Desktop应用程序。现在,它应该将“WinCC Unified”(或您选择的名称)列为可用的MCP服务器,允许您使用其工具。
可用工具
服务器公开了以下与WinCC Unified交互的工具:
-
login-user: 使用用户名和密码将用户登录到WinCC Unified。为后续请求存储会话令牌。这是可选的,因为MCP服务器可以以使用服务帐户自动登录的方式启动。 -
browse-objects: 根据提供的筛选条件,查询标签、元素、类型、警报、日志标签以及基本上任何具有配置名称的内容。 -
get-tag-values: 从WinCC Unified查询标签值。根据提供的名单。如果directRead为真,则直接从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或未提供,则给定报警的所有实例都将重置。
