silotek-serial-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@silotek-serial-mcpshow me recent logs from SSM board"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
serial-mcp-server
ESP32·STM32 등 시리얼로 텍스트 로그를 출력하는 임베디드 보드의 로그를, AI(Claude Code,codex 등)가 펌웨어 디버깅 중 직접 읽도록 해 주는 헤드리스 MCP 서버.
사람은 장비를 물리적으로 동작시키고, AI는 이 서버의 도구로 그 결과 로그를 스스로 조회해 원인을 분석하고 코드를 고친다. 자동리셋 회로가 있는 보드는 AI가 승인 팝업을 거쳐 직접 리셋할 수 있고, 펌웨어 CLI/AT 명령도 승인 후 전송할 수 있다.
사람이 로그를 눈으로 보기 위한 모니터가 아니다. 다만 포트를 MCP가 점유하면 테라텀으로 볼 수 없으므로, owner 세션에는 localhost 웹 뷰어를 내장한다 — 첫 시리얼 도구 호출이 http://127.0.0.1:8743 (기본) 소유권을 잡으면 실시간 스트림·링버퍼를 컬러로 볼 수 있고, 좌측 세션 카드의 해제로 포트를 사람·다른 세션에 양보할 수 있다(도구 응답의 viewer_url 참조).
조회 도구는 읽기 전용 · 쓰기는
send_serial_command/reset_board2종만 승인 게이트로 허용 · stdio transport · 의존성은mcp[cli]+pyserial뿐OS 무관(macOS / Windows / Linux, WSL 제외)
백그라운드 스레드가 포트를 계속 읽어 ring buffer(기본 2000줄)에 적재 · 근접 중복 접기(dedup, 룩백 기본 5줄) · 정규식 수집 필터 · 공백뿐인 줄 미저장(tee 파일에는 원본 그대로)
도구
도구 | 용도 |
| 포트 목록 + VID/PID/description + 별칭 |
| 연결 상태 / 포트 / 보드레이트 / 마지막 에러 |
| 전 포트 메시 토폴로지 로스터 + 최근 홉 20개/체인 로그(개수 조절, 상한 200)(웹 뷰어 없이 AI가 경로 해석) |
| 최근 N줄 (접힌 묶음 표기 포함) |
| 정규식(또는 literal=True 시 부분 문자열) 검색, context>0이면 매칭 앞뒤 N줄 병합 반환 |
| 버퍼 크기 / 최신·최오래 항목 |
| 버퍼 비우기 (시험 시작) |
| 보드 CLI/AT 명령 전송 + 직후 응답 회수(매 호출 승인) |
| DTR/RTS 자동리셋 펄스 + 부팅 로그 회수(매 호출 승인) |
블랙박스 루프: clear_log_buffer → 가능하면 reset_board 승인 후 직접 리셋(거부/미지원/0줄이면 사람이 물리 리셋) → get_recent_logs / query_serial_logs. 메시/멀티홉 경로를 해석할 때는 get_topology로 로스터, 최근 홉, 최근 체인 로그를 먼저 확인한다. 표적 진단은 query_serial_logs를 context와 함께 우선 쓰고, get_recent_logs 전체 재조회는 최후 수단으로 남긴다.
Related MCP server: serial-mcp
설치
A. silotek 마켓플레이스 (권장)
이미 silotek 마켓을 등록한 팀은 serial-mcp 플러그인을 설치한다(장비를 다루는 인원만).
Claude Code:
/plugin install serial-mcp@silotek --scope userCodex는 플러그인으로 serial 스킬을 설치한 뒤, 현재 구조상 MCP 도구를 top-level 설정에도 한 번 등록해야 한다. silotek-plugin-marketplace 저장소 루트에서:
pwsh -NoProfile -ExecutionPolicy Bypass -File .\plugins\serial-mcp\scripts\install-codex.ps1
pwsh -NoProfile -ExecutionPolicy Bypass -File .\plugins\serial-mcp\scripts\verify-codex.ps1 -RequireDirectConfigB. 직접 등록 (마켓 미경유)
claude mcp add --scope user serial-mcp \
-e SERIAL_PORT=<your-port> -e SERIAL_BAUD=115200 \
-- uvx --from git+https://github.com/JOCOIN94/serial-mcp-server serial-mcp⚠️ B 경로는 MCP 도구만 등록되고, 사용 안내 스킬은 포함되지 않는다(스킬은 플러그인 경로에만 동봉). docstring 이 자족적이라 도구 자체는 정상 동작한다.
환경변수
변수 | 기본값 | 설명 |
| (없음=자동) | 미설정이면 USB 시리얼 전부 자동 모니터링(실행 중 꽂은 포트도 핫플러그로 자동 추가). 지정 시 그 목록만: |
| (없음) | 포트→보드 별칭. |
| (없음) | 로그 내용으로 보드 자동 식별: |
|
| 보드레이트 |
| (없음) | 로그 영구 기록 경로 — 포트별 파일로 분리( |
| (없음) | 이 정규식에 매칭되는 줄은 저장하지 않음 |
| (없음) | 지정 시 매칭되는 줄만 저장 |
|
| ring buffer 크기 |
|
| 중복 접기 룩백 윈도 — 최근 N줄 안의 같은 줄을 접음. |
|
| 웹 뷰어이자 whole-session 소유권 잠금 포트. 점유 시 임시 포트 폴백 없이 휴면/안내로 동작한다. |
|
| 포트 감시 간격(초, 소수 허용). 자동 스캔 모드: 서버 실행 중 꽂은 보드를 자동 추가(연속 2회 스캔 확인 후 — 드라이버 정착 유예). 모든 모드: 열거 목록에서 연속 2회 사라진 포트의 좀비 핸들 강제 해제(플래키 어댑터 대응). |
|
| 쓰기 도구 전면 스위치. |
|
| 쓰기 도구의 서버측 elicitation 승인 범위(3-state). |
|
|
|
쓰기 승인 동작
send_serial_command와 reset_board는 기본(SERIAL_WRITE_CONFIRM=all)으로 매 호출 사용자 승인을 요구한다. SERIAL_WRITE_CONFIRM=r3이면 R3 파괴 명령(reflash/format/download/파일삭제/임의 JSON 주입 + boot-menu D)에만 승인 팝업을 띄우고, 조회·복원 가능한 설정·재부팅(reset_board 포함)은 승인 없이 통과한다. all/r3에서 승인이 필요한 호출인데 클라이언트가 elicitation(승인 팝업)을 지원하지 않으면 전송하지 않고 SERIAL_WRITE_CONFIRM=off 안내가 포함된 에러를 반환한다. 사용자가 거절하거나 취소하면 status="declined"이며, AI는 같은 명령을 반복 호출하지 않고 사람과 다음 행동을 합의해야 한다.
송신 감사 마커는 [TX] ... 또는 [RST] ...로 기록된다. 웹 스트림과 tee 파일에는 항상 남고, 링버퍼에는 include/exclude 필터가 적용된다. 포트를 여는 순간 일부 자동리셋 보드가 리셋될 수 있는데, 이는 pyserial open 시 DTR/RTS 상태 변화로 생기는 기존 동작이며 명시적 reset_board 호출과 구분된다.
다중 포트 · 별칭
기본값(미설정)이면 USB 시리얼을 전부 자동 모니터링한다 — 보드 2개면 2개, 10개면 10개. 사람이 보는 모든 표기는 별칭을 설정하면 SSM (COM4) 형태가 된다. 서버 실행 중에 보드를 새로 꽂아도 몇 초 안에 자동으로 모니터링이 시작된다(핫플러그, SERIAL_HOTPLUG):
Windows (PowerShell):
setx SERIAL_NAMES "COM4=SSM,COM13=SB1"(새 터미널부터 적용)macOS / Linux:
export SERIAL_NAMES="COM4=SSM"특정 포트만 보려면:
setx SERIAL_PORT "COM4,COM13@9600"(@N=포트별 보드레이트)포트 번호가 자주 바뀌는 어댑터(시리얼넘버 없는 클론 등)는 로그 내용 기반 자동 식별이 편하다:
setx SERIAL_AUTONAME "SSM=FW Ver:SSM|\[IOc\];SB1=Send to the STM32". 패턴 고를 때 두 가지 함정:① 그 보드 로그에서만 나오는 패턴이어야 한다 — 상대 보드 이름이 로그에 인용되는 경우(예: SSM 로그 속 "SB1") 오인 주의.
② 모든 동작 상태에서 나오는 패턴이어야 한다 — 정상 동작 중에만 나오는 줄(예: 하위장비 패킷 처리
\[Proc-)을 고르면 고장·유휴 상태에서 식별이 안 된다(WiFi 끊긴 SSM은\[Proc-대신[IOc] Disconnected!만 뱉음). 부팅 배너(FW Ver:…)나 상태 무관 상시 마커(\[IOc\]등)가 안전하다.
별칭의
유닛-칩규칙: 웹 뷰어는 별칭의 첫-앞을 유닛, 뒤를 칩으로 묶는다(SB-ESP·SB-STM→유닛 "SB",SSM-ESP→유닛 "SSM"·칩 "ESP"). 한 유닛에 칩이 여러 개면 한 박스로 묶여 보인다.
포트 단위 AI 도구는 보드가 여러 개면 port 인자(별칭/포트명/SSM (COM4) 라벨)를 지정해 호출한다. 미지정 시 예외는 둘 — get_serial_status는 전 포트 상태 배열을 반환하고, clear_log_buffer는 전체 버퍼를 비운다. get_topology는 전 포트 토폴로지 스냅샷이라 port 인자가 없다.
자기 포트 찾기
list_serial_ports도구 (VID/PID·description 까지 보여 줌)또는 OS 명령: macOS
ls /dev/cu.*· Linuxls /dev/ttyUSB*· Windows 장치 관리자
uv / uvx
이 서버는 uvx 로 git 에서 바로 실행된다. uv 설치는 https://docs.astral.sh/uv/ 참고(Windows 는 설치 후 PATH 확인). private 레포면 팀원의 git 인증이 필요하다.
웹 로그 뷰어
owner 세션이 획득된 동안 브라우저로 http://127.0.0.1:8743 (기본)을 열면:
포트 셀렉터 — 보드가 여러 개면 헤더에서
SSM (COM4)식으로 전환(1개면 숨김). 핫플러그로 보드가 늘면 새로고침 없이 자동 추가된다.소유권 보드 — MCP 클라이언트 세션(
clientInfo.name)과 H.W/board 묶음을 표시한다. 해제(release) 는 이 owner 세션의 전체 COM 핸들, 뷰어, 8743 잠금을 반납해 테라텀·다른 AI 세션이 쓸 수 있게 하는 양보다. 해제 뒤 다음 세션의 첫 시리얼 도구 호출이 새 owner 획득을 시도한다.스트림 탭 — 수신 원본 실시간 표시(테라텀 대체). 일시정지·자동스크롤·화면 지우기 지원.
버퍼 탭 — AI가 보는 것과 같은 가공 뷰(중복 접힘
(N회 반복…)표기 포함).검색·필터 — 리터럴 검색(로그의 태그 클릭으로도 토글), ERR/WARN/BOOT 레벨 칩, 에러·경고·성공만 보는 Focus 모드, 스크롤 업 중 새 로그 배지.
가독성(구조 기반) — 줄을 score로 분류해(특정 문자열 암기 아님, 모호하면 neutral) 좌측 bar·작은 badge 중심으로 절제된 컬러를 입힌다. ANSI 색 해석(16/256/truecolor, 깨져도 안전), 태그별 저채도 고정색, JSON inline/접기/펼침 + correlation key badge, 반복(정확·유사) 접기
×N, 수신 시간 간격·부팅/리셋 구간 구분선, MAC/IP/URL/UUID 등 구조 인식.설정 패널(⚙) — 색 강도(Off/Min/Normal/Vivid), 줄 간격(조밀/보통/여유), JSON 표시(한 줄/접기/펼침), 반복 접기 ON·OFF와 판정(정확/값 무시), ANSI·semantic 색 토글, 타임스탬프·줄바꿈·글자 크기. 모든 설정은 브라우저에 저장된다. 색 강도를 Off로 두면 거의 원문 그대로 본다.
뷰어는 보조 기능이다 — 실패해도 MCP 도구는 정상 동작하며, 127.0.0.1 전용이라 외부에서 접속할 수 없다.
로컬 개발
uv sync
$env:SERIAL_PORT = "COM4" # PowerShell 예시
uv run serial-mcp시리얼 포트는 포트당 한 프로그램이 원칙이다. serial-mcp는 첫 시리얼 도구 호출 전까지 휴면이라 COM 포트를 열지 않는다. owner가 된 뒤에는 Windows가 OS 배타 점유를 강제해 같은 포트를 테라텀 등이 열 수 없다(그 반대도 마찬가지). macOS/Linux는 단독 점유가 강제되지 않아 동시에 열 수는 있지만 수신이 쪼개져 양쪽 로그가 깨지므로 피하라 — 사람이 볼 화면은 내장 웹 뷰어를 쓰면 된다.
Available Tools
6 toolsclear_log_bufferA
[언제 호출] 블랙박스 시험의 '시작' 단계 — 새 시험을 깨끗한 상태에서 관측하려고 직전 로그를 비울 때. 표준 절차: 비우고 → 사람에게 장비 동작/리셋 요청 → 잠시 후 get_recent_logs 로 회수.
[port 규약] 다른 도구와 달리 미지정 = 전체 포트 비우기(시험 시작 시 모든 보드를 함께 리셋 관측하는 게 보통이므로). 특정 보드만 비우려면 port 지정.
[무엇을 반환] cleared(총 비운 항목 수)와 ports(포트별 내역).
[루프 단계] 시험 시작.
| Name | Required | Description | Default |
|---|---|---|---|
| port | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It describes the return value (cleared count and per-port details) and the port convention (unspecified clears all ports). It does not mention permissions or side effects beyond clearing, but the behavior is adequately disclosed for a simple operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with clear sections but is slightly verbose. However, every sentence adds value, and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers return values, parameter usage, and integrates with the test workflow (clear, then request device operation, then get_recent_logs). It is complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description fully carries the burden. It explains the port parameter's default behavior (unspecified clears all ports) and how to target specific boards. This adds crucial meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to clear the log buffer at the start of a black-box test for clean observation. It distinguishes from sibling tools like get_recent_logs by describing the subsequent retrieval step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to call (start of test) and provides a standard procedure. It also references get_recent_logs for after clearing, guiding the agent on correct usage sequence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_log_buffer_infoA
[언제 호출] 버퍼가 얼마나 찼는지, 최근/최오래 항목이 무엇인지 빠르게 볼 때. clear_log_buffer 직후 새 로그 유입을 폴링할 때 특히 유용.
[port 규약] get_recent_logs 와 동일.
[무엇을 반환] entries/capacity, oldest/newest, 누적 total_received/total_stored, dedup(룩백 윈도 — 0이면 끔).
[루프 단계] 진행 점검(폴링).
| Name | Required | Description | Default |
|---|---|---|---|
| port | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes return values (entries/capacity, oldest/newest, cumulative stats, dedup). Does not explicitly state read-only but from description it's clearly a read operation. No annotations provided, so description carries burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Highly structured with clear sections (When to call, Port convention, Return value, Loop step). No redundant sentences. Front-loaded with usage context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Overall very complete given no output schema and one parameter. Explains return fields and typical use case. Only minor gap is port parameter explanation, relying on sibling reference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% coverage for the single 'port' parameter. Description only references the same convention as get_recent_logs, which is insufficient standalone. Agent must look up sibling tool to understand parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool's purpose: to check buffer fullness and see recent/oldest items. It uses a specific verb ('볼 때') and resource ('버퍼'). It distinguishes from siblings by mentioning it's for buffer info, not log retrieval or clearing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to call: to quickly see buffer state, especially after clear_log_buffer for polling. Provides context for parameter usage by referencing get_recent_logs convention.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recent_logsA
[언제 호출] 블랙박스 루프의 '결과 확인' 단계 — 사람이 장비를 동작시킨 뒤 쌓인 로그를 확인할 때. 가장 자주 쓰는 도구.
[port 규약] 보드가 여러 개면 port 를 지정하라(별칭 "SSM" 또는 "COM4", 대소문자 무관). 미지정: 포트 1개면 그 포트, 복수면 에러와 함께 ports 목록을 돌려준다 — 목록에서 골라 즉시 재호출하면 된다.
[무엇을 반환] 최근 N개 라인(시간 오름차순). 근접 중복은 룩백으로 접혀 '(N회 반복, HH:MM:SS~HH:MM:SS)' 표기 — 접힘은 요약이라 반복 줄들의 정밀한 교차 순서는 뭉개진다. 정밀 순서가 필요하면 SERIAL_DEDUP=1 또는 0 으로 낮춰 재시험하라(tee 파일엔 원본 보존).
[팁] 결과가 많으면 query_serial_logs 로 좁혀라. 비어 있으면 get_serial_status 로 연결을 확인하고, 그래도 비면 사람에게 장비 동작/리셋을 요청하라.
[루프 단계] 결과 확인.
| Name | Required | Description | Default |
|---|---|---|---|
| lines | No | ||
| port | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description fully discloses behavior: returns recent N lines in time order, deduplicates nearby duplicates with summary showing repetition count and time range, warns that precise order is lost, and suggests adjusting SERIAL_DEDUP for precision.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is structured with clear sections in brackets ([언제 호출], [port 규약], [무엇을 반환], [팁], [루프 단계]). Each section is concise and adds essential information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 2 parameters with no schema descriptions and no output schema, the description fully covers usage context, port protocol, return format, deduplication behavior, alternatives, and troubleshooting. It is more than sufficient for agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Though schema coverage is 0%, description explains port behavior in detail (alias, multiple boards case) and implies lines parameter by mentioning recent N lines. However, it does not explicitly describe the 'lines' parameter or its default value. Well-articulated port semantics compensate for missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description starts with '[언제 호출] 블랙박스 루프의 '결과 확인' 단계' clearly stating when to use it. It specifies it retrieves recent logs and distinguishes from siblings by mentioning alternatives like query_serial_logs and get_serial_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to call after operating equipment, how to handle multiple boards with port specification, and provides troubleshooting tips: if too many results use query_serial_logs, if empty check get_serial_status then ask human.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_serial_statusA
[언제 호출] 로그가 안 들어올 때 '어느 보드가 연결돼 있는지'부터 확인할 때. 포트 점유/미연결/미인식 원인을 구분한다.
[무엇을 반환] port 미지정 시 모니터링 중인 전 포트의 상태 배열(ports). port(별칭 "SSM" 또는 포트명 "COM4") 지정 시 그 포트의 단일 상태. connected 가 false 이고 last_error 에 점유/권한 에러가 있으면 사람에게 같은 포트를 쓰는 다른 프로그램(테라텀 등) 종료를 요청하라.
사람이 로그를 직접 눈으로 보고 싶어 하면 viewer_url 링크를 안내하라(웹 뷰어). [루프 단계] 문제 진단.
| Name | Required | Description | Default |
|---|---|---|---|
| port | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool returns status arrays and single status, and mentions last_error and viewer_url fields. It does not mention destructive actions or authentication needs, but the read-only nature is implied. Slight omission of explicit safety guarantees.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections ([언제 호출], [무엇을 반환], [루프 단계]), each serving a distinct purpose. It is concise yet comprehensive, with no redundant sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool (one optional param, no output schema, no annotations), the description provides complete context: usage trigger, return behavior for both cases, error interpretation, and even links to viewer_url. It effectively differentiates from sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only one parameter (port, optional) and 0% schema description coverage, the description fully compensates by explaining the effect of omitting (returns all ports) vs specifying (returns a single port) the parameter. This adds significant semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to check which board is connected when logs are not coming in, and to distinguish causes like port occupancy, unconnected, or unrecognized. It specifies the return behavior for both port unspecified and specified, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context: call when logs are not incoming to verify board connection. It also gives actionable guidance on interpreting errors (e.g., if connected false with last_error occupancy, ask user to close other programs) and suggests directing users to viewer_url for manual log viewing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_serial_portsA
[언제 호출] 어느 포트가 어느 보드인지 확인할 때, 모니터링 대상을 점검할 때.
[무엇을 반환] 현재 PC의 시리얼 포트 목록. 각 포트의 device/description/vid/pid/ manufacturer/serial_number 에 더해, 이 서버가 모니터링 중이면 monitored=true 와 별칭 name 이 붙는다. monitored_ports 는 현재 모니터링 목록(별칭 표기). VID/PID·description 으로 칩(CH343, CP210x 등)을 추론하라.
[루프 단계] 사전 점검 — 보통 한 번만.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description details the returned fields (device, description, VID, PID, etc.) and adds conditional behavior about monitoring status. It does not mention side effects or permissions, but listing ports is inherently safe.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is neatly organized into sections ('When to call', 'What it returns', 'Loop step') with no unnecessary words. Every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description fully explains the return value and monitoring behavior. It also gives context on when and how to use the tool, making it self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is 100%. The baseline score is 4, and the description correctly provides no redundant parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists serial ports and provides specific use cases (checking which port corresponds to which board, inspecting monitoring targets). It distinguishes itself from sibling log tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance on when to call (port/board identification, monitoring check) and notes it is a one-time pre-check. It lacks explicit 'when not to use' or alternatives, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_serial_logsA
[언제 호출] 특정 키워드/에러/마커를 버퍼에서 찾을 때. 예: 부팅 완료 문구, 'ERROR', 특정 상태 출력의 등장 여부.
[port 규약] get_recent_logs 와 동일 — 복수 포트면 지정, 미지정 에러 시 ports 목록에서 골라 재호출.
[무엇을 반환] 정규식 pattern 매칭 라인들(최신 우선 max_results개, 반환은 시간 오름차순, 접힌 묶음 표기 포함). 매칭 0이면 그 문구가 아직 안 나온 것 — 사람에게 해당 동작을 요청하거나 더 기다린 뒤 재조회하라.
[루프 단계] 결과 확인(표적 검색).
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | Yes | ||
| max_results | No | ||
| port | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses return format (matching lines, newest first, time ascending, collapsed grouping) and behavior when no match is found. This is adequate for a query tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with clear sections (언제 호출, port 규약, etc.), making it easy to parse. It is moderately concise with no extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 params, no output schema, and no annotations, the description covers usage context, return format, and error handling. However, it omits details like whether pattern is regex or literal, and the exact effect of max_results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It explains pattern (keyword/error/marker) and port (protocol), but max_results is only mentioned by name without full meaning. Some semantic value is added, but not comprehensive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to find specific keywords/errors/markers in a buffer. It distinguishes itself from siblings like get_recent_logs by focusing on pattern matching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-call (searching for specific strings) and port protocol (similar to get_recent_logs). It also advises on no-match scenarios. However, it lacks explicit when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
6 tool updates
v0.1.0- First observed
clear_log_buffer - First observed
get_log_buffer_info - First observed
get_recent_logs - First observed
get_serial_status - First observed
list_serial_ports - First observed
query_serial_logs
TDQS
Each tool has a clearly distinct purpose: clearing buffer, getting buffer info, retrieving recent logs, checking serial status, listing ports, and querying logs. Descriptions include specific usage contexts and rules that prevent confusion.
All tool names follow a consistent verb_noun pattern in snake_case (clear_, get_, list_, query_), with no mixing of conventions or vague verbs.
Six tools is a well-scoped number for a serial monitoring server, covering essential operations without unnecessary complexity.
The set covers core serial log workflows (list, status, clear, get, search), but lacks explicit tools to start/stop monitoring or configure ports, which are minor gaps for a complete lifecycle.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.
Real-time chat for AI agents. Claude Code, Cursor, Cline and Codex join channels over MCP.
Related MCP Servers
- AlicenseAqualityBmaintenanceStateful MCP server for driving debug probes (J-Link) to flash, debug, and inspect embedded targets. Enables AI agents to perform flash, memory, breakpoint, and ELF/SVD-aware operations conversationally.4110MIT
- AlicenseAqualityAmaintenanceMCP server that lets LLMs talk to serial devices: microcontrollers, routers, modems, embedded Linux, anything with a UART.235MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI agents to read serial output from devices by buffering lines in the background and allowing polling for new output, preventing blocking on long-running serial monitors.-

sbl-probeofficial
AlicenseNot gradedqualityDmaintenanceSerial communication and protocol analysis MCP server that gives AI coding assistants direct access to serial ports for reading, writing, decoding, and capturing embedded device output.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/JOCOIN94/serial-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server