ngspice-mcp について
ngspice-mcpは、MCPサーバーを介してAI LLMなどのMCPクライアントにngspiceの回路シミュレーション機能を提供します。ネットリストの読み込み、シミュレーション実行、プロットのベクターデータ取得に対応します。
主な機能
- 01回路とネットリストの読み込み
- 02ngspiceシミュレーションの実行
- 03プロットとベクターの一覧表示
- 04複数形式でのベクターデータ取得
- 05stdout・stderrリソースの参照
活用シーン
- 01回路ネットリストを読み込んでシミュレーション
- 02DC、AC、過渡解析の実行
- 03指定したシミュレーションベクターと区間のデータ取得
MCP 対応
回路の読み込み、シミュレーション、データ取得のMCPツールに加え、stdout、stderr、利用ガイドのリソースを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
ngspice-mcp
標準化されたプロトコルインターフェースを通じて、ngspice の回路シミュレーション機能を利用できる Model Context Protocol(MCP)サーバーです。このサーバーにより、AI 言語モデルは制御された構造的な方法で ngspice とやり取りできます。
機能
- ngspice の共有ライブラリインターフェースとの連携
- 標準化された MCP プロトコルの実装
- 構造化データにアクセスできる同期処理
- 包括的な出力の取得とリダイレクト
- 複数の表現形式に対応したベクターデータの処理
- サーバーモードとライブラリモードの両方をサポート
- テストスイートを内蔵
必要条件
- D コンパイラー(DMD/LDC)
- ngspice 共有ライブラリ
- MCP サーバーライブラリ(d-mcp-server)
- D ビルドシステム(dub)
インストール
- システム要件がインストールされていることを確認します
- リポジトリをクローンします
- dub を使用してビルドします。
dub build --config=server
使い方
サーバーは次のコマンドで起動できます。
./ngspice-mcp [options]
コマンドラインオプション
--working-dir、-d:回路ファイルの作業ディレクトリを設定します(デフォルト:現在のディレクトリ)
利用可能なツール
回路の読み込み
loadCircuit:回路ネットリストを直接読み込みますloadNetlistFromFile:ファイルからネットリストを読み込みます
ネットリストの例:
RC Circuit
R1 in out 1k
C1 out 0 1u
.end
シミュレーション
runSimulation:シミュレーションコマンドを実行します
よく使用するコマンド:
op:DC 動作点dc source start stop stepac dec points fstart fendtran step tstop
データアクセス
getPlotNames:利用可能なシミュレーションプロットを一覧表示しますgetVectorNames:特定のプロット内のベクトルを一覧表示しますgetVectorData:次のオプションを指定してベクターデータを取得します。- 振幅・位相表現
- 直交座標(実数・虚数)表現
- 両方の表現
- 任意の間隔選択
リソース
stdout://:ngspice の標準出力ストリームstderr://:ngspice のエラー出力ストリームusage://:包括的な使い方ガイド
開発
プロジェクト構成
ngspice-mcp/
├── source/
│ ├── app.d # Main application
│ ├── bindings/ # ngspice C API bindings
│ ├── database/ # SQLite database handling
│ ├── parser/ # Netlist parsing
│ └── server/ # MCP server implementation
├── resources/ # Resource files
└── bin/ # Build outputs
ビルド設定
- サーバーモード
dub build --config=server
- ライブラリモード
dub build --config=library
- ユニットテスト
dub test --config=unittest
テスト
テストスイートを実行します。
dub test
テストでは、次の項目を確認します。
- ngspice バインディング
- サーバー機能
- ツールの検証
- リソースの処理
- エラーケース
技術詳細
アーキテクチャ
サーバーは、次の主要コンポーネントを実装しています。
-
NgspiceServer:サーバーの中核となる実装
- ツールの登録と処理
- リソース管理
- 出力ストリームの取得
- ベクターデータの処理
-
出力システム
- 標準出力/標準エラー出力の取得
- ストリームのバッファリング
- リソース通知
-
ベクトル処理
- 複素数の処理
- 科学的記数法でのフォーマット
- 間隔選択
- 複数の表現形式
データベースシステム
- モデルパラメーターの保存
- 効率的なインデックス作成とクエリ
- トランザクションのサポート
- 同時アクセスの処理
ライセンス
MIT License。詳細は dub.json を参照してください。
Copyright © 2024, Garret Noble
貢献
貢献を歓迎します。次の点を確認してください。
- コードがプロジェクトのスタイルと標準に準拠していること
- 新機能にはテストが含まれていること
- 必要に応じてドキュメントが更新されていること
- コミットメッセージが明確で説明的であること
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。