coco-viewer-mcp
v1.0.2
Published
MCP server for coco-viewer
Downloads
12
Readme
coco-viewer MCP Server
MCP 클라이언트에서 coco-viewer를 제어하기 위한 MCP 서버입니다.
설치
Claude Code
claude mcp add --transport stdio coco-viewer -- npx coco-viewer-mcp기타 MCP 클라이언트
MCP 설정 파일에 다음을 추가하세요:
{
"mcpServers": {
"coco-viewer": {
"command": "npx",
"args": ["coco-viewer-mcp"]
}
}
}사용법
- coco-viewer를 브라우저에서 엽니다
- MCP 클라이언트를 실행하면 MCP 서버가 자동으로 시작됩니다
- 브라우저의 coco-viewer가 WebSocket으로 자동 연결됩니다
- MCP 클라이언트에서 PCB 뷰어를 제어할 수 있습니다
사용 가능한 Tool
viewer_load_file
PCB 파일을 뷰어에 로드합니다.
파라미터:
- path: 파일 경로 (필수)viewer_get_layers
현재 로드된 레이어 목록을 조회합니다.
viewer_set_layer_visible
레이어의 표시/숨김 상태를 설정합니다.
파라미터:
- layerId: 레이어 인덱스 (필수)
- visible: 표시 여부 (필수)viewer_get_net_lengths
지정한 Net의 길이를 계산합니다 (단위: mm).
파라미터:
- nets: Net 이름 목록 (필수)응답:
{
"success": true,
"unit": "mm",
"results": [
{
"netName": "USB_01DP",
"totalLength": 123.45,
"layerLengths": { "TOP": 10.2, "L2": 113.25 },
"traceCount": 18,
"featureCount": 18
}
],
"missingNets": []
}viewer_get_net_lengths_by_regex
정규식으로 매칭되는 Net의 길이를 계산합니다 (단위: mm).
파라미터:
- pattern: 정규식 패턴 (필수)
- flags: 정규식 플래그 (선택)
- limit: 최대 결과 수 (선택, 기본 200)응답:
{
"success": true,
"unit": "mm",
"results": [ ... ],
"matchCount": 12,
"matches": ["USB_01DP", "USB_01DM"],
"hasMore": false,
"missingNets": []
}viewer_get_components
현재 로드된 ODB++ Component 목록을 조회합니다.
viewer_search_nets_by_regex
정규식으로 Net 목록을 검색합니다. Net 목록 전체 조회는 이 도구로 대체합니다.
파라미터:
- pattern: 정규식 패턴 (필수)
- flags: 정규식 플래그 (선택)
- limit: 최대 결과 수 (선택, 기본 200)viewer_search_components_by_regex
정규식으로 Component 목록을 검색합니다.
파라미터:
- pattern: 정규식 패턴 (필수)
- flags: 정규식 플래그 (선택)
- limit: 최대 결과 수 (선택, 기본 200)viewer_highlight_nets_by_regex
정규식으로 매칭되는 Net을 하이라이트 on/off 합니다.
파라미터:
- pattern: 정규식 패턴 (필수)
- enabled: true면 하이라이트 on, false면 off (필수)
- flags: 정규식 플래그 (선택)
- autoSelectLayers: Net 레이어 자동 선택 여부 (선택)
- layerScope: "all" | "trc" (선택, 기본 all)viewer_auto_select_layers_for_nets
정규식으로 매칭되는 Net이 있는 레이어를 자동 활성화합니다.
파라미터:
- netPattern: 정규식 패턴 (필수)
- flags: 정규식 플래그 (선택)
- mode: "all" | "primary" | "top-n" (선택, 기본 all)
- layerScope: "all" | "trc" (선택, 기본 all)viewer_highlight_components_by_regex
정규식으로 매칭되는 Component를 하이라이트 on/off 합니다.
파라미터:
- pattern: 정규식 패턴 (필수)
- enabled: true면 하이라이트 on, false면 off (필수)
- flags: 정규식 플래그 (선택)viewer_fit_highlights
현재 하이라이트된 영역으로 Zoom Fit 합니다.
viewer_clear_highlights
Net/Component 하이라이트를 모두 해제합니다.
viewer_set_highlight_color
Net/Component 하이라이트 색상을 설정합니다.
파라미터:
- type: "net" | "component" (필수)
- name: Net 이름 또는 Component Reference (필수)
- color: #RRGGBB (필수)viewer_set_highlight_dim_mode
하이라이트 외 회색조 모드를 on/off 합니다.
파라미터:
- enabled: true면 회색조 모드 on, false면 off (필수)viewer_set_highlight_color_by_regex
정규식으로 매칭되는 Net/Component 하이라이트 색상을 설정합니다.
파라미터:
- type: "net" | "component" (필수)
- pattern: 정규식 패턴 (필수)
- color: #RRGGBB (필수)
- flags: 정규식 플래그 (선택)
- limit: 최대 결과 수 (선택, 기본 200)viewer_create_scene
현재 뷰 상태를 Scene 스냅샷으로 저장합니다.
파라미터:
- title: Scene 제목 (선택, 비어있으면 자동 생성)
- tags: Scene 태그 목록 (선택)
- note: Scene 노트 (선택, Markdown)
- includeLayers: 레이어 상태 포함 여부 (선택, 기본 true)
- includeHighlights: 하이라이트 포함 여부 (선택, 기본 true)
- includeThumbnail: 썸네일 포함 여부 (선택, 기본 true)viewer_create_scenes_batch
여러 Scene을 배치로 생성합니다.
파라미터:
- scenes: Scene 설정 배열 (필수)
- netPattern: 정규식 패턴 (필수)
- netPatternFlags: 정규식 플래그 (선택)
- componentPattern: Component 정규식 패턴 (선택)
- componentPatternFlags: Component 정규식 플래그 (선택)
- title: Scene 제목 (필수)
- note: Scene 노트 (선택)
- tags: Scene 태그 목록 (선택)
- highlightColor: 하이라이트 색상 (#RRGGBB, 선택)
- componentHighlightColor: Component 하이라이트 색상 (#RRGGBB, 선택)
- includeThumbnail: Scene별 썸네일 포함 여부 (선택)
- highlightDimUnhighlighted: Scene별 하이라이트 비포함 항목 회색조 (선택)
- autoLayerSelect: Scene별 레이어 자동 선택 여부 (선택)
- layerScope: "all" | "trc" (선택, 기본 all)
- autoFit: Scene별 ZoomFit 여부 (선택)
- autoLayerSelect: 레이어 자동 선택 (선택, 기본 true)
- autoFit: ZoomFit 자동 적용 (선택, 기본 true)
- includeThumbnail: 썸네일 포함 여부 (선택, 기본 true)
- highlightDimUnhighlighted: 하이라이트 비포함 항목 회색조 (선택, 기본 UI 상태)
- clearBetweenScenes: Scene 사이 하이라이트 초기화 (선택, 기본 true)
- layerScope: "all" | "trc" (선택, 기본 all)응답:
- batchId: 배치 ID
- executionTime: 실행 시간 문자열 (초 단위, 예: "3.35s")예시:
const result = await viewer_create_scenes_batch({
scenes: [
{
netPattern: "DDR4_0_DQ0[0-7]|DDR4_0_DQS0",
netPatternFlags: "i",
componentPattern: "U12|U13",
componentPatternFlags: "i",
title: "DDR4_0 Byte 0",
note: "DQ00-07 + DQS0",
tags: ["DDR4", "Byte0"],
highlightColor: "#FF6B6B",
componentHighlightColor: "#4ECDC4",
highlightDimUnhighlighted: true,
autoLayerSelect: true,
autoFit: true
}
],
autoLayerSelect: true,
autoFit: true,
includeThumbnail: true,
highlightDimUnhighlighted: true,
clearBetweenScenes: true,
layerScope: "all"
});타임아웃 주의:
- 일반 MCP tool 호출은 약 60초 내 응답이 필요합니다.
- `viewer_create_scenes_batch`는 최대 180초까지 대기합니다.
- 배치가 길어질 경우 4~8개 단위로 나누거나 layerScope: "trc" 사용을 권장합니다.
- 타임아웃이 발생해도 `viewer_get_scenes_batch_status`로 진행 상황을 확인할 수 있습니다.viewer_get_scenes_batch_status
Scene 배치 생성 진행 상태를 조회합니다.
파라미터:
- batchId: 조회할 배치 ID (선택, 비어있으면 마지막 배치)응답:
- status.batchId: 배치 ID
- status.status: "running" | "completed"
- status.currentIndex: 현재 처리된 개수
- status.totalScenes: 전체 개수
- status.results: 완료된 Scene 결과 목록viewer_capture_screen
현재 캔버스 화면을 PNG로 캡처하여 Base64 데이터로 반환합니다.
개발
# 개발 모드로 실행
npm run dev
# 빌드
npm run build
# 프로덕션 실행
npm start포트
- WebSocket:
ws://localhost:9000
