MCP server for coco-viewer
npm install coco-viewer-mcpMCP 클라이언트에서 coco-viewer를 제어하기 위한 MCP 서버입니다.
``bash`
claude mcp add --transport stdio coco-viewer -- npx coco-viewer-mcp
MCP 설정 파일에 다음을 추가하세요:
`json`
{
"mcpServers": {
"coco-viewer": {
"command": "npx",
"args": ["coco-viewer-mcp"]
}
}
}
1. coco-viewer를 브라우저에서 엽니다
2. MCP 클라이언트를 실행하면 MCP 서버가 자동으로 시작됩니다
3. 브라우저의 coco-viewer가 WebSocket으로 자동 연결됩니다
4. MCP 클라이언트에서 PCB 뷰어를 제어할 수 있습니다
``
파라미터:
- path: 파일 경로 (필수)
``
파라미터:
- layerId: 레이어 인덱스 (필수)
- visible: 표시 여부 (필수)
``
파라미터:
- 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": []
}
``
파라미터:
- pattern: 정규식 패턴 (필수)
- flags: 정규식 플래그 (선택)
- limit: 최대 결과 수 (선택, 기본 200)
응답:
``
{
"success": true,
"unit": "mm",
"results": [ ... ],
"matchCount": 12,
"matches": ["USB_01DP", "USB_01DM"],
"hasMore": false,
"missingNets": []
}
``
파라미터:
- pattern: 정규식 패턴 (필수)
- flags: 정규식 플래그 (선택)
- limit: 최대 결과 수 (선택, 기본 200)
``
파라미터:
- pattern: 정규식 패턴 (필수)
- flags: 정규식 플래그 (선택)
- limit: 최대 결과 수 (선택, 기본 200)
``
파라미터:
- pattern: 정규식 패턴 (필수)
- enabled: true면 하이라이트 on, false면 off (필수)
- flags: 정규식 플래그 (선택)
- autoSelectLayers: Net 레이어 자동 선택 여부 (선택)
- layerScope: "all" | "trc" (선택, 기본 all)
``
파라미터:
- netPattern: 정규식 패턴 (필수)
- flags: 정규식 플래그 (선택)
- mode: "all" | "primary" | "top-n" (선택, 기본 all)
- layerScope: "all" | "trc" (선택, 기본 all)
``
파라미터:
- pattern: 정규식 패턴 (필수)
- enabled: true면 하이라이트 on, false면 off (필수)
- flags: 정규식 플래그 (선택)
``
파라미터:
- type: "net" | "component" (필수)
- name: Net 이름 또는 Component Reference (필수)
- color: #RRGGBB (필수)
``
파라미터:
- enabled: true면 회색조 모드 on, false면 off (필수)
``
파라미터:
- type: "net" | "component" (필수)
- pattern: 정규식 패턴 (필수)
- color: #RRGGBB (필수)
- flags: 정규식 플래그 (선택)
- limit: 최대 결과 수 (선택, 기본 200)
``
파라미터:
- title: Scene 제목 (선택, 비어있으면 자동 생성)
- tags: Scene 태그 목록 (선택)
- note: Scene 노트 (선택, Markdown)
- includeLayers: 레이어 상태 포함 여부 (선택, 기본 true)
- includeHighlights: 하이라이트 포함 여부 (선택, 기본 true)
- includeThumbnail: 썸네일 포함 여부 (선택, 기본 true)
``
파라미터:
- 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")
예시:
`javascript`
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"
});
`viewer_create_scenes_batch
타임아웃 주의:
- 일반 MCP tool 호출은 약 60초 내 응답이 필요합니다.
- 는 최대 180초까지 대기합니다.viewer_get_scenes_batch_status
- 배치가 길어질 경우 4~8개 단위로 나누거나 layerScope: "trc" 사용을 권장합니다.
- 타임아웃이 발생해도 로 진행 상황을 확인할 수 있습니다.`
``
파라미터:
- batchId: 조회할 배치 ID (선택, 비어있으면 마지막 배치)
``
응답:
- status.batchId: 배치 ID
- status.status: "running" | "completed"
- status.currentIndex: 현재 처리된 개수
- status.totalScenes: 전체 개수
- status.results: 완료된 Scene 결과 목록
`bash개발 모드로 실행
npm run dev
포트
- WebSocket:
ws://localhost:9000`