关于 MCP for OpenFilters
这是基于 OpenFilters 计算引擎的 MCP 服务,用于设计、模拟和优化光学薄膜镀层。它面向光学镀层工作流,可运行计算任务并保存详细结果及原生项目文件。
主要功能
- 01薄膜光谱与电场计算
- 02设计评估与优化
- 03热敏感性和公差分析
- 04并行批处理与优化活动
- 05材料查询与导入
- 06原生 .ofp 项目文件
适用场景
- 01设计增透膜和反射镜
- 02比较不同入射角下的镀层性能
- 03按良率排序优化结果
- 04评估温度与制造误差的影响
MCP 相关
向 MCP 客户端提供 OpenFilters 设计、模拟、材料、优化和作业管理工具。结果可保存为原生 `.ofp` 项目文件。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
28收录的工具列表 · 更新于 4 天前
此工具无需参数。
详细介绍
OpenFilters 的 MCP
基于 OpenFilters 构建的非官方连接器:与 OpenFilters 作者或蒙特利尔理工学院无关联,也未获其认可。
通过与 Claude 对话,设计、模拟和优化光学薄膜涂层。
本项目是围绕 OpenFilters(Stéphane Larouche 和 Ludvik Martinu,蒙特利尔理工学院)计算核心构建的 MCP 服务,已移植到 Python 3,并在不启动图形界面的情况下运行。Claude 负责规划工作并读取简明摘要;服务负责计算——利用所有 CPU 核心并行处理——并将完整结果写入磁盘,其中包括可在 OpenFilters 图形界面中打开的 .ofp 项目文件。
Claude 负责协调;服务负责计算。一次工具调用即可启动整个批次。
快速开始
根据你使用 Claude 的方式选择对应选项(详情见安装):
| 使用方式 | 操作 |
|---|---|
| Claude Desktop | 从最新版本下载 mcp-for-openfilters-<version>.mcpb 并打开:Claude Desktop 会安装该扩展。 |
| Claude Code | 运行 claude 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,为 BK7 设计一个 430 至 670 nm 的增透涂层。” 它也已列入官方 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(厚度和折射率误差的 Monte Carlo 良率分析)、simulate_random_errors(OpenFilters 的预生产分析:曲线的均值、标准差和最差情况) |
| 任务 | job_status、get_results、list_jobs、cancel_job — 服务器重启后结果仍会保留 |
| 文件 | load_project、save_project(原生 .ofp) |
向 Claude 提出请求的示例:
- “在 BK7 上设计一款二向色镜,要求在 532 和 1064 nm 处 R > 99%,在 633 nm 处 T > 90%,适用于 0–20°,TiO2/SiO2 层数最多 40 层。以随机初始值运行 100 次 needle 优化,并按厚度误差 ±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 的“Settings” → “Extensions”中)。Claude
Desktop 使用 uv 运行它,并从 PyPI 获取 MCP 服务。
Claude Code 插件
在 Claude Code 中:
/plugin marketplace add BBrunoEsteves/mcp-for-openfilters
/plugin install mcp-for-openfilters@mcp-for-openfilters
该插件使用 uvx 运行 MCP 服务(有关其运行和下载内容,请参阅 claude-plugin/README.md)。
使用 uv(单条命令)
安装 uv 后,MCP 服务会直接从 PyPI 运行,并自动为你的计算机选择合适的软件包:
claude mcp add --scope user mcp-for-openfilters -- uvx mcp-for-openfilters
对于 Claude Desktop,将以下内容添加到 claude_desktop_config.json(“Settings” → “Developer” → “Edit config”),然后完全退出并重新打开 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_WORKERS | CPU 数量 − 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 由原始 OpenFilters 1.1.1 源代码通过 tools/port_from_py2.py 生成;这是一个可审计脚本(机械式 Python 2 → 3 转换、少量针对性修复、包内相对导入)。_abeles C++ 扩展采用 Emil Kleijn 移植的 Python 3 C-API;_moremath 由同一脚本移植。详见 src/openfilters_core/PROVENANCE.md。
隐私
所有内容都在你的计算机上运行:不会向任何地方发送数据,也不会收集遥测数据。唯一的网络访问是在你请求时下载公开的 refractiveindex.info 数据。请参阅 PRIVACY.md。
引用
如果你在已发表的作品中使用了此项目,请引用 OpenFilters:
S. Larouche 和 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,Minho 大学微机电系统中心(CMEMS): [email protected]。
许可证
GPL-2.0-or-later,与 OpenFilters 相同。OpenFilters © Stéphane Larouche;本项目与其作者或蒙特利尔理工学院无关,也未获其认可。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。