
Ocean Insight Spectrometer
io.github.K-Dense-AI由 GitHub 帳號 K-Dense-AI 發布v0.1.2更新於 Oct 27, 2026
MCP server for Ocean Insight / Ocean Optics spectrometers (python-seabreeze).
概覽
本機 MCP 伺服器,讓 AI 助理操作 Ocean Insight(Ocean Optics)光譜儀:擷取光譜、調整積分時間,並量測吸光度與透射率。
- 可以做什麼
- 擷取強度光譜,支援多次平均、箱車平滑與校正,並回傳峰值位置、FWHM 與飽和檢查,可選擇另存為新的 CSV 檔案
- 設定或自動調整積分時間,並儲存暗光譜與參考光譜供後續量測使用
- 量測光路中樣品的吸光度與透射率,並提供指定波長處的數值以及極大值或極小值
- 在最近一次光譜中尋找峰值或谷值,並在支援的機型上讀取偵測器溫度或開啟、關閉熱電致冷
- 檢視儀器資訊:列出可見光譜儀、裝置詳情、連線資訊、安全限值與原始指令日誌,斷電重啟後可重新連線
- 適用情境
- 適合實驗室情境:受支援的 Ocean Optics 光譜儀接在同一台電腦上,希望助理引導完成暗光譜、空白與樣品步驟,回報峰值位置或峰寬,或記錄吸光度與透射率量測。也可透過內建模擬器在沒有硬體時先試用流程。
- 執行需求
- 以 Python 套件形式在本機執行(uvx labmcp-ocean-spectrometer),透過 stdio 通訊,僅限桌面端。需要以 USB 連接受支援的光譜儀,首次需用 seabreeze_os_setup 安裝驅動程式或 udev 規則,且不能有其他程式(如 OceanView)占用裝置。選用環境變數:LABMCP_ADDRESS(序號或位址)、LABMCP_LIMITS、LABMCP_READ_ONLY、LABMCP_SIMULATE。未宣告驗證機制。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Ocean Insight Spectrometer,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
Ocean Insight Spectrometer — MCP Server
Let an AI agent acquire spectra, set or auto-tune the integration time, store dark and reference spectra, and measure absorbance and transmittance with peak positions and FWHM on Ocean Insight (Ocean Optics) spectrometers. It works through the open-source python-seabreeze library.
Try it without hardware
The simulator models a USB2000+ (or QE Pro) looking at a tungsten-halogen lamp, a white LED or a Hg-Ar lamp. It includes shot and read noise, dark offset and dark current, electric-dark pixels, detector nonlinearity, saturation, and the stale first spectrum after an integration-time change. In simulation a "virtual user" blocks the beam before store_dark_reference, inserts a blank before store_reference, and inserts a dye sample (absorbance band at 520 nm, 0.8 AU) before measure_absorbance/measure_transmittance. With real hardware your scientist does these steps.
Connect your spectrometer
- Drivers / permissions (once per computer), as documented by python-seabreeze:
- Linux: this installs the udev rules (
/etc/udev/rules.d/10-oceanoptics.rules, needs sudo). Re-plug the spectrometer afterwards. - Windows: this installs the USB driver files. The
pyseabreezebackend also needslibusb-1.0.dll(see the seabreeze README). - macOS: works out of the box.
- Linux: this installs the udev rules (
- Close OceanView (or any other program using the spectrometer). Only one program can open it.
- Test the connection:
--addressis the spectrometer's serial number and is only needed when several are connected (list_spectrometersshows them). The default backend iscseabreeze(compiled libseabreeze); if it can't load, seabreeze falls back to the pure-Pythonpyseabreeze(pyusb).
On connect the server sets the integration time to 10 ms (--option integration_ms=…), clamped to the device range. It has to set it, because seabreeze cannot read the integration time back.
Add to your MCP client
Claude Code
Claude Desktop / Cursor / Windsurf (claude_desktop_config.json, .cursor/mcp.json, …)
Add --read-only to allow acquisitions and absorbance measurements with the present settings while blocking integration-time changes, reference storage and TEC control. For other clients, generate the snippet with uvx labmcp config ocean-spectrometer --client vscode (also cursor, codex, claude-code).
Tools
get_connection_info, get_command_log and reconnect are built into every LabMCP server.
Safety limits
Override at launch: --limit max_integration_time_ms=60000. Whatever the limits say, one acquisition (scans × integration time, plus the spectrum discarded after an integration-time change) must fit in 540 s, the time one tool call may take; auto_integration_time stops early for the same reason and says so.
Example prompts
- "Auto-adjust the integration time on the lamp, then take a 20-scan averaged spectrum and tell me where the peak is and how wide it is."
- "I'm going to measure a Beer–Lambert series. Walk me through dark, blank and each of my five standards, and report the absorbance at 520 nm for each."
- "Here's the Hg-Ar lamp. Find the lines between 400 and 600 nm and tell me how far they are from 404.66, 435.83 and 546.07 nm."
- "Measure the transmittance of this filter from 400 to 700 nm and save it to ~/data/filter_T.csv."
- "Cool the QE Pro to −10 °C and tell me when the detector temperature has settled."
Notes
- Raw counts. Intensities are detector counts, not irradiance. Radiometric calibration is out of scope.
- Saturation is judged on the raw ADC counts of every averaged scan: a pixel is saturated at ≥ 98 % of
max_intensity. Saturated pixels are flagged, and they're excluded from absorbance/transmittance (with boxcar smoothing, so are the pixels within the boxcar half width of them). seabreeze notes that some detectors saturate belowmax_intensity, so keep peaks at 70–85 %. - Corrections.
correct_dark_countssubtracts the mean of the optically masked electric-dark pixels;correct_nonlinearityapplies the EEPROM polynomial. The driver reads raw spectra and applies both corrections with the same formula asseabreeze.spectrometers.Spectrometer.intensities, so saturation can still be detected on raw data. A stored dark (store_dark_reference) is still required for absorbance, because electric-dark correction doesn't remove fixed-pattern dark signal. - Absorbance is A = −log10((S − D)/(R − D)). Pixels where the reference has less than 0.5 % of its peak signal above dark, or where the reference or sample is saturated, are returned as
null. The dark, reference and sample must share integration time, boxcar and corrections; the server enforces this and asks you to re-take references when they differ. - First spectrum after an integration-time change is discarded. It may have been integrated partly with the old setting; the QE Pro manual notes that it returns the most recently completed spectrum.
- Boxcar follows OceanView's convention:
boxcar_half_width= pixels averaged on each side. Peaks are found on the full-resolution spectrum. The returned curve is bin-averaged down tomax_points. - TEC tools use seabreeze's
thermo_electricfeature (enable_tec,set_temperature_setpoint_degrees_celsius,read_temperature_degrees_celsius) and only work when the backend exposes it for your model. In pyseabreeze 2.11 that is only the NIRQuest512. For the QE Pro it depends on libseabreeze (cseabreeze); this is unverified on hardware. The QE Pro manual says the TEC cools only ~15–40 °C below ambient. - Not exposed: shutter and lamp (
light_source/strobe_lamp) control, trigger modes, and irradiance calibration. seabreeze documents these features, but device support isn't specified and several aren't implemented in pyseabreeze, so they could not be verified. - Peaks next to invalid pixels. Invalid (
null) pixels are treated as unknown: a pixel next to one is not reported as a peak, and prominence and FWHM do not extend across them. When invalid pixels lie inside the requested range (for example the centre of a band too strong to measure), absorbance/transmittance results carry a warning. - Dark and reference spectra live in the server's memory and are lost on
reconnector restart. Save data withsave_path: it must end in.csv, missing folders are created, and an existing file is never overwritten (choose a new name). The path is checked before the spectrum is acquired.
Hardware verification
來源:servers/chemistry/ocean-spectrometer/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 分