mcp-snap7

March 28, 2026 ยท View on GitHub

MCP server for python-snap7, enabling MCP clients to interact with Siemens PLCs

PyPI Python Coverage Ruff

Install

pip install mcp-snap7

Requirements

  • python-snap7 requires the libsnap7 library to be installed on your system. See python-snap7 documentation for installation instructions.

Usage

As MCP Server

Configure your MCP client to use mcp-snap7 as a stdio server:

{
  "mcpServers": {
    "mcp-snap7": {
      "command": "mcp-snap7"
    }
  }
}

Available Tools

  • connect_plc - Connect to a Siemens PLC
  • disconnect_plc - Disconnect from PLC
  • get_connected - Check connection status
  • db_read / db_write - Read/write data blocks
  • mb_read / mb_write - Read/write memory bytes
  • tm_read / tm_write - Read/write timers
  • ct_read / ct_write - Read/write counters
  • eb_read / eb_write - Read/write edge inputs
  • ab_read / ab_write - Read/write absolute bytes
  • get_cpu_info - Get CPU information
  • get_cpu_state - Get CPU state
  • get_protection - Get PLC protection level
  • plc_cold_start - Trigger cold start
  • plc_hot_start - Trigger hot start
  • plc_stop - Stop PLC
  • get_error_text - Get error description

Development

git clone https://github.com/daedalus/mcp-snap7.git
cd mcp-snap7
pip install -e ".[test]"

# run tests
pytest

# format
ruff format src/ tests/

# lint
ruff check src/ tests/

# type check
mypy src/