Feature: Mode-agnostic transact tool + firmware console ergonomics #1
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Feature: Mode-agnostic
transacttool + firmware console ergonomicsContext
Spent a long session reverse-engineering Winegard Carryout G2 satellite dish firmware via RS-422 serial console (115200 baud, prompt-terminated responses). The firmware has 12+ submenus, each with dozens of commands returning prompt-terminated responses (
>character). mcserial worked great for getting connected and doing basic I/O, but the workflow for interactive firmware consoles has significant friction.Problem
The main pain point: every single command requires 3-5 tool calls when it should require 1.
Current workflow for every firmware command:
What I want:
rs485_transactis exactly the right API for this — it hasdata,response_terminator,response_timeout, all perfect. But it's gated behind_require_mode(port, "rs485")(server.py:1602), so it can't be used on RS-232/RS-422 connections. The actual send→wait→read logic (lines 1636-1648) is completely mode-agnostic.Proposed Changes (ranked by impact)
1. Mode-agnostic
transacttoolNew tool that works in any mode. Basically
rs485_transactminus the RTS toggling:line_ending: Auto-append to sent data (firmware consoles typically need\r)strip_echo: Most serial devices echo back the command — strip it from the responseThe existing
rs485_transactcould become a thin wrapper that adds RTS control aroundtransact.2.
timeoutparameter onread_untilread_untilhasterminatorandsizebut no per-calltimeoutoverride. When exploring unknown firmware, some commands respond instantly and others are streaming. Currently inherits port default which may not be right.3. Configurable default line ending per port
A
line_endingsetting inconfigure_serialthat auto-appends towrite_serialcalls. Would eliminate the manual\r/\nappending on every write.4. Issue reporting discoverability
The MCP server description and/or a dedicated tool could tell users where to file issues. Something like:
Or just add the repo/issues URL to the server description that MCP clients see.
Impact
In a ~4 hour firmware RE session, I made roughly 200+ serial tool calls. A
transacttool would have reduced that to ~60-80. The compound effect of 3-5x fewer tool calls per command is massive for context window usage and session productivity.Environment
uvx mcserial>= ASCII 62)