Skip to main content
Glama

modbus-mcp

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.

GitHub-LizenzPython-VersionStatus

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 :

    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

Variable

Beschreibung

Standard

Erforderlich

MODBUS_TYPE

Verbindungstyp:

tcp

,

udp

oder

serial

tcp

Ja

MODBUS_HOST

Hostadresse für TCP/UDP

127.0.0.1

Für TCP/UDP

MODBUS_PORT

Port für TCP/UDP

502

Für TCP/UDP

MODBUS_DEFAULT_SLAVE_ID

Slave-ID

1

Für TCP/UDP

MODBUS_SERIAL_PORT

Serieller Anschluss (z. B.

/dev/ttyUSB0

,

COM1

)

/dev/ttyUSB0

Für serielle

MODBUS_BAUDRATE

Serielle Baudrate

9600

Für serielle

MODBUS_PARITY

Serielle Parität:

N

(keine),

E

(gerade),

O

(ungerade)

N

Für serielle

MODBUS_STOPBITS

Serielle Stoppbits

1

Für serielle

MODBUS_BYTESIZE

Serielle Bytegröße

8

Für serielle

MODBUS_TIMEOUT

Serielles Timeout (Sekunden)

1

Fü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

          MCP directory API

          We provide all the information about MCP servers via our MCP API.

          curl -X GET 'https://glama.ai/api/mcp/v1/servers/kukapay/mudbus-mcp'

          If you have feedback or need assistance with the MCP directory API, please join our Discord server