mcpField
M
MCP for OpenFilters

MCP for OpenFilters

ローカル
github.com/BBrunoEsteves科学・教育05 日前に更新

MCP for OpenFilters について

OpenFilters の計算エンジンを基に、光学薄膜コーティングの設計、シミュレーション、最適化を行う MCP サーバーです。設計計算や一括処理を実行し、詳細な結果とネイティブ形式のプロジェクトファイルを保存できます。

主な機能

  1. 01薄膜スペクトルと電場の計算
  2. 02設計評価と最適化
  3. 03熱感度と公差の分析
  4. 04並列バッチ・最適化処理
  5. 05材料の検索とインポート
  6. 06ネイティブ .ofp ファイル

活用シーン

  1. 01反射防止膜やミラーの設計
  2. 02入射角ごとの性能比較
  3. 03歩留まりによる最適化結果の順位付け
  4. 04温度や製造誤差の影響評価

MCP 対応

OpenFilters の設計、シミュレーション、材料、最適化、ジョブ管理ツールを MCP クライアントに提供します。結果はネイティブ形式の `.ofp` プロジェクトとして保存できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"bbrunoesteves-mcp-for-openfilters": {
"command": "uvx",
"args": [
"mcp-for-openfilters"
]
}
}
}
起動コマンドuvx mcp-for-openfilters

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypimcp-for-openfilters0.2.2

ツール

28

掲載時のツール一覧 · 4 日前に更新

このツールにパラメーターはありません。

詳細

OpenFilters 用 MCP

OpenFilters をベースに構築された非公式コネクターです。OpenFilters の作者または Polytechnique Montréal との提携や推薦を受けたものではありません。

Claude に話しかけて、光学薄膜コーティングを設計、シミュレーション、最適化できます。

このプロジェクトは、OpenFilters(Stéphane Larouche、Ludvik Martinu、Polytechnique Montréal)の計算コアを Python 3 に移植し、GUI を使わずに実行する MCP サーバーです。Claude が作業を計画して簡潔な概要を読み取り、サーバーが計算を実行します。すべての CPU コアを並列で使用し、OpenFilters の GUI で開ける .ofp プロジェクトファイルを含む完全な結果をディスクに書き込みます。

Claude が指揮し、サーバーが計算します。1 回のツール呼び出しで、一連の処理全体を開始できます。

クイックスタート

Claude の使用方法に合ったものを選んでください(詳細はインストールを参照):

使用環境実行する内容
Claude Desktop最新リリースから mcp-for-openfilters-<version>.mcpb をダウンロードして開きます。Claude Desktop が拡張機能をインストールします。
Claude Codeclaude mcp add --scope user mcp-for-openfilters -- uvx mcp-for-openfilters を実行します(uvが必要です)。または、プラグインを使います:/plugin marketplace add BBrunoEsteves/mcp-for-openfilters、続いて /plugin install mcp-for-openfilters@mcp-for-openfilters
任意の MCP クライアント、または uv を使わない場合uvx mcp-for-openfilters、pip install mcp-for-openfilters(PyPI)、またはリリースページのインストーラーを実行します。インストーラーは Claude Desktop と Claude Code への登録も行います。

その後、新しいチャットで 「MCP for OpenFilters の server_info ツールを実行して」 と入力し、続けて 「TiO2 と SiO2 を使って、430~670 nm の BK7 用反射防止コーティングを設計して」 と試してみてください。また、公式 MCP Registry に io.github.BBrunoEsteves/mcp-for-openfilters として掲載されています。

Claude で構築・テストされています。 このサーバーはオープンな MCP 標準に準拠していますが、これまで Claude(Claude Desktop と Claude Code)のみで開発・テストされています。他の MCP クライアントでも動作する可能性はありますが、テストされていません。その場合、ツールの説明、プロット、長時間実行されるジョブの挙動が異なる可能性があります。

できること

分野ツール
材料list_materials、get_material_index、add_material(定数、Cauchy、Sellmeier、ファイルからの n,k テーブル)、search_refractiveindex + import_refractiveindex_material(必要に応じてダウンロードするrefractiveindex.infoデータベースの約3,500件のエントリーのいずれか)
単一設計describe_design、compute_spectrum(R/T/A、位相、GD、GDD;s/p/無偏光または任意の偏光角;任意の入射角;裏面)、compute_angle_scan、compute_color、compute_electric_field、compute_monitoring_curves(指定波長または分光;裏面)
目標と評価関数evaluate_design、layer_sensitivity
最適化optimize_design — OpenFilters のリファインメント、needle および step メソッド
温度thermal_sensitivity(各材料の屈折率と厚さの変化によるピークの移動;dλ/dT、FWHM あたりのケルビン数、アサーマル dn/dT)、thermal_sweep(温度に対するピーク)— 波長可変フィルターとアサーマルフィルター
キャンペーンrun_batch(パラメーターのスイープ)、run_optimization_campaign(複数の初期値 → 順位付け → オプションの歩留まりステージ)、tolerance_analysis(厚さと屈折率の誤差を考慮したモンテカルロ歩留まり解析)、simulate_random_errors(OpenFilters の Preproduction:曲線の平均、標準偏差、最悪値)
ジョブjob_status、get_results、list_jobs、cancel_job — 結果はサーバーを再起動しても保持されます
ファイルload_project、save_project(ネイティブの .ofp)

