Skip to main content

Carrot MCP Serial Server

This project has been archived.

The maintainers of this project have marked this project as archived. No new releases are expected.

Project description

carrot-mcp-serial

Carrot MCP Serial Server - pyserial wrapper for serial port communication.

Tools

Tool Description
version Get server version info
list_ports List available serial ports
open Open a serial port connection (baudrate, parity, timeouts, buffer_size)
close Close a serial port connection
read Blocking read with timeout
recv Non-blocking read from buffer
write Buffered write (hex or ascii with escape support)
script Execute a sequence of serial operations (write/read/wait/flush)
history Get operation history for a port

Examples

# List ports
uvx carrot-mcp-serial@latest

# MCP config
{
  "carrot-serial": {
    "command": "uvx",
    "args": ["carrot-mcp-serial@latest"]
  }
}

Buffer Behavior (Backpressure)

  • RX buffer: when full, the poll thread stops reading from hardware. Data stays in the OS serial buffer until the consumer frees space. No data is silently dropped.
  • TX buffer: when full, write() blocks until the poll thread drains enough space. If write_timeout expires (or drain cannot complete due to device issues), a TimeoutError is raised. Hardware write failures also raise the original exception (e.g. SerialException).
  • Buffer size is configurable via the buffer_size parameter on open (default 1MB).

Return Format

All tools return dict with {"status": "ok"|"error", ...}.

  • read/recv returns data in the specified format (default "hex", uppercase e.g. "48656C6C6F")
  • read/recv with fmt="ascii" returns escaped string (e.g. "Hello\nWorld")
  • write supports hex or ascii input, ascii supports escape sequences (\n, \x00)
  • script executes a sequence of operations, each step returns its result

Script Example

All read params are optional with defaults: size=256, timeout=1.0, expect=None, on_mismatch="stop".

[
  {"op": "write", "data": "AA"},
  {"op": "wait", "ms": 10},
  {"op": "write", "data": "BB"},
  {"op": "read", "size": 1, "timeout": 1.0, "expect": "CC"}
]

Minimal read (use defaults):

[
  {"op": "write", "data": "AA"},
  {"op": "read"}
]

Use fmt="ascii" for ASCII mode:

[
  {"op": "write", "data": "Hello"},
  {"op": "read", "size": 10}
]

Note: expect with default on_mismatch="stop" will stop script on mismatch. Use on_mismatch="continue" to only check without stopping.

Script Return Format

Each step result contains:

  • op: Operation type ("write"|"read"|"wait"|"flush")
  • step: Step index (0-based)
  • status: "ok" or "error"

Additional fields by op:

  • write: {bytes_written}
  • read: {data, length} + {matched, expected} if expect provided
  • wait: {ms}
  • On error: {message}

Example:

[
  {"op": "write", "step": 0, "status": "ok", "bytes_written": 2},
  {"op": "read", "step": 1, "status": "ok", "data": "AABB", "length": 2, "matched": true}
]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

carrot_mcp_serial-0.2.0.tar.gz (8.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

carrot_mcp_serial-0.2.0-py3-none-any.whl (11.2 kB view details)

Uploaded Python 3

File details

Details for the file carrot_mcp_serial-0.2.0.tar.gz.

File metadata

  • Download URL: carrot_mcp_serial-0.2.0.tar.gz
  • Upload date:
  • Size: 8.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for carrot_mcp_serial-0.2.0.tar.gz
Algorithm Hash digest
SHA256 ec9eba0b92321ae3bc53f4a57f507fd1d4f6b045debe087edf0111aef35983ed
MD5 1543dfe361bcf94f31fbc7ecc5ce0043
BLAKE2b-256 cf84d29419f6b2e721dbbff0b1ff6d6875f60b6c0062b5fd3227962fbe20edb2

See more details on using hashes here.

File details

Details for the file carrot_mcp_serial-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for carrot_mcp_serial-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c9508787c5cf161b997e5c3be81c74e3631c298637b953e0a545dd99d88a5439
MD5 614ffc87d0d0c3c85ad4b781248d9936
BLAKE2b-256 16d9c50e2a33db77f29ccb523361b1beb9f5dc775cd968923db1c7ebb748ab30

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page