{"name":"io.github.sbrunner-atx/serial-console-mcp","slug":"sbrunner-atx-serial-console-mcp","title":"Serial Console MCP: AI for telecom equipment and any serial device","description":"Let AI configure telecom gear over serial: Juniper and Cisco, Icom CI-V, Yaesu/Kenwood CAT, rotators","url":"https://mcp.market/server/sbrunner-atx-serial-console-mcp","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"devtools","tags":["devtools"],"presence":{"score":32,"stars":0,"forks":0,"downloads_week":577,"last_push_at":"2026-09-15T15:39:47.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/sbrunner-atx/serial-console-mcp","website":"https://github.com/sbrunner-atx/serial-console-mcp#readme","version":"0.3.2","remotes":[],"packages":[{"registryType":"pypi","identifier":"serial-console-mcp","version":"0.3.2","transport":{"type":"stdio"}}],"tools":[{"name":"capture_start","description":"Start writing this connection's traffic to a file until capture_stop.","write_action":false,"price_micros":0,"input_schema":null},{"name":"capture_stop","description":"Stop the capture started by capture_start and report the file and size.","write_action":false,"price_micros":0,"input_schema":null},{"name":"cat_build","description":"Build a ';'-terminated text CAT command (Kenwood, Elecraft, Yaesu) for query_text or send_text with line_ending=\"NONE\".","write_action":false,"price_micros":0,"input_schema":null},{"name":"cat_parse","description":"Decode ';'-terminated text CAT replies: rig id to model, FA/FB to MHz, MD to mode name, IF to frequency/mode/VFO/split/TX state, and the ?; E; O; error answers. Pass the text returned by query_text.","write_action":false,"price_micros":0,"input_schema":null},{"name":"civ_build","description":"Build an Icom CI-V frame as hex, ready for send_hex.","write_action":false,"price_micros":0,"input_schema":null},{"name":"civ_freq","description":"Convert between a frequency in MHz and CI-V BCD data bytes.","write_action":false,"price_micros":0,"input_schema":null},{"name":"civ_parse","description":"Decode Icom CI-V frames from hex (as returned by read_available).","write_action":false,"price_micros":0,"input_schema":null},{"name":"clear_buffer","description":"Discard any buffered received data. Handy right before sending a command so the next read starts clean (drops old echo, prior output, or syslog noise).","write_action":false,"price_micros":0,"input_schema":null},{"name":"connect","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"detect_baud","description":"Try common baud rates on a closed port and rank them by how readable the reply is. Use when the user doesn't know the device's rate.","write_action":false,"price_micros":0,"input_schema":null},{"name":"disconnect","description":"Close a serial port and free it for other programs.","write_action":false,"price_micros":0,"input_schema":null},{"name":"expect","description":"Run a scripted sequence of send-and-wait steps in one call, like `expect`.","write_action":true,"price_micros":0,"input_schema":null},{"name":"get_transcript","description":"Return the tail of everything received on a connection since it was opened.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_presets","description":"Show the device presets `connect(preset=...)` understands, with their settings.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_serial_ports","description":"List every serial port the computer can currently see.","write_action":false,"price_micros":0,"input_schema":null},{"name":"port_in_use_by","description":"Report which program currently holds a serial port (macOS/Linux, via lsof).","write_action":false,"price_micros":0,"input_schema":null},{"name":"pulse_line","description":"Drive DTR or RTS to `level` for `ms` milliseconds, then restore it.","write_action":false,"price_micros":0,"input_schema":null},{"name":"query_text","description":"Convenience: clear the buffer, send an ASCII command, and read the reply.","write_action":false,"price_micros":0,"input_schema":null},{"name":"read_available","description":"Drain and return whatever the device has sent, without transmitting anything.","write_action":false,"price_micros":0,"input_schema":null},{"name":"read_until_prompt","description":"Read accumulated output until a prompt appears, or until timeout.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reconnect_last","description":"Reconnect to a remembered port with the same settings as last time.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rotator_build","description":"Build a Yaesu GS-232A/B rotator command for send_text (CR) or query_text.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rotator_parse","description":"Decode a GS-232 reply into azimuth/elevation degrees (\"+0180\", \"+0180+0045\", \"AZ=180 EL=045\") or the ?> rejection.","write_action":false,"price_micros":0,"input_schema":null},{"name":"screen","description":"Show the current terminal screen of a vt100/xterm connection: what a person at a real terminal would see right now, as rows of text, plus the cursor position. This is how to read full-screen interfaces (BIOS setup, RAID/BMC consoles, menu-driven switches, vi, top): press keys with send_keys, then look at the screen again.","write_action":false,"price_micros":0,"input_schema":null},{"name":"send_break","description":"Send a BREAK condition (TX held low) for `ms` milliseconds.","write_action":true,"price_micros":0,"input_schema":null},{"name":"send_hex","description":"Send raw bytes given as hex. Writes to TX only; does NOT read.","write_action":true,"price_micros":0,"input_schema":null},{"name":"send_keys","description":"Press keys by name, encoded the way a VT100/xterm terminal sends them.","write_action":true,"price_micros":0,"input_schema":null},{"name":"send_text","description":"Send an ASCII command to the device. Writes to TX only; does NOT read.","write_action":true,"price_micros":0,"input_schema":null},{"name":"set_lines","description":"Set the DTR and/or RTS output lines and hold them.","write_action":false,"price_micros":0,"input_schema":null},{"name":"status","description":"Report every open port: settings, reader state, buffered bytes, control-line states, capture, and which connection is current. With nothing open, lists what reconnect_last remembers.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":92,"grade":"A","scanned_at":"2026-09-19T19:49:01.513Z","report":{"scannerVersion":"0.1.5","scannedAt":"2026-09-19T19:49:01.485Z","components":{"code":{"score":25,"max":25,"notes":["14 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 4 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"pypi","identifier":"serial-console-mcp","version":"0.3.2","found":true,"license":"MIT","dependencyCount":6,"publishedAt":"2026-09-15T15:43:28.392875Z","repositoryUrl":"https://github.com/sbrunner-atx/serial-console-mcp"}],"repo":{"found":true,"owner":"sbrunner-atx","repo":"serial-console-mcp","archived":false,"pushedAt":"2026-09-15T15:39:47Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/219917943?v=4","ownerCreatedAt":"2025-07-08T21:27:13Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/219917943?v=4&s=128","source":"registry"},"presence":{"stars":0,"forks":0,"downloadsWeek":577,"license":"MIT","lastPushAt":"2026-09-15T15:39:47.000Z","score":32}}}},"grade_history":[],"reviews":[]}