ASTM LIS Analyzer Receiver について
臨床・検査用分析装置向けの受信専用 LIS MCP サーバーです。ASTM E1381/E1394 で結果を受信・解析し、研究や検査室運用での照会に使えます。臨床用途には使用できず、分析装置の実機では未検証です。
主な機能
- 01ASTM フレームの受信と検証
- 02分析装置の結果レコード解析
- 03検体・患者・検査による絞り込み
- 04結果詳細と異常フラグの確認
- 05患者情報の一部を既定でマスキング
活用シーン
- 01最近受信した検体結果の確認
- 02フラグ付き検査結果の検索と確認
- 03指定期間の検査データの集計
- 04通信状態とフレームエラーの確認
MCP 対応
MCP クライアントに、受信メッセージの確認、結果照会、接続状態の確認ツールを提供します。結果の受信とリンク層 ACK/NAK の応答のみを行い、オーダーのダウンロードやホストクエリへの応答は行いません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx labmcp-astm-lisLABMCP_ADDRESSInstrument address, e.g. serial:///dev/ttyUSB0 or tcp://192.168.1.50:5025LABMCP_SIMULATESet to 1 to use the built-in simulator (no hardware)LABMCP_READ_ONLYSet to 1 to disable all state-changing toolsLABMCP_LIMITSSafety limit overrides, e.g. max_temperature_c=80ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
8掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
ASTM LIS アナライザー受信機 — MCP サーバー
AI エージェントが、標準の ASTM E1381 / E1394 ホストインターフェース(CLSI LIS1-A / LIS2-A2)を介して結果をアップロードする臨床・検査用アナライザー(血液学、生化学、免疫測定、尿検査、凝固)の結果を収集し、検索できるようにします。このサーバーは小規模な受信専用の LIS エンドポイントとして動作します。アナライザーのフレームを確認応答し、チェックサムを検証し、メッセージを再構成したうえで、エージェントが検体、患者、検査項目または時刻で結果を検索できるようにします。
警告
研究および検査室運用でのみ使用してください。これは医療機器ではなく、検証済みの臨床検査情報システムでもありません。 患者結果の報告、確定、解釈、診断、または臨床上の意思決定には使用しないでください。結果は誤読する可能性のある AI エージェントを経由します。必ず、検査室で検証済みの LIS/ミドルウェアおよび確定プロセスに従ってください。患者データは個人の健康情報です。患者名、生年月日、住所、電話番号はデフォルトで伏せられます。この設定を変更する前に、所属機関のプライバシー規則に従ってください。
| パッケージ | labmcp-astm-lis |
| 機器 | ASTM E1381/E1394(CLSI LIS1-A/LIS2-A2)による結果アップロードを指定するホストインターフェースマニュアルを備えたアナライザー。例:Sysmex、Roche(cobas)、Abbott、Beckman Coulter、Mindray などのモデル。お使いのモデルのホストインターフェースマニュアルを確認してください。 |
| インターフェース | RS-232(serial://)、アナライザーがサーバーとなる TCP/IP(tcp://analyzer:port)、アナライザーがクライアントとなる TCP/IP(--option listen_port=5000) |
| プロトコル | ASTM E1381 低レベルプロトコル(ENQ/ACK/NAK/EOT、モジュロ 8 のフレーム番号とチェックサムを使用するフレーム化テキスト)+ ASTM E1394 レコード H、P、O、R、C、Q、L。Beckman Coulter UniCel DxI / Access 2 LIS Vendor Information, C03112-AF(第 2~4 章)に基づいて実装されています。ASTM/CLSI 規格自体は購入が必要です。受信専用。 |
| ステータス | 🧪 シミュレーション済み:ワイヤーレベルのアナライザーシミュレーターおよび TCP ループバックでテスト済みですが、アナライザーでの検証はまだ行っていません。ハードウェアテストを報告 |
ハードウェアなしで試す
uvx labmcp-astm-lis --simulate --check
シミュレートされたアナライザーは起動直後に 2 つのメッセージをアップロードします。1 つは 5 分類の白血球分画を含む CBC(H/L フラグと疑いフラグのコメント、2 フレームが必要な長さのレコード、さらに回線上で破損して NAK 応答後に再送されるフレームを含む)で、もう 1 つは化学検査パネル(溶血に関するコメント付きの高血糖および高カリウム)です。データ内の患者情報はすべて架空です。
分析装置を接続する
分析装置で、ホスト/LIS/「オンライン」通信の設定を開きます。
- プロトコル: ASTM を選択します(ASTM E1381/E1394、LIS1-A/LIS2-A2、CLSI、または「ASTM host」と呼ばれる場合があります)。TCP/IP 接続時も、ASTM の低レベルプロトコル(ENQ/STX フレーミング)を有効にしておきます。
- 結果: 結果の自動アップロードを有効にします。
- クエリとオーダー: このサーバーはホストクエリへの応答やオーダーのダウンロードを行いません。「host query」/「order request」/双方向モードを無効にしてください。そうしないと、分析装置はサンプルを実行する前に応答を待ち、タイムアウトします。
- 接続: 次のいずれかを選択します。
- RS-232: ボーレート(一般的には 9600)、データビット 8、パリティなし、ストップビット 1(E1381 で固定)を確認し、ヌルモデムケーブルを使用します。
uvx labmcp-astm-lis --address /dev/ttyUSB0 --check # Linux uvx labmcp-astm-lis --address serial://COM3?baudrate=19200 --check # Windows, non-default baud - TCP、分析装置がサーバーの場合(ポートをリッスンします):LIS から接続します。
uvx labmcp-astm-lis --address tcp://192.168.1.80:5000 --check - TCP、分析装置がクライアントの場合(分析装置でホストの IP/ポートを入力します):このサーバーがリッスンします。コンピューターのファイアウォールでポートを許可し、
allow_fromで送信元を制限します。uvx labmcp-astm-lis --option listen_port=5000 --option allow_from=192.168.1.80 --check
- RS-232: ボーレート(一般的には 9600)、データビット 8、パリティなし、ストップビット 1(E1381 で固定)を確認し、ヌルモデムケーブルを使用します。
- 任意:
--option store_path=~/lis/results.jsonlを指定すると、すべてのメッセージをローカルに記録できます(サーバーの再起動時には、最新のmax_messages件が再読み込みされます。ファイルに書き込めない場合も、メッセージはメモリに保持され、get_connection_statusにstore_write_errorsが報告されます)。
MCP サーバーの起動と同時に受信機が起動するため、エージェントがツールを呼び出す前でもアップロードは確認応答されます。分析装置は ACK を受け取った結果を再送しないため、受信した結果は reconnect 後もメモリに保持されます(clear_results を実行するか、store_path を指定せずにサーバーを再起動した場合にのみ削除されます)。
MCP クライアントに追加する
Claude Code
claude mcp add analyzer -- uvx labmcp-astm-lis --option listen_port=5000 --option store_path=~/lis/results.jsonl
Claude Desktop / Cursor / Windsurf(claude_desktop_config.json、.cursor/mcp.json、…)
{
"mcpServers": {
"analyzer": {
"command": "uvx",
"args": ["labmcp-astm-lis", "--address", "/dev/ttyUSB0"]
}
}
}
--read-only を追加すると、clear_results が非表示になります。他のクライアントの場合は、uvx labmcp config astm-lis --address /dev/ttyUSB0 --client vscode で設定スニペットを生成します(cursor、codex、claude-code も指定できます)。
ツール
| ツール | 種類 | 説明 |
|---|---|---|
clear_results | 🎛 制御 | このサーバーのメモリから、受信したすべてのメッセージと結果を削除します(例:実行ごとの区切り)。 |
get_command_log | 👁 読み取り | 装置に送信した最新の未加工コマンドと、装置から受信した応答を返します(新しいものが最後)。デバッグや実行内容の記録に便利です。 |
get_connection_info | 👁 読み取り | 接続されている装置(識別情報、アドレス、シミュレーションか実機か)、サーバーが読み取り専用かどうか、および有効な安全制限を報告します。最初に呼び出してください。 |
get_connection_status | 👁 読み取り | 分析装置との接続状態、受信したメッセージと結果、およびリンク層のエラーカウンターを報告します。 |
get_result_detail | 👁 読み取り | 1 件の結果について、コメント、オーダーと患者のコンテキスト、未加工レコード、メッセージヘッダーとともに、デコードされたすべてのフィールドを表示します。 |
get_results | 👁 読み取り | サンプル ID、患者 ID、検査コード、受信時刻、または異常フラグで絞り込んだ受信結果を返します(新しいものが最後)。 |
list_received_messages | 👁 読み取り | 受信した最新の ASTM メッセージを一覧表示します(新しいものが最後)。 |
reconnect | 🛑 安全 | 装置との接続を閉じて再度開きます(例:装置の電源を入れ直した後や、ケーブルを差し直した後)。 |
get_connection_info、get_command_log、reconnect は、すべての LabMCP サーバーに組み込まれています。
安全上の制限
このサーバーは受信専用で、分析装置にコマンドを送ることはありません(ACK/NAK で応答するだけです)。そのため、物理的な安全上の制限はありません。プライバシー設定:
| オプション | デフォルト | 意味 |
|---|---|---|
redact_patient_info | true | 保存、ログ記録、store_path への書き込み、またはツールによる返却の前に、P レコードのフィールド 6(患者名)、7(母親の旧姓)、8(生年月日)、11(住所)、13(電話番号)を REDACTED に置き換えます |
allow_from | (すべて) | リッスンモードでは、これらの IP アドレス(; またはスペース区切り)からの接続のみを受け入れます |
max_messages | 5000 | メモリに保持するメッセージ数です。古いものから順に破棄されます |
患者 ID、性別、担当医師、フリーテキストのコメントレコードはマスキングされません(結果の絞り込みには ID が必要です)。分析装置がコメントに個人を特定できるテキストを含める場合は、出力を適切に取り扱ってください。
プロンプトの例
- 「過去 1 時間に血液分析装置から結果が届いていますか?検体を一覧表示してください。」
- 「検体 S26-000123 のフラグ付き結果をすべて、単位、基準範囲、分析装置のコメントとともに表示してください。」
- 「今日のカリウムの結果を、検体 ID、値、フラグの表にエクスポートしてください。」
- 「分析装置との接続は正常ですか?今日は何件のフレームが NAK されましたか?その理由も教えてください。」
- 「検体 S26-000124 と S26-000131 のグルコースの結果を比較してください。」
- 「次の検証を開始する前に、保存済みの結果を消去してください。」
注意事項
- 受信専用です。 注文のダウンロード、ホストへのクエリ応答、リンクレベルの ACK 以外の結果確認応答には対応していません。アナライザーからのクエリ(Q)メッセージは保存され、報告されます(
kind: "query")が、応答は返しません。注文のダウンロードは今後の対応予定です。 - リンク層(E1381)。 すべてのフレームについて、チェックサム(フレーム番号から ETX/ETB までの合計の 256 を法とする値を、2 桁の 16 進数で表したもの)、フレーム番号(最初のフレームは 1、その後は 8 を法として増加。直前に受け入れた番号と同じ番号は再送として扱われ、データを重複させずに ACK を返します)、およびフレーミングを検査します。不正なフレームには NAK を返し、アナライザーが再送します。ENQ … EOT セッション外のフレームは無視され、
bytes_ignoredにカウントされます。これは通常、アナライザーが ASTM 低レベルプロトコルを使用していないことを意味します(フレーミングなしの生の E1394 はサポートされていません)。セッションが 30 秒間無通信になるか、ENQ で再開された場合、E1381 の要件に従い、不完全なメッセージは破棄されます。EOT で終わっていても終端の(L)レコードがないメッセージは保持され、complete: falseのフラグが付けられます。 - 許容範囲。 テキスト文字数が 240 文字を超えるフレーム、および複数のレコードをまとめた終端フレームも受け入れられます(カウントされます)。CR LF が届かないフレームには、10 秒後に NAK を返します。テキストはデフォルトで Latin-1 としてデコードされます(
--option encoding=...。不明なエンコーディング名は起動時に拒否されます)。 - レコード(E1394)。 区切り文字は各ヘッダーレコードから取得します(デフォルトは
H|\^&)。エスケープシーケンス&F& &S& &R& &E&とベンダー形式の&|&はデコードされ、それ以外のエスケープはそのまま保持されます。検査コードには、Universal Test ID の空でない最初の「ローカルコード」要素(^^^TSH、^^^^WBC)を使用し、該当する要素がない場合は最初の要素を使用します。検体 ID には、注文の Specimen ID を使用するか、空でない最初の Instrument Specimen ID 要素を使用します。値は送信されたとおりに返されます("<0.1"、">500"、"Cancelled")。numeric_valueが設定されるのは、通常の数値の場合のみです。 - フラグとステータスは送信されたとおりに渡されます。意味が付与されるのは、LIS2-A2 / E1394 で定義されている異常フラグ(
N L H LL HH < > A U D B W)と、使用するベンダー仕様に記載されている結果ステータス(F X)のみです。それ以外はアナライザー固有のため、アナライザーのホストインターフェースマニュアルを確認してください。 - レコード内のタイムスタンプ(検査の開始/完了時刻、ヘッダー時刻)はアナライザーの現地時刻です。
received_atは、このサーバーがメッセージを保存した時刻(UTC)です。 - リッスンモードでは、ポートごとに 1 台のアナライザーを処理します。新しい接続は以前の接続に置き換わります(アナライザーは再起動後、古いソケットを閉じずに再接続することがよくあります)。アナライザーごとにサーバーエントリ(またはポート)を 1 つ実行してください。TLS はありません。ポートはラボのネットワーク内に限定し、
allow_fromを使用してください。 - シミュレーターおよびループバック TCP に対してのみテスト済みです。ベンダー間では ASTM 方言に違いがあることがよくあります。お使いのアナライザーで動作すること、または動作しないことをご報告ください。
ハードウェア検証
| モデル | ファームウェア | インターフェース | 検証者 | 日付 |
|---|---|---|---|---|
| まだありません:最初の検証者になる |
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。