MCP

serial-mcp-server로 포트를 열거하고 시리얼 흐름을 자동화한다

도우미나 스크립트가 로컬 시리얼에 닿고 JSON 매크로로 타이밍을 재생하는 용도. Rust 1.74+ 필요. 처음에는 list-ports. 알 수 없는 포트에 쓰지 않는다.

Official source · serial-mcp-server

Install

cargo build --release

누구에게 맞나

도우미나 스크립트가 시리얼/UART에 닿게 하고, 같은 흐름을 MCP 도구와 명령줄 둘 다로 쓰고 싶다면 serial-mcp-server가 맞다. MCP stdio 서비스와 스크립트 가능한 CLI를 제공하며 CI와 MCP 설정이 필요 없는 agent skill에 쓴다. 현재 릴리스 목표는 0.3.0이다.

이 기기에 Rust 1.74 이상이 있고, 하드웨어 작업 때 시리얼 장치나 USB-시리얼 어댑터를 제공할 수 있으며 그 포트의 시스템 권한이 있는 사람에게 맞다. 저장소:

https://github.com/adancurusul/serial-mcp-server

브라우저에서만 클릭하고 컴파일 환경이 없는 사람은 여기서 멈춘다 — 공식 입구는 클론 후 cargo build --release.

3분 만에 첫 시도 마치기

공식 주 경로는 소스에서 컴파일한다. 선행 조건: Rust 1.74+. 처음에는 실제 장치를 연결하지 않는다: 로컬 포트만 열거해 시리얼에 잘못 쓰지 않는다.

설치 위치는 클론한 저장소 루트:

git clone https://github.com/adancurusul/serial-mcp-server.git
cd serial-mcp-server
cargo build --release

바이너리는 target/release/serial-mcp-server. cargo install --path . --locked로 PATH에 넣을 수도 있지만 처음에는 저장소에서 만든 바이너리면 된다.

저위험 첫 호출:

serial-mcp-server list-ports --json

이는 읽기 전용 열거이며 장치에 데이터를 쓰지 않는다. 먼저 serial-mcp-server --help를 돌려 명령이 있는지 확인해도 된다. 문서의 포트 자리 표시를 실제 장치 이름으로 써서 보내지 않는다.

관찰 가능한 성공 신호: list-ports --json가 포트 JSON을 찍고(비어 있어도 됨) 프로세스가 정상 종료한다. 권한이 부족하면 선택한 시리얼에 대한 OS 권한을 먼저 해결한다. 적혀 있지 않은 런처로 바꾸지 않는다.

사용 사례

사례 1: 어떤 포트가 있는지 본 뒤 하나를 탐지한다. 대응 명령은 list-ports --json와 --baud 115200 --json를 붙인 probe. 포트 이름은 그 출력에서 온다. 가상 경로를 손으로 쓰지 않는다. probe는 하드웨어에 닿는다. 장치가 연결된 것을 확인한 뒤 실행한다.

사례 2: 여러 단계 타이밍을 JSON 매크로로 묶는다. 장치는 흔히: 명령을 보내고, 몇 밀리초 기다리고, 프롬프트나 응답을 읽고, 다음을 보낸다. 매크로 팩은 그 과정을 기록해 사람, CLI, 도우미가 macro validate, macro list, macro plan를 하고 하드웨어 없이 시뮬레이트할 수 있다. MCP 쪽에도 메모리 매크로 팩 로드 / 열거 / 언로드, plan과 run이 있다. 실제 macro run 또는 write/read는 실제 포트를 조작한다. 먼저 배선을 확인한 뒤 돌린다.

사용 경계

0.3.0은 Quick을 공개 API에서 뺐다. Quick 스타일 쓰임은 매크로로 써야 한다. Quick 인터페이스를 더 찾지 않는다.

write의 기본 예시 데이터는 H이며 --read --timeout-ms 1000 --json가 붙는다. 이는 포트로 데이터를 보낸다. 타임아웃과 보드레이트 발췌는 115200과 1000 ms만 보여 주며 모든 장치의 안전 기본값이 아니다.

그래픽 인터페이스나 클라우드 시리얼은 쓰지 않았다. MCP는 stdio. 클라이언트를 지목하지 않았다. 매크로는 먼저 시뮬레이트할 수 있지만 run은 장치 상태를 바꿀 수 있다. 권한이 부족하거나 드라이버가 없으면 하드웨어 명령은 실패한다.