S7 MCP Bridge

S7 MCP Bridge

Connects AI agents to Siemens industrial PLCs for automatic monitoring and control of industrial equipment.

Category
Visit Server

README

<p align="left"> <img title="s7-mcp-bridge" src='https://raw.githubusercontent.com/cadugrillo/s7-mcp-bridge/main/logo.png' width="110" height="110"/> </p>

S7 MCP Bridge

S7 MCP Bridge is a MCP Server that connects AI agents to Siemens industrial PLCs (specifically S7-1500 and S7-1200 models). This allows AI agents to automatically monitor and control industrial equipment by sending commands and receiving data from the machines.


🔧 Available Tools

  • User authentication (Api-Login, Api-Logout, Api-ChangePassword)
  • Check PLC connectivity (Api-Ping)
  • Retrieve user permissions (Api-GetPermissions)
  • Get API version (Api-Version)
  • List available API methods (Api-Browse)
  • Retrieve structure information (Api-GetQuantityStructures)
  • Get password security policies (Api-GetPasswordPolicy)
  • Browse tags and metadata (PlcProgram-Browse)
  • Read single variables (PlcProgram-Read)
  • Write Boolean, Number, or String tags (PlcProgram-Write)
  • Read the current CPU operating mode (Plc-ReadOperatingMode)
  • Request a change of operating mode (Plc-RequestChangeOperatingMode)
  • Read the CPU system time (Plc-ReadSystemTime)
  • Set the CPU system time (Plc-SetSystemTime)
  • Read available project languages (Project-ReadLanguages)
  • Browse active alarms (Alarms-Browse)
  • Acknowledge alarms (Alarms-Acknowledge)
  • Browse diagnostic buffer entries (DiagnosticBuffer-Browse)
  • List all configured PLCs via env variables (List-AvailablePlcs)
  • Create backup file of the CPU (Plc-CreateBackup)
  • Delete a ticket provided by the system (Api-CloseTicket)

⚙️ Prerequisites

  • Node.js (v18.x or later recommended)
  • npm (comes bundled with Node.js)
  • Access to a running SIEMENS PLC API (Webserver)

⚙️ Configuration

This server uses environment variables for configuration.

Example 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

🚀 Getting Started (Development)

  1. Git Clone this repo: https://github.com/cadugrillo/s7-mcp-bridge.git

  2. Navigate to the project folder:

cd s7-mcp-bridge
  1. Install dependencies:
npm install
  1. Build the project:
npm run build
  1. Edit env variables as shown above.

  2. Start the server

npm run start

🐳 Docker Container

There is a Docker Container Image avaiable at https://hub.docker.com/r/cadugrillo/s7-mcp-bridge/tags

  • How to run
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

Remember to change port according to your deployment. When TRANSPORT is set to "http-stream", there is a status page at http://<server-ip-address>:[MCP_SERVER_PORT +1]/status

  • Available Environment Variables
PLC_IP_ADDRESSES required IP addresses of available PLCs separated by comma eg. "192.168.1.10, 192.168.1.20"
PLC_NAMES optional Names of available PLCs separated by comma eg. "Machine1, Machine2"
MCP_SERVER_PORT optional If not set, it defaults to 57001, status page at http://<server-ip-address>:57002/status
TRANSPORT optional It can be "http-stream" or "stdio". If not set it defaults to http-stream

🖥️ Connecting with Claude Desktop

  1. Install Claude extension (s7-mcp-bridge-vx.x.x.mcpb) found at https://github.com/cadugrillo/s7-mcp-bridge/tree/main/claude_extension.

  2. Or run as a Docker Container choosing from one of the options (stdio or http-stream):

  • (stdio) Find or create the claude_desktop_config.json file (typically in the Claude app config folder) and add the following:
{
    "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-stream) Or run the docker container (instructions above) and add the following (remember to change port according to your deployment):
{
  "mcpServers": {
    "S7-MCP-Bridge": {
      "command": "npx",
      "args": ["mcp-remote", "http://localhost:57001/mcp"]
    }
  }
}
  1. Or use the following if running locally for development (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"
      }
    }
  }
}

🪲 Reporting bugs and contributing

  • Want to report a bug or request a feature? Please open an issue

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured