S7 MCP电桥
S7 MCP电桥 是一个MCP服务器,将AI代理连接到西门子工业PLC(特别是S7-1500和S7-1200型号)。这允许AI代理通过发送命令和从机器接收数据来自动监视和控制工业设备。

______________________________________________________________________
🔧 可用工具
- 用户身份验证(
Api-Login,Api-Logout,Api-ChangePassword) - 检查PLC连接(
Api-Ping) - 检索用户权限(
Api-GetPermissions) - 获取API版本(
Api-Version) - 列出可用的API方法(
Api-Browse) - 检索结构信息(
Api-GetQuantityStructures) - 获取密码安全策略(
Api-GetPasswordPolicy) - 浏览标签和元数据(
PlcProgram-Browse) - 读取单个变量(
PlcProgram-Read) - 写入布尔、数字或字符串标签(
PlcProgram-Write) - 读取当前CPU运行模式(
Plc-ReadOperatingMode) - 请求更改操作模式(
Plc-RequestChangeOperatingMode) - 读取CPU系统时间(
Plc-ReadSystemTime) - 设置CPU系统时间(
Plc-SetSystemTime) - 阅读可用的项目语言(
Project-ReadLanguages) - 浏览活动警报(
Alarms-Browse) - 确认警报(
Alarms-Acknowledge) - 浏览诊断缓冲区条目(
DiagnosticBuffer-Browse) - 通过环境变量列出所有配置的PLC(
List-AvailablePlcs) - 创建CPU的备份文件(
Plc-CreateBackup) - 删除系统提供的工单(
Api-CloseTicket)
______________________________________________________________________
⚙️ 先决条件
- (建议使用v18.x或更高版本)
- npm(与Node.js捆绑在一起)
- 进入跑步 西门子PLC API(网络服务器)
______________________________________________________________________
⚙️ 配置
此服务器使用环境变量进行配置。
示例 env variables:
export PLC_IP_ADDRESSES="192.168.2.200, 192.168.2.201, 192.168.2.202"
export PLC_NAMES="PLC1, PLC2, PLC3" //optional
export MCP_SERVER_PORT=57001 //optional
export TRANSPORT="http-stream" //optional🚀 入门(开发)
- Git克隆此仓库:https://github.com/cadugrillo/s7-mcp-bridge.git
- 导航到项目文件夹:
cd s7-mcp-bridge- 安装依赖项:
npm install- 构建项目:
npm run build- 如上所示编辑env变量。
- 启动服务器
npm run start🐳 Docker 容器
Docker容器镜像可在https://hub.docker.com/r/cadugrillo/s7-mcp-bridge/tags
- 如何运行
docker run -d -p 57001:57001 -p 57002:57002 -m 512m --memory-swap=512m \
--name s7McpBridge \
-e MCP_SERVER_PORT=57001 \
-e PLC_IP_ADDRESSES="192.168.2.200, 192.168.2.201, 192.168.2.202" \
-e PLC_NAMES="PLC1, PLC2, PLC3" \
cadugrillo/s7-mcp-bridge:latest记得根据部署更改端口。 当TRANSPORT设置为“http流”时,在http://\处有一个状态页面:\[MCP_server_PORT+1\]/status
- 可用环境变量
| PLC_IP_ADDRESS | 必填 | 可用PLC的IP地址,用逗号分隔,例如“192.168.1.10,192.168.1.20” |
| PLC_NAMES | 可选 | 可用PLC的名称,用逗号分隔,例如“Machine1,Machine2” |
| MCP_SERVER_PORT | 可选 | 如果未设置,则默认为57001,状态页面位于http://\:57002/status |
| TRANSPORT | 可选 | 可以是“http流”或“stdio”。如果未设置,则默认为http流 |
🖥️ 与Claude Desktop连接
- 安装Claude扩展(s7-mcp桥vx.x.x.mcpb),位于https://github.com/cadugrillo/s7-mcp-bridge/tree/main/claude_extension.
- 或者作为Docker容器运行,从以下选项中选择一个(stdio或http流):
- (stdio)查找或创建claude_desktop_config.json文件(通常在claude app config文件夹中),并添加以下内容:
{
"mcpServers": {
"S7-MCP-Bridge": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"PLC_IP_ADDRESSES=192.168.2.200, 192.168.2.201, 192.168.2.202",
"-e",
"PLC_NAMES=PLC1, PLC2, PLC3",
"-e",
"TRANSPORT=stdio",
"cadugrillo/s7-mcp-bridge:latest"
]
}
}
}- (http流)或者运行docker容器(上面的说明)并添加以下内容(记住根据您的部署更改端口):
{
"mcpServers": {
"S7-MCP-Bridge": {
"command": "npx",
"args": ["mcp-remote", "http://localhost:57001/mcp"]
}
}
}- 或者,如果在本地运行进行开发(stdio),请使用以下命令:
{
"mcpServers": {
"S7-MCP-Bridge": {
"command": "node",
"args": ["path/to/your/index.js"], //`for Windows user proper escape (eg. C:\\path\\to\\your\\index.js)`
"env": {
"PLC_IP_ADDRESSES":"192.168.2.200, 192.168.2.201, 192.168.2.202",
"PLC_NAMES":"PLC1, PLC2, PLC3",
"TRANSPORT": "stdio"
}
}
}
}🪲 报告错误并做出贡献
- 想要报告错误或请求功能?请打开 问题
