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 には末尾に6つのパラメータがあり、その順序、単位、フラグビットはシミュレータの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」という名前のラベル付きノードには0Vの基準がなく、ソルバーに基準点がなくなってしまいます。circuitsnapは回路にグラウンドがまったくない場合に警告を出します。

仕組み

パイプラインは netlist -> validate -> lay out -> emit -> URL で、モデルが必要なのは「図面を読む」ステップだけです。知っておく価値のある2つの設計判断があります:

  • ネットは配線ではなく名前付きラベルで接続されます。 95%正しいオートルーターは、見た目は正しくてもシミュレーション結果が間違っている回路を生成します。ピンの隣のラベルは検証可能です。出力は階層回路図のように読めます。

  • XMLではなく従来のテキスト形式を出力します。 現在のアップストリームはXMLを書き出しますが、テキストも読み取れるため、テキストは新旧両方のビルドで読み込める唯一のエンコーディングです。

設計判断の詳細は docs/ARCHITECTURE.md、ファイル形式のリファレンスは docs/FORMAT.md を参照してください。行番号付きでアップストリームのソースから導出されています。

正確性

この形式はリバースエンジニアリングされたものなので、正確性が重要です:

  • アップストリームの372の回路 がパーサーをバイト単位で同一に往復します。

  • 生成された出力 は、端子の一致、エスケープ、アップストリームが強制するフラグビットについてチェックされます。

  • ライブ検証:生成された回路は実際のシミュレータに読み込まれ、ノード電圧が読み戻されます。これがマルチピンジオメトリの検証方法です。オペアンプのフォロワは実際に追従しなければならず、トランジスタは Ic/Ib = β で fwd active を報告しなければなりません。

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を開くだけです。完全な理由(falstad.comのAIクローラーシグナルへの対処方法を含む。要約:クローリングなし、スクレイピングなし、テストは完全にオフライン、--base-url で自己ホストのコピーを指定可能)については docs/LICENSING.md を参照してください。

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