modbus-mcp

Integrations
  • Uses environment variables specified in a .env file for configuration of Modbus connection parameters.

Modbus MCP-Server

Ein MCP-Server, der Modbus-Daten standardisiert und kontextualisiert und so eine nahtlose Integration von KI-Agenten in industrielle IoT-Systeme ermöglicht.

Merkmale

  • Modbus-Tools :
    • Halteregister lesen/schreiben ( read_register , write_register ).
    • Spulen lesen/schreiben ( read_coils , write_coil ).
    • Eingaberegister lesen ( read_input_registers ).
    • Lesen Sie mehrere Halteregister ( read_multiple_holding_registers ).
  • Eingabeaufforderung : Analysieren Sie Modbus-Registerwerte mit einer anpassbaren Eingabeaufforderung ( analyze_register ).
  • Flexible Verbindungen : Unterstützt Modbus über TCP, UDP oder seriell, konfiguriert über Umgebungsvariablen.

Anforderungen

  • Python : 3.10
  • UV für Abhängigkeits- und virtuelles Umgebungsmanagement.

Installation

  1. uv installieren :
    curl -LsSf https://astral.sh/uv/install.sh | sh
  2. Klonen Sie das Repository :
    git clone https://github.com/kukapay/modbus-mcp.git cd modbus-mcp
  3. Abhängigkeiten installieren :
    uv sync

Konfiguration

Der Server stellt über Umgebungsvariablen eine Verbindung zu einem Modbus-Gerät her. Legen Sie diese Variablen in einer .env Datei oder in Ihrer Shell-Umgebung fest.

Umgebungsvariablen

VariableBeschreibungStandardErforderlich
MODBUS_TYPEVerbindungstyp: tcp , udp oder serialtcpJa
MODBUS_HOSTHostadresse für TCP/UDP127.0.0.1Für TCP/UDP
MODBUS_PORTPort für TCP/UDP502Für TCP/UDP
MODBUS_DEFAULT_SLAVE_IDSlave-ID1Für TCP/UDP
MODBUS_SERIAL_PORTSerieller Anschluss (z. B. /dev/ttyUSB0 , COM1 )/dev/ttyUSB0Für serielle
MODBUS_BAUDRATESerielle Baudrate9600Für serielle
MODBUS_PARITYSerielle Parität: N (keine), E (gerade), O (ungerade)NFür serielle
MODBUS_STOPBITSSerielle Stoppbits1Für serielle
MODBUS_BYTESIZESerielle Bytegröße8Für serielle
MODBUS_TIMEOUTSerielles Timeout (Sekunden)1Für serielle

Beispiel .env -Datei

Für TCP:

MODBUS_TYPE=tcp MODBUS_HOST=192.168.1.100 MODBUS_PORT=502 MODBUS_SLAVE_ID=1

Für Serien:

MODBUS_TYPE=serial MODBUS_SERIAL_PORT=/dev/ttyUSB0 MODBUS_BAUDRATE=9600 MODBUS_PARITY=N MODBUS_STOPBITS=1 MODBUS_BYTESIZE=8 MODBUS_TIMEOUT=1

Verwendung

Installation für Claude Desktop

Die Konfigurationsdatei:

{ "mcpServers": { "Modbus MCP Server": { "command": "uv", "args": [ "--directory", "/path/to/modbus-mcp", "run", "modbus-mcp" ], "env": { "MODBUS_TYPE": "tcp", "MODBUS_HOST": "127.0.0.1", "MODBUS_PORT": 502 }, } } }

Werkzeuge verwenden

Hinweis : Die Unterstützung natürlicher Sprache hängt von der Fähigkeit des Clients ab, Eingabeaufforderungen zu analysieren und Tools zuzuordnen. Der MCP Inspector erfordert strukturiertes JSON. Die folgenden Beispiele zeigen jedoch, wie Konversationseingaben übersetzt werden.

  1. Lesen eines Holdingregisters :
    • Eingabeaufforderung :
      Please read the value of Modbus holding register 0.
    • MCP-Inspektor JSON :
      { "tool": "read_register", "parameters": {"address": 0, "slave_id": 1} }
    • Erwartete Ausgabe : Value: <register_value>
  2. Schreiben in ein Holdingregister :
    • Eingabeaufforderung :
      Set Modbus holding register 10 to the value 100.
    • MCP-Inspektor JSON :
      { "tool": "write_register", "parameters": {"address": 10, "value": 100, "slave_id": 1} }
    • Erwartete Ausgabe : Successfully wrote 100 to register 10
  3. Spulen lesen :
    • Eingabeaufforderung :
      Check the status of the first 5 Modbus coils starting at address 0.
    • MCP-Inspektor JSON :
      { "tool": "read_coils", "parameters": {"address": 0, "count": 5, "slave_id": 1} }
    • Erwartete Ausgabe : Coils 0 to 4: [False, False, False, False, False]
  4. In eine Spule schreiben :
    • Eingabeaufforderung :
      Turn on Modbus coil 5.
    • MCP-Inspektor JSON :
      { "tool": "write_coil", "parameters": {"address": 5, "value": true, "slave_id": 1} }
    • Erwartete Ausgabe : Successfully wrote True to coil 5
  5. Eingaberegister lesen :
    • Eingabeaufforderung :
      Read the values of 3 Modbus input registers starting from address 2.
    • MCP-Inspektor JSON :
      { "tool": "read_input_registers", "parameters": {"address": 2, "count": 3, "slave_id": 1} }
    • Erwartete Ausgabe : Input Registers 2 to 4: [<value1>, <value2>, <value3>]
  6. Mehrere Holding-Register lesen :
    • Eingabeaufforderung :
      Get the values of Modbus holding registers 0 through 2.
    • MCP-Inspektor JSON :
      { "tool": "read_multiple_holding_registers", "parameters": {"address": 0, "count": 3, "slave_id": 1} }
    • Erwartete Ausgabe : Holding Registers 0 to 2: [<value1>, <value2>, <value3>]

Lizenz

Dieses Projekt ist unter der MIT-Lizenz lizenziert. Weitere Informationen finden Sie unter LIZENZ .

-
security - not tested
A
license - permissive license
-
quality - not tested

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Modbus-MCP

  1. Merkmale
    1. Anforderungen
      1. Installation
        1. Konfiguration
          1. Umgebungsvariablen
          2. Beispiel .env -Datei
        2. Verwendung
          1. Installation für Claude Desktop
          2. Werkzeuge verwenden
        3. Lizenz

          Related MCP Servers

          View all related MCP servers

          ID: sgp6ly1fkx