mcpField
M
Micro-Manager Microscope

Micro-Manager Microscope

ローカル
github.com科学・教育235 週間前に更新

Micro-Manager Microscope について

Micro-Manager で顕微鏡を制御する研究室向けの MCP サーバーです。pymmcore-plus を介して、画像取得、ステージとフォーカスの移動、チャンネル切り替え、自動フォーカスを行い、移動や撮像に制限を適用します。

主な機能

  1. 01画像、Z スタック、タイムラプスの取得
  2. 02XY ステージと Z フォーカスの移動
  3. 03チャンネルと対物レンズの切り替え、露光設定
  4. 04シャッター制御と自動フォーカス
  5. 05移動ステップとソフトリミットによる制限

活用シーン

  1. 01蛍光チャンネルを選んで画像を取得
  2. 02Z スタックを撮影して最も鮮明なスライスを特定
  3. 03タイムラプスを記録して信号の退色を追跡
  4. 04設定範囲内でステージとフォーカスを移動

MCP 対応

MCP サーバーとして、顕微鏡の画像取得、位置移動、チャンネルと対物レンズの設定、露光、シャッター、自動フォーカス操作を MCP クライアントに公開します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"k-dense-ai-labmcp-micro-manager": {
"command": "uvx",
"args": [
"labmcp-micro-manager"
],
"env": {
"LABMCP_ADDRESS": "<LABMCP_ADDRESS>",
"LABMCP_SIMULATE": "<LABMCP_SIMULATE>",
"LABMCP_READ_ONLY": "<LABMCP_READ_ONLY>",
"LABMCP_LIMITS": "<LABMCP_LIMITS>"
}
}
}
}
起動コマンドuvx labmcp-micro-manager
設定が必要な環境変数
LABMCP_ADDRESSInstrument address, e.g. serial:///dev/ttyUSB0 or tcp://192.168.1.50:5025
LABMCP_SIMULATESet to 1 to use the built-in simulator (no hardware)
LABMCP_READ_ONLYSet to 1 to disable all state-changing tools
LABMCP_LIMITSSafety limit overrides, e.g. max_temperature_c=80

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

パッケージ
pypilabmcp-micro-manager0.1.3

ツール

19

掲載時のツール一覧 · 2 週間前に更新

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

詳細

Micro-Manager Microscope — MCP サーバー

AI エージェントが、pymmcore-plus とオープンなデバイスレイヤー(MMCore)を介して、Micro-Manager で制御されるあらゆる顕微鏡で画像の撮影、Z スタックやタイムラプスの取得、設定した範囲内でのステージとフォーカスの移動、チャンネルや対物レンズの切り替え、露光の設定、シャッターの操作、自動フォーカスを実行できるようにします。

パッケージlabmcp-micro-manager
機器Micro-Manager デバイスアダプターを備えたあらゆるハードウェア(Hamamatsu、Photometrics、Andor、PCO、Basler、ASI、Prior、Ludl、Märzhäuser、Nikon、Zeiss、Olympus/Evident、Leica、Lumencor、CoolLED などの数百種類のカメラ、XY/Z ステージ、顕微鏡スタンド、フィルターホイール、シャッター、光源)。Micro-Manager の .cfg ハードウェア構成ファイルで記述します。
インターフェースデバイスアダプターで使用されるもの:USB、シリアル、Camera Link / CoaXPress / GigE フレームグラバー
プロトコルpymmcore-plus CMMCorePlus 経由の Micro-Manager MMCore API(MMCore API リファレンス、pymmcore-plus API、構成ガイド)
ステータス🧪 シミュレーション済み:シミュレーション顕微鏡と、Python テストデバイスを使用した pymmcore-plus の実コアでテスト済みですが、ハードウェアではまだ検証されていません。ハードウェアテストを報告

ハードウェアなしで試す

uvx labmcp-micro-manager --simulate --check

シミュレーターは、512 x 512、12 ビットカメラ、XY ステージ、フォーカス駆動部、シャッター、DAPI / FITC / TRITC / Brightfield フィルターホイール、10x / 20x / 40x ターレット、ハードウェア自動フォーカスを備えた広視野蛍光顕微鏡で、細胞核の視野を観察します。画像は Z 軸に応じてぼけ、露光に応じて明るさが変化し、光量に応じて退色し、4095 で飽和し、ショットノイズと読み出しノイズが加わるため、フォーカス、露光、退色の挙動は実際の顕微鏡と同様です。

