npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

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"]
    }
  }
}

사용법

  1. coco-viewer를 브라우저에서 엽니다
  2. MCP 클라이언트를 실행하면 MCP 서버가 자동으로 시작됩니다
  3. 브라우저의 coco-viewer가 WebSocket으로 자동 연결됩니다
  4. 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