mcpField
U
uniwire

uniwire

リモート
uniwire.sh科学・教育4今日更新
リポジトリ公式サイト

uniwire について

uniwireは、電気設備をデータで記述するオープン形式とPythonライブラリで、規則の検証や単線図・複線図の生成を行います。差分を確認しやすい設計を必要とする電気設計者向けに、コマンドライン、Python、Webビューアー、アシスタント用ツールを備えています。

主な機能

  1. 01JSONまたはPythonで設備を記述
  2. 02スキーマと電気規則の検証
  3. 03単線図と複線図の生成
  4. 04SVG、PDF、部品表、配線表の出力
  5. 05NF C 15-100やIEC 60364などの規則プロファイル
  6. 06安定したIDによるモデル編集

活用シーン

  1. 01選択した規則に基づく設備の確認
  2. 02テキスト記述から電気図面を生成
  3. 03部品表や配線スケジュールの作成
  4. 04テキスト差分による設計変更の確認

MCP 対応

stdioのMCPサーバー`uniwire-mcp`とホスト型MCPエンドポイントを備えています。アシスタント用ツールでは、モデルのリファレンスカードや概要の生成、ID指定の編集も行えます。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://mcp.uniwire.sh/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

14
パラメーター型必須説明
langstringいいえ
levelstringいいえ

詳細

uniwire

電気図面をコードで。

電気設備を記述するオープン標準と、設備の検証、ルールとの照合、単線結線図および複線結線図の作成を行うリファレンス Python ライブラリです。

CI PyPI Python License: Apache-2.0

*.uniwire.json ファイルまたは Python で設備(電源、保護装置、ケーブル、負荷、PLC)を記述すると、uniwire が図面を作成します。座標も CAD ファイルも不要です。テキストファイルなので、内容を確認して差分を比較できます。

  • フォーマット:*.uniwire.json、フォーマット 1.0。仕様で定義され、公開済みの JSON Schema で検証されます:https://uniwire.sh/schema/v1/uniwire.schema.json。
  • ライブラリ:pip install uniwire:Python API、コードファーストのビルダー、uniwire コマンドライン。
  • ドキュメント:https://uniwire.sh/docs/
  • Web ビューアー:https://uniwire.sh/viewer/。ドキュメントを貼り付けると、ブラウザー上で検証、ルールチェック、図面作成ができます。