顕微鏡を接続する

  1. ハードウェア構成: Micro-Manager の Hardware Configuration Wizard(Micro-Manager アプリ内)で .cfg ファイルを作成してテストします。チャンネル(通常は Channel)と対物レンズ(Objective)の構成グループ、およびピクセルサイズのキャリブレーションを含めます。完了後、Micro-Manager アプリを終了してください。デバイスを開けるプログラムは一度に 1 つだけです。
  2. デバイスアダプター: pymmcore-plus には、pymmcore のビルドに対応するバージョンの Micro-Manager デバイスアダプターライブラリが必要です。pymmcore-plus のインストーラーでダウンロードできます。
    uvx --from labmcp-micro-manager mmcore install     # into pymmcore-plus' data folder
    uvx --from labmcp-micro-manager mmcore list        # show what was found
    
    または、既存の Micro-Manager インストールを --option mm_path=/path/to/Micro-Manager で指定します(デバイスインターフェースが pymmcore と一致するビルドである必要があります。バージョンは mmcore info で確認できます)。ベンダーのカメラ SDK とドライバーは、Micro-Manager 本体と同様に、別途インストールする必要があります。
  3. 接続をテストする:
    uvx labmcp-micro-manager --address ~/scopes/Ti2_Prime95B.cfg --check
    uvx labmcp-micro-manager --address MMConfig_demo.cfg --check      # Micro-Manager demo devices
    
    --check は構成を読み込み、カメラ、ステージ、その他のデバイスの役割を表示します。

MCP クライアントに追加する

Claude Code

claude mcp add microscope -- uvx labmcp-micro-manager --address /path/to/MyScope.cfg --option z_min_um=0 --option z_max_um=4500

Claude Desktop / Cursor / Windsurf(claude_desktop_config.json、.cursor/mcp.json、…)

{
  "mcpServers": {
    "microscope": {
      "command": "uvx",
      "args": ["labmcp-micro-manager", "--address", "/path/to/MyScope.cfg",
               "--option", "z_min_um=0", "--option", "z_max_um=4500",
               "--option", "data_dir=/data/microscope"]
    }
  }
}

--read-only を追加すると、エージェントは画像の取得や機器の移動を行わずに位置と設定を読み取れるようになります(stop_stage と close_shutter は引き続き使用できます)。その他のクライアントでは、uvx labmcp config micro-manager --address /path/to/MyScope.cfg --client vscode を実行して設定用スニペットを生成できます(cursor、codex、claude-code も指定できます)。

ツール

