Skip to main content
Glama
gambhirsharma

circuitsnap

circuitsnap

찍고, 시뮬레이션하세요. 회로 그림 — 사진, 스케치, 아니면 그냥 설명 — 을 Falstad's CircuitJS1에서 실행되는 실시간 시뮬레이션으로 바꿔 줍니다.

MCP 서버(그래서 Claude와 같은 어시스턴트가 회로를 구축할 수 있음), CLI, 그리고 라이브러리로 제공됩니다.

$ circuitsnap build rc.json
https://www.falstad.com/circuit/circuitjs.html?ctz=CQAgjCAMB0l3BWcMBMcUHYMGZIA4UA2ATmIxAUgo...

$ 1 0.000005 10.20027730826997 50 5 50
v 128 64 192 64 0 0 40 5 0 0 0.5
r 384 64 448 64 0 10000
c 128 176 192 176 0 0.000001 0 0
...

URL을 열면 회로가 실행됩니다.

왜

언어 모델에게 CircuitJS1의 파일 형식을 직접 작성하라고 요청하는 것은 작동하지 않습니다. 형식은 위치 기반이며 관대하지 않습니다 — v 128 64 192 64 0 0 40 5 0 0 0.5에는 여섯 개의 후행 매개변수가 있으며, 그 순서, 단위 및 플래그 비트는 시뮬레이터의 Java 소스를 읽어야만 알아낼 수 있습니다. 잘못된 추측은 반갑게 로드되면서 잘못 시뮬레이션되는 회로를 만들어 냅니다. 이는 최악의 실패입니다. 사용자는 그 차이를 알 수 없기 때문입니다.

circuitsnap은 그 작업을 테스트된 코드로 옮깁니다. 모델은 무엇이 무엇에 연결되는지를 설명하고, 이 라이브러리는 형식, 기하 구조, 이스케이프 및 인코딩을 처리합니다.

Related MCP server: circuit-sim-mcp

설치

npm install -g circuitsnap

MCP 서버로

{
  "mcpServers": {
    "circuitsnap": { "command": "npx", "args": ["-y", "circuitsnap-mcp"] }
  }
}

(circuitsnap는 CLI이고, circuitsnap-mcp는 stdio 서버입니다. 단일 바이너리를 선호한다면 circuitsnap mcp도 서버를 실행합니다.)

Claude Code를 사용한다면 skills/circuitsnap/을(를) .claude/skills/에 복사하여 /circuitsnap 워크플로를 얻으세요. 이 워크플로는 그림 읽기와 결과 검증을 다룹니다.

사용법

회로를 넷리스트로 설명하세요 — 구성 요소와 넷 이름, 좌표 없이:

{
  "title": "RC lowpass",
  "components": [
    { "id": "V1", "kind": "voltage",   "nodes": ["gnd", "in"],  "value": 5 },
    { "id": "R1", "kind": "resistor",  "nodes": ["in", "out"],  "value": "10k" },
    { "id": "C1", "kind": "capacitor", "nodes": ["out", "gnd"], "value": "1uF" }
  ]
}

동일한 넷 이름을 공유하는 단자는 연결됩니다. 이것이 전체 모델입니다.

circuitsnap build rc.json          # URL + circuit text
circuitsnap build rc.json --url    # just the URL
circuitsnap elements               # pin order and parameters for every kind
circuitsnap decode "<share-url>"   # read someone else's circuit

라이브러리로:

import { snap } from 'circuitsnap';

const { url, text, diagnostics } = snap({
  components: [
    { id: 'V1', kind: 'voltage',  nodes: ['gnd', 'in'], value: 5 },
    { id: 'R1', kind: 'resistor', nodes: ['in', 'gnd'], value: '1k' },
  ],
});
console.log(url.url);

값

회로도에 사람이 쓰는 방식으로 작성된 공학 표기법:

입력

값

"10k"

10 000

"2.2uF"

2.2e-6

"4k7"

4700

"1M"

1e6 (메가, 밀리가 아님)

"1R2"

1.2

M은 메가이고 m은 밀리입니다 — 회로도 규약입니다. SPICE에서 M이 밀리를 의미한다면, 손으로 라벨을 쓴 "10M 저항"이 10밀리옴이 되어 버릴 것입니다.

