mcpField
A
ASTM LIS Analyzer Receiver

ASTM LIS Analyzer Receiver

ローカル
github.comヘルスケア235 週間前に更新

ASTM LIS Analyzer Receiver について

臨床・検査用分析装置向けの受信専用 LIS MCP サーバーです。ASTM E1381/E1394 で結果を受信・解析し、研究や検査室運用での照会に使えます。臨床用途には使用できず、分析装置の実機では未検証です。

主な機能

  1. 01ASTM フレームの受信と検証
  2. 02分析装置の結果レコード解析
  3. 03検体・患者・検査による絞り込み
  4. 04結果詳細と異常フラグの確認
  5. 05患者情報の一部を既定でマスキング

活用シーン

  1. 01最近受信した検体結果の確認
  2. 02フラグ付き検査結果の検索と確認
  3. 03指定期間の検査データの集計
  4. 04通信状態とフレームエラーの確認

MCP 対応

MCP クライアントに、受信メッセージの確認、結果照会、接続状態の確認ツールを提供します。結果の受信とリンク層 ACK/NAK の応答のみを行い、オーダーのダウンロードやホストクエリへの応答は行いません。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"k-dense-ai-labmcp-astm-lis": {
"command": "uvx",
"args": [
"labmcp-astm-lis"
],
"env": {
"LABMCP_ADDRESS": "<LABMCP_ADDRESS>",
"LABMCP_SIMULATE": "<LABMCP_SIMULATE>",
"LABMCP_READ_ONLY": "<LABMCP_READ_ONLY>",
"LABMCP_LIMITS": "<LABMCP_LIMITS>"
}
}
}
}
起動コマンドuvx labmcp-astm-lis
設定が必要な環境変数
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-astm-lis0.1.3

ツール

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/「オンライン」通信の設定を開きます。

  1. プロトコル: ASTM を選択します(ASTM E1381/E1394、LIS1-A/LIS2-A2、CLSI、または「ASTM host」と呼ばれる場合があります)。TCP/IP 接続時も、ASTM の低レベルプロトコル(ENQ/STX フレーミング)を有効にしておきます。
  2. 結果: 結果の自動アップロードを有効にします。
  3. クエリとオーダー: このサーバーはホストクエリへの応答やオーダーのダウンロードを行いません。「host query」/「order request」/双方向モードを無効にしてください。そうしないと、分析装置はサンプルを実行する前に応答を待ち、タイムアウトします。
  4. 接続: 次のいずれかを選択します。
    • 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
      
  5. 任意:--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_infotrue保存、ログ記録、store_path への書き込み、またはツールによる返却の前に、P レコードのフィールド 6(患者名)、7(母親の旧姓)、8(生年月日)、11(住所)、13(電話番号)を REDACTED に置き換えます
allow_from(すべて)リッスンモードでは、これらの IP アドレス(; またはスペース区切り)からの接続のみを受け入れます
max_messages5000メモリに保持するメッセージ数です。古いものから順に破棄されます

患者 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 方言に違いがあることがよくあります。お使いのアナライザーで動作すること、または動作しないことをご報告ください。

ハードウェア検証

モデルファームウェアインターフェース検証者日付
まだありません:最初の検証者になる

コメント

MCP は初めてですか?

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

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