# mcp-rs485 [Health: Active]

**Category:** 🏭 Industrial & IoT  
**Repository:** https://github.com/daedalus/mcp-rs485  
**GitHub Stars:** 0  
**Views:** 1  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/mcp-rs485

## Description
MCP server that exposes RS485 bus connectivity for reading and writing serial data

## Tools
Capabilities this server exposes over MCP:

- **list_ports** — Lists all available serial ports on the system
- **connect_rs485** — Opens a connection to an RS485 device
- **disconnect_rs485** — Closes an RS485 connection
- **read_rs485** — Reads data from an open RS485 connection
- **write_rs485** — Writes data to an RS485 connection
- **get_connection_status** — Gets the status of an RS485 connection

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `uvx` (confidence: high):

```json
"mcpServers": {
  "mcp-rs485": {
    "command": "uvx",
    "args": ["mcp-rs485"]
  }
}
```

## Documentation

## What mcp-rs485 does

The mcp-rs485 MCP server gives an MCP-compatible assistant access to RS485 serial communication. It can enumerate serial ports, open and close device connections, inspect connection status, read incoming bytes, and send outgoing bytes. Connections are represented by IDs returned when a device is opened.

Data transfer uses hexadecimal strings. For example, a request can send a frame such as `01 03 00 00 00 0A`, and a read operation returns received data as a hexadecimal string. This makes the server suitable for direct serial exchanges where the assistant needs to construct or inspect device messages.

## How it works

The mcp-rs485 MCP server exposes its operations as MCP tools rather than requiring the client to call Python functions directly. A typical interaction starts with `list_ports` to identify available serial devices. The client then calls `connect_rs485` with a port path and serial parameters, receives a connection ID, and uses that ID for reading, writing, status checks, and disconnection.

`connect_rs485` accepts a port such as `/dev/ttyUSB0`. Its configurable communication parameters include a default baud rate of 9600, parity set to none by default, one stop bit, eight data bits, and a one-second read timeout. `read_rs485` accepts a maximum byte length, while `write_rs485` reports the number of bytes written.

## Setup and configuration

Install the package with pip:

```bash
pip install mcp-rs485
```

Register it in an MCP client by launching the `mcp-rs485` command. The supplied configuration uses the server name `mcp-rs485`, the command `mcp-rs485`, and an empty environment-variable map:

```json
{
  "mcpServers": {
    "mcp-rs485": {
      "command": "mcp-rs485",
      "env": {},
      "name": "io.github.daedalus/mcp-rs485"
    }
  }
}
```

The repository also documents an editable installation for development, followed by pytest, Ruff formatting and linting, and mypy checks.

## Tools and capabilities

- `list_ports`: returns available serial ports with port, description, and hardware-ID fields.
- `connect_rs485`: opens a connection using the selected serial settings and returns a connection ID.
- `disconnect_rs485`: closes an existing RS485 connection.
- `read_rs485`: reads up to the requested number of bytes and returns hexadecimal data.
- `write_rs485`: sends hexadecimal data and returns the byte count.
- `get_connection_status`: returns connection state and statistics.

## Limitations and notes

Modbus RTU is shown as an example of a message format, not as a separately documented tool or integration.

The connection must be opened before read, write, status, or disconnect operations can use its connection ID. Port paths, serial settings, and message framing must match the attached RS485 device. The documentation does not specify client-specific setup beyond the generic MCP command configuration.

_Full upstream README: https://allmcps.com/mcp/mcp-rs485/readme_