요소

wire, resistor, capacitor, inductor, voltage, rail, ground, switch, diode, led, current, labeledNode, transistor, opamp, output, probe, text.

circuitsnap elements를 실행하면 핀 순서, 매개변수, 단위 및 기본값을 알 수 있습니다. 핀 순서가 중요합니다: 트랜지스터는 [base, collector, emitter], 연산 증폭기는 [minus, plus, out]입니다.

접지

gnd(또는 ground, 0, vss)라는 넷 이름을 사용하세요. 그 단자들은 라벨이 아닌 실제 접지 기호를 얻습니다 — "gnd"라는 이름의 라벨링된 노드는 0 V 기준을 갖지 않으며 솔버를 기준점 없이 남겨 둡니다. circuitsnap은 회로에 접지가 전혀 없으면 경고합니다.

작동 방식

파이프라인은 넷리스트 -> 검증 -> 배치 -> 생성 -> URL이며, 모델이 필요한 단계는 그림 읽기뿐입니다. 알아 둘 만한 두 가지 결정 사항이 있습니다:

  • 넷은 라우팅된 전선이 아니라 이름이 있는 라벨로 연결됩니다. 95% 정확한 자동 라우터는 보기에는 맞지만 시뮬레이션은 틀린 회로를 만들어 냅니다. 핀 옆에 있는 라벨은 검증할 수 있습니다. 출력은 계층적 회로도처럼 읽힙니다.

  • 레거시 텍스트 형식을 생성하며 XML이 아닙니다. 현재 업스트림은 XML을 작성하지만 여전히 텍스트를 읽기 때문에, 텍스트는 구형 및 신형 빌드에서 모두 로드되는 유일한 인코딩입니다.

이유는 docs/ARCHITECTURE.md에서, 파일 형식 참조는 docs/FORMAT.md에서 확인하세요. 이 문서는 업스트림 소스에서 줄 인용과 함께 파생되었습니다.

정확성

형식은 리버스 엔지니어링되었으므로 정확성이 결정적입니다:

  • 372개의 업스트림 회로는 파서를 거쳐도 바이트 단위로 동일하게 유지됩니다.

  • 생성된 출력은 단자 일치, 이스케이프, 그리고 업스트림이 강제로 설정하는 플래그 비트를 기준으로 검사됩니다.

  • 실시간 검증: 생성된 회로는 실제 시뮬레이터에 로드되고 노드 전압을 다시 읽습니다. 이것이 다중 핀 기하 구조가 검증된 방식입니다 — 연산 증폭기 팔로워는 실제로 추종해야 하고, 트랜지스터는 Ic/Ib = β인 순방향 활성을 보고해야 합니다.

npm run reference:fetch   # clone upstream (not vendored; see docs/LICENSING.md)
npm test

테스트 스위트는 네트워크 요청을 하지 않습니다.

라이선스

circuitsnap은 MIT입니다. CircuitJS1은 Paul Falstad와 Iain Sharp가 만든 GPL-2.0-or-later이며, 여기에 번들되거나 수정되지 않았습니다 — circuitsnap은 그 형식의 파일을 생성하고 그 URL을 엽니다. 전체 근거는 docs/LICENSING.md를 참조하세요. 여기에는 이 프로젝트가 falstad.com의 AI 크롤러 신호를 처리하는 방법도 포함됩니다(요약: 크롤링 없음, 스크래핑 없음, 테스트는 완전히 오프라인이며, --base-url을 사용하면 자체 호스팅 복사본을 가리킬 수 있습니다).

CircuitJS1 저자와 제휴하지 않았으며 그들의 보증을 받지 않습니다.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Generates, simulates, and inspects LTspice circuits via MCP tools and resources, providing structured JSON interfaces for AI agents.
    MIT
  • F
    license
    Not graded
    quality
    F
    maintenance
    Provides circuit simulation capabilities via MCP, enabling creation, simulation (DC, AC, transient), and analysis of electronic circuits using PySpice.
    1
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables MCP-compatible agents to generate Qucs circuit schematics, run simulations, and parse results programmatically.
    1
    MIT