Skip to main content
Glama
nickharris808

physics-lint-mcp

physics-lint-mcp

CI MCP Licence Tests

📖 ドキュメントサイト — ポートフォリオのストーリー、コンセプト、完全なウォークスルー、そしてこれが証明すること(と証明しないこと)のすべて。

あなたのAIエージェントが言葉でごまかせない物理オラクル。

LLMには、物理的に不可能なSパラメータ行列と妥当なものを見分ける方法がない——どちらも単なる数値にすぎないからだ。エージェントに捏造されたモデルを渡せば、それは自信を持って推論し、引用し、その上に構築していく。ループの中で異議を唱えるものは何もない。

これらのMCPツールは、エージェント自身の判断ではなく、線形代数からのグラウンドトゥルースをエージェントに与える。

30秒クイックスタート

git clone https://github.com/nickharris808/physics-lint-mcp.git
cd physics-lint-mcp

pip install git+https://github.com/nickharris808/sparam-lint.git@main \
            git+https://github.com/nickharris808/maxwell-lint.git@main \
            .

2つのチェッカーは別々のパッケージで、それぞれ独自のリポジトリから取得される。サーバーは最後の . である。クライアントに配線する前に、サーバーがstdioで応答することを確認する:

$ printf '%s\n%s\n' \
  '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"smoke","version":"0"}}}' \
  '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' \
  | physics-lint-mcp | tail -1 | python3 -m json.tool | grep '"name"'
                "name": "check_touchstone",
                "name": "self_test",
                "name": "check_screening",
                "name": "pairwise_error",

まだPyPIには未公開。 pip install physics-lint-mcp が公開後の想定インストール方法。それまでは上記の3パッケージコマンドが有効な方法である。

Related MCP server: mcp-openems

設定

Claude Desktop / Cursor / 任意のMCPクライアント:

{
  "mcpServers": {
    "physics-lint": {
      "command": "physics-lint-mcp"
    }
  }
}

すぐ使える mcp.json がパッケージに同梱されている。

ツール

ツール

引数

答えること

check_touchstone

path (文字列, 必須)

この .sNp ファイルは物理的に可能な受動ネットワークか?

check_screening

c_full (配列, 必須), c_iso (配列, 必須) — ともにN×N

この結合行列は多体系スクリーニングの上限を破っているか?

pairwise_error

screening_factor (数値, 必須), k ∈ (0, 1]

このスクリーニング係数でペアワイズ抽出器はどの程度間違っているか?

self_test

なし

チェッカーは依然として判別できるか?

サーバーが tools/list で公開するスキーマがこの表の正式版であり、テストが両者の一致を検証する。

実例: 自分を欺けないエージェント

これが防ぐ失敗は具体的である。エージェントがベンダーの .s2p を渡され、リンクが成立するかどうかを問われ、存在し得ないネットワークを記述する数値について流暢に推論する。ループの中で異議を唱えるものは何もない。なぜならLLMには、不可能なS行列と妥当なものを見分ける方法がないからだ。

サーバーを配線したら、セッションで最初にやる価値があるのは、チェッカーに自分自身を証明させることだ:

あなた: モデルを見る前に、self_test を実行して。

エージェント: (self_test を呼び出す) バッテリーは判別できる——それぞれ1つの法則に違反するように作られた5つのネットワークはすべて拒否された。

次にモデル:

あなた: vendor/lna_stage.s2p をチェックして。

エージェント: (path="vendor/lna_stage.s2p"check_touchstone を呼び出す) このネットワークは受動デバイスとして物理的に実現可能ではない: 受動性とエネルギー保存に失敗している。その値から推論することはしない。

最後の文はエージェントが慎重になっているわけではない——それは結果に含まれる interpretation フィールドが、モデルが読むために書かれたものだからだ。{"passed": false} だけを与えられたエージェントは、しばしば先に進み続ける。

この設計が禁じる2つのことがあり、どちらも見た目以上に重要である: エージェントはモデルを修復できない——すべてのツールが読み取り専用だからだ。そして、失敗をクラッシュと誤認できない——物理的な失敗はトランスポートエラーではなく結果として返ってくるからだ。次の3つのセクションは、これら2つの特性の詳細であり、3つ目は最初にあなたを噛むであろうケースである。

トラブルシューティング

physics-lint-mcp: command not found — コンソールスクリプトがインストールされていない。pip show physics-lint-mcp を確認せよ。存在する場合、環境の bin ディレクトリが PATH にない。これはクライアントが別のシェルでサーバーを起動する場合に一般的である。mcp.json で絶対パスを使用せよ: {"command": "/full/path/to/venv/bin/physics-lint-mcp"}

クライアントがサーバーの起動失敗を表示する — まずクイックスタートのstdioスモークテストを手動で実行せよ。これはクライアントの監視なしの同じコードパスなので、トレースバックが見える。

No module named 'sparam_lint' — 2つのチェッカーは別々のパッケージであり、自動的には取得されない。クイックスタートが示すように、3つすべてをインストールせよ。

ツール呼び出しが isError: true を返し、エージェントが停止する — それは物理的な判定であり、障害ではない。結果には失敗した法則と解釈が含まれる。エージェントは呼び出しを失敗として扱うのではなく、それらを読むべきである。