ツール種類説明
acquire_time_lapse⚠️ 危険現在の位置でタイムラプスを取得します。interval_s ごとに画像を撮影し(各時点で複数のチャンネルを撮影することもできます)、複数ページの TIFF を保存して、フレームごとの統計情報と輝度の変化(退色)を報告します。max_frames と max_acquisition_duration_s によって上限が設定されており、stop_stage で中止できます。
acquire_z_stack⚠️ 危険現在のフォーカス位置の周囲で Z スタックを取得します。スライスごとに Z を移動し(各スライスで複数のチャンネルを撮影することもできます)、複数ページの TIFF を保存して、スライスごとの統計情報と最も鮮明なスライスを報告し、Z を開始位置に戻します。各スライスは、開始位置から max_z_step_um 以内かつ Z のソフトリミット内に収まる必要があります。
autofocus⚠️ 危険設定済みのオートフォーカスデバイス(例:ハードウェアのフォーカスロック)を一度実行します。フォーカス駆動部が移動します。結果が Z の移動量またはソフトリミットの範囲外の場合、フォーカスは元の位置に戻され、エラーが発生します。
close_shutter🛑 安全シャッターを閉じて(サンプルへの照明を停止して)、実行中の撮影を中止します。
get_command_log👁 読み取り機器に送信された最新の生コマンドと、機器から受信した応答を返します(新しいものが末尾です)。デバッグや実行内容の記録に役立ちます。
get_connection_info👁 読み取り接続中の機器(識別情報、アドレス、シミュレーションか実機か)、サーバーが読み取り専用かどうか、有効な安全制限を報告します。最初に呼び出してください。
get_exposure👁 読み取りカメラの露光時間をミリ秒単位で返します。
get_position👁 読み取りXY ステージとフォーカス(Z)の位置をマイクロメートル単位で読み取り、Z の値が増加すると対物レンズがどちらに移動するかを返します。
get_system_info👁 読み取り顕微鏡の構成を説明します。読み込まれているデバイス(カメラ、ステージ、シャッター、フィルターホイールなど)、各デバイスの役割、カメラのサイズ/ビット深度/露光時間、ピクセルサイズ、プリセットを含む構成グループ、現在の位置、ソフトリミットを報告します。最初に呼び出してください。
list_config_groups👁 読み取りMicro-Manager の構成グループ(例:Channel、Objective)を、各グループのプリセットおよび現在有効なプリセットとともに一覧表示します。
move_stage_xy⚠️ 危険XY ステージを移動します。max_xy_step_um を超える移動や XY のソフトリミット外への移動は、何も動かす前に拒否されます。対物レンズとコンデンサーがサンプルホルダーに接触しないことを確認してください。
move_z⚠️ 危険フォーカス駆動部(Z)を移動します。対物レンズをサンプルに近づけると、スライドに衝突するおそれがあります。max_z_step_um を超える移動や Z のソフトリミット外への移動は、何も動かす前に拒否されます。
reconnect🛑 安全機器との接続をいったん閉じて再度開きます(例:機器の電源を入れ直した後や、ケーブルを抜き差しした後)。
set_config🎛 制御構成グループのプリセットを適用します(例:チャンネルの切り替え:フィルターキューブ、光源、発光フィルター)。対物レンズ/ターレットのグループはここでは拒否されます。set_objective を使用してください。
set_exposure🎛 制御カメラの露光時間をミリ秒単位で設定します。露光時間を長くすると画像は明るくなりますが、光退色が進みます。カメラが受け付けた露光時間を返します。
set_objective⚠️ 危険対物レンズを切り替えます(レボルバー/ターレットが回転します)。長い対物レンズや液浸対物レンズはサンプルホルダーに接触したり、オイル/水が必要になったりすることがあります。事前にユーザーに確認してください。対物レンズを切り替えるとピクセルサイズも変わります。
set_shutter⚠️ 危険現在のシャッターを開閉し、必要に応じてオートシャッターを切り替えます。シャッターを開くと、閉じるまでサンプルに照明が当たり、退色が進みます。
snap_image🎛 制御現在のチャンネル、露光時間、位置で画像を1枚取得します。露光中はサンプルに照明が当たります。画像全体を TIFF として保存し、要約統計情報(最小値/最大値/平均値、飽和度、鮮明度)と、必要に応じてコントラストを引き伸ばしたプレビューを返します。
stop_stage🛑 安全XY ステージと Z ステージの動きを直ちに停止し、実行中の Z スタックまたはタイムラプスを中止します。
get_connection_info、get_command_log、reconnect は、すべての LabMCP サーバーに組み込まれています。get_command_log は、状態を変更する MMCore の呼び出し(setPosition(1502.0)、setConfig('Channel', 'FITC')、snapImage()、…)をすべて一覧表示します。

安全制限

制限デフォルト意味
max_z_step_um50 µm現在位置からの最大フォーカス移動量(z スタックの最大オフセット、および許可される最大オートフォーカス補正量でもあります)
max_xy_step_um20000 µm1 回の呼び出しでの XY ステージの最大移動量(直線距離)
max_exposure_ms10000 msカメラの最長露光時間
max_frames5001 回の z スタックまたはタイムラプスで取得できる画像の最大数(スライス数またはタイムポイント数 × チャンネル数)
max_acquisition_duration_s3600 sタイムラプスの最長時間(設定値にかかわらず、1 回のツール呼び出しで実行できるのは最大 3600 s です)

起動時に上書きできます。例:--limit max_z_step_um=10 --limit max_frames=2000。

ソフト制限(推奨): ドライバーオプションで設定する、マイクロメートル単位のステージ絶対範囲です。Micro-Manager で安全な限界位置まで移動して(たとえば、対物レンズをカバーガラスのすぐ下にした状態で Z を動かし)、位置を読み取って確認してください。

オプション意味
z_min_um、z_max_um許可されるフォーカス範囲です。対物レンズを試料に近づける側の値は、厳しめに設定してください。
x_min_um、x_max_um、y_min_um、y_max_um許可される XY 範囲です(スライドやプレートホルダーの範囲など)。

