
Thorlabs Optical Power Meter
io.github.K-Dense-AI由 GitHub 账号 K-Dense-AI 发布v0.1.2更新于 Oct 24, 2026
MCP server for Thorlabs optical power meters (PM100 family, PM400, PM101, PM5020) over SCPI.
概览
通过 SCPI 控制 Thorlabs 光功率计,让助手读取激光功率、记录稳定性并调整波长、平均次数和量程。
- 可以做什么
- 单次读取光功率,并读取传感器温度与设备、探头信息
- 按时间记录功率序列,给出均值、标准差、RMS、峰峰值稳定度与漂移,可另存为新的 CSV 文件
- 设置校正波长、平均次数与功率量程(自动或固定)
- 对传感器做暗电流归零,并在断电重启后重新连接
- 查看连接信息、当前安全限制与原始 SCPI 命令日志
- 适用场景
- 适用于光学或光子学实验室:台面上有 Thorlabs PM100D、PM100A、PM100USB 或 PM400 功率计时,可让助手取读数、表征激光预热或漂移、测量滤光片透过率。也可用内置模拟器在没有硬件时试用。
- 运行要求
- 以 Python 包(uvx labmcp-thorlabs-pm)通过 stdio 在本机运行。需要经 VISA/USBTMC 访问的 Thorlabs 功率计,并以地址形式提供资源字符串;Windows 需安装 NI-VISA 运行时并用 Thorlabs 驱动切换工具,Linux 需为厂商 0x1313 配置 udev 权限,macOS 需 libusb。可选环境变量 LABMCP_ADDRESS、LABMCP_LIMITS、LABMCP_READ_ONLY、LABMCP_SIMULATE。
安装
在 SourceWeft 中
- 打开 控制台中的 Thorlabs Optical Power Meter,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
Thorlabs Optical Power Meter — MCP Server
Let an AI agent read laser power, log stability and warm-up drift, set the wavelength correction, averaging and range, and dark-zero the sensor on Thorlabs optical power meters through their documented SCPI command set over USB (USBTMC / VISA).
Try it without hardware
The simulator is a PM100D with an S120C photodiode (or S302C thermopile) looking at a 1.234 mW, 632.8 nm HeNe laser. Setting the wrong wavelength on the photodiode gives a proportionally wrong reading, as on the real bench.
Connect your power meter
- Driver. Thorlabs meters enumerate as USB Test & Measurement Class (USBTMC) devices, vendor ID
0x1313.- Windows: the Thorlabs driver (TLPM / Thorlabs VISA) is not visible to PyVISA. Install the free NI-VISA runtime, then switch the meter to the NI-VISA driver with the Thorlabs Driver Switcher (installed with the Thorlabs Optical Power Monitor software), and start the server with
?backend=@ivi(see below). This is the route Thorlabs documents for PyVISA. - Linux: pyvisa-py talks USBTMC directly (installed with this package). Give your user access to the device, e.g.
/etc/udev/rules.d/99-thorlabs-pm.rules: thensudo udevadm control --reload-rulesand re-plug the meter. NI-VISA also works (?backend=@ivi). - macOS: pyvisa-py + libusb (
brew install libusb); NI-VISA is an alternative.
- Windows: the Thorlabs driver (TLPM / Thorlabs VISA) is not visible to PyVISA. Install the free NI-VISA runtime, then switch the meter to the NI-VISA driver with the Thorlabs Driver Switcher (installed with the Thorlabs Optical Power Monitor software), and start the server with
- Find the resource string:
uvx labmcp ports(orpython -m pyvisa info). It looks likeUSB0::0x1313::0x8078::P0012345::INSTR(the product ID depends on the model: PM100D0x8078, PM100USB0x8072). - Test the connection:
For the second input of a PM5020 add
--option channel=2.
Add to your MCP client
Claude Code
Claude Desktop / Cursor / Windsurf (claude_desktop_config.json, .cursor/mcp.json, …)
Add --read-only to allow readings but block wavelength, averaging, range and zero changes. For other clients, generate the snippet with uvx labmcp config thorlabs-pm --address <resource> --client vscode (also cursor, codex, claude-code).
Tools
get_connection_info, get_command_log and reconnect are built into every LabMCP server.
A power meter only measures, so this server has no hazard tools. Your laser is the hazard: wear the right eyewear and never exceed the sensor's rated power or power density.
Safety limits
Override at launch: --limit max_series_duration_s=3600. One call can log at most 3640 s (the tool's timeout minus a margin): longer estimates are refused, and a series that runs slower than estimated stops early and returns what it measured (completed: false). save_path must end in .csv and must not exist yet (an existing file is never overwritten); it is checked before logging starts.
Example prompts
- "Set the meter to 1064 nm and tell me the power after the objective."
- "Log the laser power every 2 s for 10 minutes and report the RMS and peak-to-peak stability. Save the data to ~/data/laser_warmup.csv."
- "I've capped the sensor. Zero it, then I'll remove the cap and you read the power."
- "Measure the transmission of this ND filter: read the power without it, then again after I insert it, and give me the optical density."
- "Is the thermal sensor head still warming up? Read its temperature every minute until it's stable."
Notes
- Wavelength matters. Photodiode responsivity varies by a factor of several across the sensor's range, so a wrong wavelength setting gives a wrong power. The server sends whole nanometres (the PM400/PM101/PM5020 references specify an integer), so 632.8 nm is set as 633 nm. That changes the responsivity by far less than the sensor's calibration uncertainty.
- Units.
MEAS:POW?answers in the meter's configured unit (W or dBm). The driver readsSENS:POW:UNIT?first and always returns watts, so a front-panel unit change can't mislead the agent. - Out of range. The meter answers INFINITY / 9.9E37 when the signal exceeds a manually selected range. The server reports this as an error that suggests auto-ranging.
- Zeroing (
SENS:CORR:COLL:ZERO) runs in the background. The server polls…:ZERO:STAT?, checks the error queue, and returns the zero value (…:ZERO:MAGN?). Zero values are lost when the meter reboots. - Energy (pyroelectric) sensors are recognised but not supported: single-pulse energy measurement needs a trigger/fetch workflow that this server doesn't implement yet.
- Averaging is
SENS:AVER:COUN. One sample takes ~3 ms on the PM100 series and 1 ms on the PM400/PM101/PM5020. The reply timeout scales with the averaging count. - PM101 and PM5020: Thorlabs' command references for these list exactly the commands used here. The PM5020 adds a channel suffix (
SENS2,MEAS2,SYST:SENS2:IDN?), selected with--option channel=2. Neither has been tested yet, and PM5020 LAN/serial connections have not been tried. The PM100D's Windows TLPM DLL driver is not used; this server speaks SCPI only. - The simulator's error replies for out-of-range values (
-222,"Data out of range") use the standard SCPI code. The Thorlabs documents only list-113,"Undefined header"explicitly.
Hardware verification
来源:servers/physics/thorlabs-power-meter/README.md,提交 46545ea
工具
0版本历史
2- v0.1.2最新Sep 27, 2026
- v0.1.0Sep 26, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分