何も返ってこない — サーバーはstdio上でJSON-RPCを話し、1行に1オブジェクトである。複数のオブジェクトを1行にまとめるクライアント、または末尾の改行なしで書き込むクライアントはハングする。initialize リクエストが最初に来なければならない。

ツールリストが上記の表より短い — 古いビルドを実行している。tools/list は表がテストされているのと同じ定義から生成されるため、1つのバージョン内で両者が食い違うことはない。

エージェントが見るもの

すべての結果には、モデルが読むために書かれた interpretation フィールドが含まれる。エージェントはブール値ではなく散文に基づいて行動するからだ:

{
  "physically_admissible": false,
  "failed_laws": ["passivity", "energy_conservation"],
  "interpretation": "This network is not physically realizable as a passive
    device. Do not use it as a reference and do not reason from its values.
    One legitimate exception: a non-reciprocal device such as a ferrite
    isolator will correctly fail the reciprocity law by design."
}

最後の文が重要である。「相反性に失敗」とだけ言われたエージェントは、完璧に正常なアイソレータを親切に「修正」してしまうだろう。

そしてクリーンな結果では、解釈は判定が意味しないことを述べる:

5つの法則はすべて成立し、ネットワークは物理的に許容される。これは正確であることを意味するものではないことに注意——間違った構造の受動モデルは、ここでのすべての法則を通過する。

すべてのツールは読み取り専用

ここではモデルを書き込んだり、捏造したり、修復したりするものは何もない。失敗しているネットワークを黙ってパッチできるエージェントは、オラクルを持つ目的を無意味にする。したがって、I/Oの不在はテストによって強制される。

物理的な失敗はエラーではなく結果である

法則に失敗するファイルは、トランスポートレベルのエラーではなく、isError: true と完全な判定を含む通常の結果を返す。エージェントは推論するために失敗を見る必要がある。不透明なプロトコルエラーは何も教えてくれない。

エージェントなしで試す

printf '%s\n' \
  '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' \
  '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' | physics-lint-mcp

範囲について、正直に

これらのツールは物理的許容性を検証するものであり、正確性ではない。完全に間違った構造の受動モデルは、すべてのチェックを通過する。これらは下限であり、フィールドソルブや測定に対する検証の代わりではない。

ツールキットの残り

異なる場所で同じ質問に答える8つの成果物: このモデルは物理的に可能か? それぞれが採点者である——モデルが間違っていると教えることはできるが、正しいと教えることはできない。

sparam-lint

Sパラメータモデルは物理的に可能か? 5つの法則 + ネガティブコントロール。

maxwell-lint

結合抽出器が不可能な物理を予測するか? スクリーニング上限 k ≤ 1。

abstain-bench

モデルは黙るべき時を知っているか? 棄権再現率、正確性と決してプールしない。

sparam-conformance

検証済みグラウンドトゥルースを持つ11のラベル付きネットワーク。採点者を採点する。

screening-ceiling

認定された不可能性の結果 + 27の反例。ゼロ依存の検証器。

physics-lint-action

同じチェックをCIで。

physics-lint-mcp ← あなたはここ

AIエージェントが呼び出せる物理オラクル。

ブラウザで試す

3つのチェックすべて、インストール不要、クライアントサイドで実行。

これらのツールはモデルを採点する。構造的に受動的——つまりパラメータが何であれこれらの法則に失敗できない——かつ多体系領域で高速に正確で、較正された棄権とフェイルクローズの署名証明書を備えたモデルを生成することが、商業の中核である: ChipletOS

ライセンス

Apache-2.0。LICENSE を参照。著作権は NOTICE に記載。

これらのツールと並行して書かれた署名証明書と受動的構造合成は、ChipletOS のクローズドコアである。

貢献

ここでの絶対的なルールは1つ: すべてのツールは読み取り専用のままである——失敗しているモデルを黙ってパッチできるエージェントは、オラクルを持つ意味を無意味にするだろう。CONTRIBUTING.md に詳細がある。各兄弟リポジトリは独自のルールを定めており、それらは異なる——それは意図的であり、それぞれが独自の条件で信頼できる理由である。

引用

CITATION.cff は機械可読であり、GitHubはそこから「このリポジトリを引用」ボタンをレンダリングする。

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    PhysBound is a specialized "Physics Linter" for AI that deterministically validates RF and thermodynamic claims against hard physical limits, preventing hallucinations in engineering workflows.
    6
    2
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI-assisted design of antennas and electromagnetic structures using openEMS FDTD simulation, with analytical dimension calculators and full-wave script generation.
    16
    1
    AGPL 3.0
  • A
    license
    C
    quality
    B
    maintenance
    Enables engineers to convert antenna papers/diagrams and natural language specs into auditable, versionable HFSS Python modeling code, with optional simulation and parametric optimization.
    22
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to design RF filters and SMPS-EMC from spec using three MCP servers that drive LTspice, Qucs-S, and scikit-rf, with closed-form synthesis, real-component optimization, and CISPR-aware compliance checking.
    2
    AGPL 3.0