すべての Z および XY の移動、z スタックの各スライス、オートフォーカスの各結果は、移動前にステップ制限とソフト制限に照らしてチェックされます(オートフォーカスの結果は移動後にもチェックされ、範囲外の場合は元に戻されます)。

プロンプトの例

  • 「この顕微鏡の構成を教えてください。チャンネルと対物レンズ、および現在の位置を一覧表示してください。」
  • 「FITC に切り替え、カメラの飽和を避けながらレンジのおよそ半分を使う露光時間を見つけてから、画像を撮影して表示してください。」
  • 「オートフォーカスを実行してから、DAPI と FITC で −10 〜 +10 µm の範囲を 1 µm 刻みで z スタック撮影し、最も鮮明なスライスを教えてください。」
  • 「右に 500 µm 移動して DAPI 画像を撮影してください。同じ操作をあと 3 回繰り返して、視野を 4 つ横一列に並べてください。」
  • 「TRITC で 30 s ごとに 20 分間のタイムラプスを記録し、シグナルがどの程度退色したか教えてください。」
  • 「問題が発生しました。ステージを停止してシャッターを閉じてください。」

注意事項

  • 対物レンズが衝突する可能性があります。 フォーカスドライブをサンプルに向けて動かすと、対物レンズがカバーガラスやディッシュに衝突することがあります。get_position / get_system_info は focus_direction(デバイスアダプターの宣言に基づき、Zを増加させると対物レンズがサンプルに近づくかどうか。多くの場合は unknown)を報告します。接続する顕微鏡ごとに z_min_um / z_max_um を設定してください。
  • 対物レンズの変更(set_objective)ではノーズピースが回転するため、危険な操作として扱われます。set_config は、名前が対物レンズやターレットのグループ(Objective、Nosepiece、Turret、Magnification、Lens)に見える設定グループを受け付けません。それ以外のグループはそのまま適用されます。プリセットによってサンプルに近い位置でハードウェアが動く場合は、グループにその旨が分かる名前を付けるか、設定から除外してください。
  • 光の照射。 自動シャッターがオン(デフォルト)の場合、カメラの露光中だけ光路が開きます。set_shutter(open=True) を実行すると、close_shutter が呼び出されるまでサンプルに光が当たり続けます。
  • 画像はTIFFファイル(ピクセルサイズ、Z間隔、フレーム間隔を含むImageJハイパースタック)として save_path、または --option data_dir=...(デフォルトはシステムの一時フォルダー labmcp-micro-manager/)に保存されます。save_path は .tif / .tiff で終わる必要があり、フォルダーを指定することはできません。何かを動かしたり露光したりする前に検証されます。既存のファイルが上書きされることはありません(数値のサフィックスが追加されます)。ツールは統計情報(最小値/最大値/平均値/標準偏差、飽和率、鮮明度スコア)と、コントラストを引き伸ばした小さなPNGプレビューを返します。画像全体は返しません。
  • 撮像(acquire_z_stack、acquire_time_lapse)では、現在のカメラ設定で1枚ずつ画像を撮影します。ハードウェアトリガーによるシーケンスは使用しないため、Micro-ManagerのMDAエンジンより遅くなりますが、すべてのデバイスで同じように動作します。stop_stage または close_shutter を実行するとフレームの合間に撮像を中止します。途中までのデータは保存されます(未完了のスライスまたはタイムポイントは破棄されます)。Zスタックでは、中止されない限りフォーカスが開始位置に戻ります。撮像は1回のツール呼び出しで完了する必要があります。露光時間だけで3600秒を超える撮像は拒否されます。ステージ、フィルター、カメラのオーバーヘッドによって長時間かかる場合は、スライスまたはタイムポイントの合間に停止し、その理由を note で報告します。チャンネルに対物レンズ/ターレットのグループを指定することはできません。
  • オートフォーカスでは、設定済みのオートフォーカスデバイス(fullFocus)を使用します。Micro-Manager Javaアプリのソフトウェアオートフォーカスプラグインは利用できません。
  • pymmcore-plusは実際の設定が読み込まれた場合にのみインポートされるため、--simulate はMicro-Managerのネイティブライブラリなしで動作します。

ハードウェアの検証

顕微鏡/カメラ/ステージMicro-Managerアダプターインターフェース検証者日付
該当なし:最初の検証者になりましょう

コメント

MCP は初めてですか?

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

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