特長

  • 単線図と複線図を同じドキュメントから作成できます。複線図では、単線図のデータから各導体(L1、L2、L3、N、PE、PEN)が導出されるため、追加の入力は不要です。
  • 53種類のノードタイプ:電力網、変圧器、発電機、UPS、PV、バッテリー、インバーター、遮断器、RCD、RCBO、ヒューズ、断路器、接触器、モータースターター、切替スイッチ、SPD、保護リレー、計器用変成器、絶縁監視装置、母線、分電盤、端子台、照明、コンセント、暖房、モーター、EV充電器、モジュラーPLCなど。
  • ツリーとリンク:電力ツリーが基盤となり、切替、母線連結、引込、接地、制御、インターロック、トリップ、計測、データバスはリンクとして表します。端子/接続ノードのグラフが自動的に導出され、CIM、IFC、IEC 61850 SCLのマッピングにも対応します。
  • 型を厳密に定めたフィールドと単位接尾辞付きフィールド:in_A、idn_mA、section_mm2、p_kW。未知のフィールドはエラーになります(in_Aの代わりにcalibreを指定すると検出されます)。拡張項目はextに記述します。テンプレートではデバイスを一度だけ宣言します。
  • ルールプロファイル:core(常に適用)、nfc15100(フランスの住宅)、iec60364(ケーブルの電流容量)、enedis(フランスの公共電力網への接続)に加え、PLCの整合性チェックにも対応します。
  • 部品表:任意のノードまたはPLCモジュールに構造化されたproduct参照(メーカー、品番、シリーズ、アクセサリー)を設定でき、CSVに集約できます(uniwire bom)。
  • 電線とケーブルのマーキング:ビューごとのマーキングルール(手動、連番、電位別、パターン)、複線図上のマーク表示、CSV出力に対応します。電線リスト(uniwire wires)、電線マーカーリスト(uniwire markers)、ケーブル一覧(uniwire cables)を出力でき、uniwire marks --writeでマークを固定できます。
  • 色のモード:導体をIEC 60445または北米の色で表示するほか、相、電源、状態、電圧レベルごとに色分けできます。
  • 図面シート:用紙サイズ、サブツリー表示、自動シート分割と相互参照、回路一覧、盤枠、タイトルブロック、改訂履歴、注記に対応します。SVG出力は決定的で差分を確認しやすく、複数シートのPDFではシート間のリンクをクリックできます。
  • 英語とフランス語のレンダリングに対応し、各ドキュメントのmeta.langで選択できます。
  • LLM向けツール:モデルから生成するリファレンスカード(uniwire card)、安定したID付きのテキスト概要(uniwire describe)、IDベースの編集(uniwire patch)、MCP サーバー(uniwire-mcp、stdio)、ホスト型MCPエンドポイント(https://mcp.uniwire.sh/mcp)に対応します。また、アシスタント向けのllms.txt(リファレンスカード全文を含む)も利用できます。ChatGPT、Claude、Cursor、VS Codeのセットアップ方法: アシスタントでのuniwireの使用。詳細はLLM向けツールをご覧ください。

ギャラリー

フランスの住宅、TT方式、単線結線図
フランスの住宅、TT方式(NF C 15-100)、単線結線図
ドイツの住宅、TN-C-S方式、導体の色分けによる複線結線図
ドイツの住宅、TN-C-S方式、導体の色分けによる複線結線図
オフィスビルの主低圧配電盤
オフィスビル、主低圧配電盤
中圧/低圧変電所、1000 kVA
中圧/低圧変電所、1000 kVA
非常用発電機、自動切替スイッチ、負荷遮断
非常用発電機、ATS、負荷遮断
モーター制御センター、電線記号付き複線結線図
モーター制御センター、電線記号付き複線結線図

全52件の例はexamples/にあり、 ドキュメントにも一覧が掲載されています。どれでも ウェブビューアーで開けます。

インストール

pip install uniwire                 # validation, rules, SVG rendering, bill of materials, exports
pip install "uniwire[pdf]"          # + PDF output (reportlab)
pip install "uniwire[mcp]"          # + MCP server (uniwire-mcp)
pip install "uniwire[iec81346]"     # + optional IEC 81346-2 class table (separate CC BY-SA 4.0 data package)

Python 3.10以降が必要です。必須の依存関係はpydanticのみです。

クイックスタート

JSON形式のドキュメント:

{
  "$schema": "https://uniwire.sh/schema/v1/uniwire.schema.json",
  "uniwire": "1.0.0",
  "profiles": ["nfc15100"],
  "meta": { "title": "Small house", "lang": "en" },
  "installation": { "earthing": "TT", "system": "1P+N", "un_V": 230 },
  "templates": { "C16": { "type": "breaker", "in_A": 16, "curve": "C" } },
  "sources": [
    { "type": "grid", "label": "Utility", "children": [
      { "type": "main_breaker", "ref": "-Q0", "range_A": "15-45", "in_A": 45, "idn_mA": 500, "selective": true,
        "children": [
          { "type": "rcd", "ref": "-Q1", "in_A": 40, "idn_mA": 30, "rcd_type": "A", "children": [
            { "type": "breaker", "ref": "-Q11", "use": "C16", "cable": { "cores": "3G", "section_mm2": 1.5 },
              "children": [ { "type": "lighting", "label": "Lighting", "points": 6 } ] },
            { "type": "breaker", "ref": "-Q12", "in_A": 20, "curve": "C", "cable": { "cores": "3G", "section_mm2": 2.5 },
              "children": [ { "type": "socket", "label": "Sockets", "points": 8 } ] }
          ] }
      ] }
    ] }
  ]
}

ツリーは電力の流れ(電源、保護装置、負荷)を表します。ツリーの外にあるもの(切替スイッチ、バスバー連結、制御接続、データ接続)はlinksに記述します。

uniwire validate house.uniwire.json                 # schema + integrity
uniwire check house.uniwire.json                    # rule profiles (exit code 1 on errors)
uniwire render house.uniwire.json                   # SVG sheets in out/house/
uniwire render house.uniwire.json -f pdf -o house.pdf
uniwire render house.uniwire.json --kind multi-line # multi-line power diagram
uniwire bom house.uniwire.json -o house.bom.csv     # bill of materials
uniwire wires house.uniwire.json                    # wire list (also: markers, cables, marks)
uniwire card                                        # reference card for assistants

同じ設備をPythonで記述する場合:

from uniwire.build import *

with Installation("Small house", earthing="TT", system="1P+N", un="230 V", profiles=["nfc15100"]) as inst:
    with Grid("Utility"), MainBreaker("-Q0", "15-45 A", idn="500 mA", selective=True):
        with RCD("-Q1", "40 A", "30 mA", type="A"):
            Breaker("-Q11", "C16", cable="3G1,5") >> Lighting("Lighting", points=6)
            Breaker("-Q12", "C20", cable="3G2,5 18 m") >> Socket("Sockets", points=8)

for finding in inst.check():
    print(finding)
inst.save("house.uniwire.json")
inst.render("house.pdf")

withを使うと、その中で作成したすべての要素の親要素になります。>>で要素を連結できます。定格やケーブルは、図面での表記どおりに記述します("C16"、"3G2,5 18 m")。コードファーストAPIとPython APIおよびCLIを参照してください。

ロードマップ

  • 端子、端子台、電線:UEP-0001は、フォーマット2.0の草案です(名前付きポート、オブジェクトとしての端子台・電線・ケーブル、電位)。
  • 制御回路図:名前付きポートを基盤とした、コイル、相互参照付き補助接点、端子図、電線番号。
  • エクスポート:DXF図面、潮流計算および短絡解析用のpandapowerネットワーク。

アイデアやフォーマットの提案を歓迎します。CONTRIBUTING.mdをご覧ください。

貢献

バグ報告、例、ルール、シンボル、翻訳を歓迎します。CONTRIBUTING.md(開発環境のセットアップ、テスト、uniwire Enhancement Proposals)と 行動規範をお読みください。セキュリティ上の問題は非公開で報告してください。詳しくはSECURITY.mdをご覧ください。

ライセンス

  • コード、CLI、JSON Schema:Apache License 2.0。
  • 仕様テキスト:CC BY 4.0: あらゆるソフトウェアで自由に実装できます。
  • オプションのデータパッケージ uniwire-data-iec81346(IEC 81346-2 クラステーブル):CC BY-SA 4.0。別途配布しています (pip install "uniwire[iec81346]")。

第三者に関する通知については、NOTICEをご覧ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。