Claude へのリクエスト例:

  • 「532 nm と 1064 nm で R > 99 %、633 nm で T > 90 %、0~20°に対応し、TiO2/SiO2 を最大40層使用する BK7 上のダイクロイックを設計してください。ランダムな初期値からニードル最適化を100回実行し、厚さ誤差 ±1 % での歩留まりに基づいて上位10件を順位付けしてください。」
  • 「このエリプソメトリーのファイルから自分の ALD Al2O3 を追加し、AR コーティングの厚さを ±10 % スイープしてください。」
  • 「refractiveindex.info で薄膜 HfO2 のデータを見つけてインポートし、それを使ってミラーを作り直してください。」
  • 「このミラーの 1064 nm における電場ピークはどこですか。また、各層の終端で 633 nm においてどのようなモニタリング信号が予想されますか?」

すぐに使えるワークフロー(プロンプト)は、Claude Code では / コマンドとして、Claude Desktop では添付メニューから利用できます。反射防止コーティングの設計、ミラーの設計、エッジフィルターまたはダイクロイックの設計、狭帯域バンドパスフィルターの設計、製造に向けた設計のレビューがあります。設計フォーマットガイド、材料リスト、OpenFilters のサンプルプロジェクトはリソース(openfilters://guide、openfilters://materials、 openfilters://examples/<name>)として利用できます。時間のかかる最適化や歩留まり解析では、進捗を表示できるアプリに進捗状況を報告します。

インストール

Python ≥ 3.10 が必要です。OpenFilters 自体をインストールする必要はありません。計算エンジンは組み込み済みです(OpenFilters GUI は .ofp ファイルを開く場合にのみ役立ちます)。

Claude Desktop 拡張機能(ワンクリック)

最新リリースから mcp-for-openfilters-<version>.mcpb をダウンロードして開くか、Claude Desktop の「設定」→「拡張機能」にドラッグしてください。Claude Desktop は uv を使って実行し、サーバーを PyPI から取得します。

Claude Code プラグイン

Claude Code で:

/plugin marketplace add BBrunoEsteves/mcp-for-openfilters
/plugin install mcp-for-openfilters@mcp-for-openfilters

プラグインは uvx を使ってサーバーを実行します(実行内容とダウンロード内容については claude-plugin/README.md をご覧ください)。

uv を使う(1つのコマンド)

uv がインストールされていれば、サーバーは PyPI から直接実行され、 お使いのコンピューターに適したパッケージが自動的に選択されます。

claude mcp add --scope user mcp-for-openfilters -- uvx mcp-for-openfilters

Claude Desktop の場合は、claude_desktop_config.json(「設定」→「開発者」→「設定を編集」)に追加し、Claude Desktop を完全に終了してから再度開いてください。

{"mcpServers": {"mcp-for-openfilters": {"command": "uvx", "args": ["mcp-for-openfilters"]}}}

uvx は独自のキャッシュ済み環境を保持します。uvx mcp-for-openfilters@latest を実行すると、新しいバージョンが取得されます。

インストーラーを使う場合

リリースページから install_mcp_for_openfilters.pyとお使いのコンピューター用のパッケージ(またはすべての.whlファイル)をダウンロードして、同じフォルダーに入れてから、次を実行します。

python install_mcp_for_openfilters.py

~/.mcp-for-openfiltersに専用環境を作成してパッケージをインストールし、Claude Desktop(設定をバックアップします)とClaude Codeにサーバーを登録して、セルフテストを実行します。その後、Claude Desktopを完全に終了して再起動してください。--uninstallでアンインストールできます。--from-githubを指定すると、GitHub CLIを使ってパッケージをダウンロードします。

パッケージは、Windows(64ビット)、Linux(x86-64)、macOS(Apple Silicon)およびPython 3.10~3.14向けにビルドされており、コンパイル済みの高速コアが含まれているため、コンパイラーは不要です。

手動でインストールする場合
pip install mcp_for_openfilters-<version>-<python>-<platform>.whl
claude mcp add --scope user mcp-for-openfilters -- mcp-for-openfilters

Claude Desktopの場合は、claude_desktop_config.jsonに追加します(Settings → Developer → Edit config)。

{"mcpServers": {"mcp-for-openfilters": {"command": "<full path to mcp-for-openfilters>"}}}
openfilters-mcp(0.2.0より前)からのアップグレード

バージョン0.2.0までは、このプロジェクトの名称はopenfilters-mcpでした。Claude DesktopとClaude Codeを完全に終了してから、新しいインストーラーを実行してください。古いopenfilters登録と専用環境(~/.openfilters-mcp)が削除され、mcp-for-openfiltersが登録されます。データフォルダー~/OpenFilters-MCPは保持され、引き続き使用されます。また、以前のOPENFILTERS_MCP_*環境変数も引き続き読み込まれます。手動でインストールした場合は、pip uninstall openfilters-mcpを実行し、Claudeの設定にあるopenfiltersエントリーを置き換えてください。

ソースからインストールする場合(開発)
git clone https://github.com/BBrunoEsteves/mcp-for-openfilters
cd mcp-for-openfilters
python -m venv .venv
.venv/Scripts/pip install -e ".[dev]"      # .venv/bin/pip on macOS/Linux
python dev/fetch_compiled.py               # fast C++ core compiled by GitHub Actions (or build it locally)
設定
環境変数デフォルト値説明
MCP_FOR_OPENFILTERS_HOME~/MCP-for-OpenFiltersデータフォルダー:materials/、jobs/、projects/、outputs/
MCP_FOR_OPENFILTERS_WORKERSCPU数 − 1ジョブ用の並列ワーカープロセス数

0.2.0より前の名前(OPENFILTERS_MCP_HOME、OPENFILTERS_MCP_WORKERS)も引き続き使用でき、~/MCP-for-OpenFiltersが存在しない場合は、既存の~/OpenFilters-MCPフォルダーが使用されます。

規約

  • 波長と厚さの単位はnm、角度の単位は度、R/T/Aは割合(0~1)です。
  • 複素屈折率はN = n − ikです(k ≥ 0で吸収)。OpenFiltersおよびMacleodと同じです。
  • 層は基板側から外側に向かって列挙します。
  • 評価関数はOpenFiltersのχ² = Σ ((目標値 − 値)/許容誤差)²です。満たされた不等式目標の寄与はゼロです。

設計例:

{"substrate": "FusedSilica", "incident_medium": "void", "center_wavelength": 550,
 "layers": [{"material": "TiO2", "thickness": 58.6}, {"material": "SiO2", "qwot": 1}]}

または、スタック式を使う場合:{"formula": {"formula": "(HL)^8 H", "materials": {"H": "TiO2", "L": "SiO2"}}}。

n,kテーブルとして指定した材料には、その波長範囲外のデータがありません。その場合の設計フィールド"table_extrapolation"で、"hold"(デフォルト:n,kはデータの最も近い端の値を保持)、"openfilters"(OpenFilters独自の外挿。GUIと同じ)または"refuse"を指定します。データ範囲外で計算された結果には、使用したn,kと、別の選択肢を使った場合の結果が明記されます。選択肢が決まるまで最適化、キャンペーン、歩留まり解析は開始されません(Claudeが確認します)。

目標の例:

{"kind": "R", "from": 1000, "to": 1100, "step": 5, "value": 0.99, "tolerance": 0.005,
 "inequality": ">=", "angle": 0, "polarization": "unpolarized"}

検証

テストスイート(pytest)では、移植したコアを解析解(四分の一波長スタック)および独立した伝達行列法の実装(分散誘電体、吸収金属、0~60°、s偏光/p偏光/無偏光。誤差は1e-9未満)と照合します。また、教科書に載っている閉形式解(四分の一波長反射防止膜と吸収層、Vコートの反射率ゼロ、ブリュースター角、四分の一波長スタックのピーク反射率と阻止帯域幅)も検証します。さらに、各サンプルプロジェクトを.ofpファイルに保存・復元し、OpenFiltersのサンプルにあるリファインメント最適化とニードル最適化を実行します。

移植方法

src/openfilters_coreは、監査可能なスクリプトtools/port_from_py2.pyを使って、OpenFilters 1.1.1の元ソースから生成されます(機械的なPython 2から3への変換、対象を絞った修正の短いリスト、パッケージ相対インポート)。_abeles C++拡張にはEmil KleijnによるPython 3 C-APIへの移植版を使用しています。_moremathは同じスクリプトで移植されています。src/openfilters_core/PROVENANCE.mdを参照してください。

プライバシー

すべての処理はお使いのコンピューター上で実行されます。データが外部に送信されることはなく、テレメトリーもありません。ネットワークにアクセスするのは、必要な場合に公開されている refractiveindex.info のデータをダウンロードするときだけです。詳しくは PRIVACY.mdをご覧ください。

引用

公開する成果物で本プロジェクトを使用する場合は、OpenFilters を次のように引用してください。

S. Larouche and L. Martinu, "OpenFilters: open-source software for the design, optimization, and synthesis of optical filters," Applied Optics 47, C219–C230 (2008).

お問い合わせ

  • バグ報告と機能リクエスト: GitHub Issues (server_info ツールの出力を添えてください)。
  • 共同研究やその他のお問い合わせ: Bruno Esteves、Center for MicroElectroMechanical Systems (CMEMS)、 University of Minho:[email protected]。

ライセンス

OpenFilters と同様に GPL-2.0-or-later です。OpenFilters の著作権は © Stéphane Larouche に帰属します。本プロジェクトは、その作者または Polytechnique Montréal とは提携しておらず、承認も受けていません。

コメント

MCP は初めてですか?

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

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