Skip to content
Agentmart
Submit a tool

Serial MCP Server

Let AI agents interact with serial devices — list ports, connect, send, and read.

Connector by es617 · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)★ 25
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/es617-serial-mcp-server

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Let AI agents interact with serial devices — list ports, connect, send, and read.

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.

Tools
15 read · 6 write · 1 delete · 5 not yet classified
Secrets
None asked for
Install scripts
Not scanned yet
Runs as
Python package

Tools by what they do 27

Read from the source code; the running server may list different tools.

Read 15 · Look things up without changing anything.

  • serial.connection_status
  • serial.connections.list
  • serial.list_ports
  • serial.plugin.list
  • serial.plugin.template
  • serial.read
  • serial.read_until
  • serial.readline
  • serial.spec.get
  • serial.spec.list
  • serial.spec.read
  • serial.spec.search
Show 3 more tools
  • serial.spec.template
  • serial.trace.status
  • serial.trace.tail

Write 6 · Create, change, send or run things.

  • serial.close
  • serial.set_dtr
  • serial.set_rts
  • serial.spec.attach
  • serial.spec.register
  • serial.write

Delete 1 · Delete, drop, revoke or wipe things.

  • serial.flush

Not yet classified 5 · We could not tell from the name and description.

  • serial.open
  • serial.plugin.load
  • serial.plugin.reload
  • serial.pulse_dtr
  • serial.pulse_rts

Secrets and settings it asks for

Other settings (environment variables or headers).

  • SERIAL_MCP_MAX_CONNECTIONS
  • SERIAL_MCP_MIRROR
  • SERIAL_MCP_MIRROR_LINK
  • SERIAL_MCP_PLUGINS
  • SERIAL_MCP_TOOL_SEPARATOR

Files it touches

  • Any path the agent passes to its tools

Tools (27)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • serial.close

    Close a serial port connection and release the port.

  • serial.connection_status

    Check whether a serial connection is still open and return its configuration.

  • serial.connections.list

    List all open serial connections with their status, port, configuration, and timestamps. Useful for recovering connection IDs after context loss.

  • serial.flush

    Flush serial port buffers (discard pending input/output data).

  • serial.list_ports

    List available serial ports on the system.

  • serial.open

    Open a serial port connection. Returns a connection_id for use with other serial tools. The port stays open across tool calls until serial.close is called or the server exits. Defaults are 115200 baud, 8N1, \r\n line terminator — the most common settings. If you don't know the correct settings, check for a protocol spec with serial.spec.list or ask the user. Wrong baud rate is the most common cause of garbled data. After opening: 1) Use serial.spec.list to check for a matching protocol spec. If a match is found, attach it with serial.spec.attach. 2) Use serial.plugin.list to check for a plugin…

  • serial.plugin.list

    List loaded plugins with their tool names and metadata. Each plugin may include a 'meta' dict with matching hints like device_name_contains or description — use these to determine which plugin fits the connected device. Also returns whether plugins are enabled and the current policy. Plugins require SERIAL_MCP_PLUGINS env var — set to 'all' for all or 'name1,name2' to allow specific plugins. If disabled, tell the user to set this variable when adding the MCP server.

  • serial.plugin.load

    Load a new plugin from a file or directory path. Requires SERIAL_MCP_PLUGINS env var to be set.

  • serial.plugin.reload

    Hot-reload a plugin by name. Re-imports the module and refreshes tools. Requires SERIAL_MCP_PLUGINS env var to be set.

  • serial.plugin.template

    Return a Python plugin template. Use this when creating a new plugin. Optionally pre-fill with a device name. Save the result to .serial_mcp/plugins/<name>.py, fill in the tools and handlers, then load with serial.plugin.load.

  • serial.pulse_dtr

    Pulse the DTR line: sets low, waits duration_ms, then sets high. Commonly used to reset microcontrollers (e.g. Arduino, ESP32). Check the protocol spec or ask the user before pulsing — effect is device-specific.

  • serial.pulse_rts

    Pulse the RTS line: sets low, waits duration_ms, then sets high. Some devices use RTS to enter bootloader mode. Check the protocol spec or ask the user before pulsing — effect is device-specific.

  • serial.read

    Read up to nbytes from a serial port. Returns immediately with whatever data is available within the timeout. Use serial.readline or serial.read_until for line-oriented reads.

  • serial.read_until

    Read from the serial port until a delimiter string is received or max_bytes is reached.

  • serial.readline

    Read a line from the serial port (reads until the newline character is received or max_bytes is reached). Uses the connection's newline setting by default.

Show 12 more tools
  • serial.set_dtr

    Set the DTR (Data Terminal Ready) control line. Usage is device-specific — check the protocol spec or ask the user.

  • serial.set_rts

    Set the RTS (Request To Send) control line. Usage is device-specific — check the protocol spec or ask the user.

  • serial.spec.attach

    Attach a registered spec to a connection session (in-memory only). The spec will be available via serial.spec.get for the duration of this connection. After attaching, check serial.plugin.list for a matching plugin, then present the user with their options: interact with the device using the spec (send commands, execute flows), use plugin shortcut tools if a plugin is loaded, extend an existing plugin with new tools, or create a new plugin using serial.plugin.template.

  • serial.spec.get

    Get the attached spec for a connection (returns null if none attached).

  • serial.spec.list

    List all registered specs with their metadata and matching hints.

  • serial.spec.read

    Read full spec content, file path, and metadata by spec_id.

  • serial.spec.register

    Register a spec file in the index. Validates YAML front-matter (requires kind: serial-protocol and name). The file path can be absolute or relative to CWD.

  • serial.spec.search

    Full-text search over a spec's content. Returns matching snippets with line numbers and surrounding context.

  • serial.spec.template

    Return a markdown template for a new serial protocol spec. Optionally pre-fill with a device name.

  • serial.trace.status

    Return tracing config and event count.

  • serial.trace.tail

    Return last N trace events (default 50).

  • serial.write

    Write data to a serial port. Returns the number of bytes written.

Signals

Stars
25
Forks
5
Open issues
0
Weekly downloads
91
Last commit
Mar 7, 2026 (7 months ago)
Last release
Mar 7, 2026 (7 months ago)
Last package publish
Mar 7, 2026 (7 months ago)

From GitHub (fetched Oct 24, 2026) and the package registry.

Details

Registry name
io.github.es617/serial-mcp-server
Version
0.1.3
Auth
No auth
Packages
pypi serial-mcp-server
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 25, 2026

More from es617

Cite this page

Serial MCP Server. Agent Mart. https://agentmart.dev/connectors/es617-serial-mcp-server (last updated 2026-10-25)