mcpField
O
Oh Medical Exclusions

Oh Medical Exclusions

リモート
pipeworx.io法務・行政02 週間前に更新
リポジトリ公式サイト

Oh Medical Exclusions について

Oh Medical Exclusionsは、オハイオ州Medicaidの除外・停止リストを照合するMCPサーバーです。識別子の完全一致と氏名による候補検索に対応し、コンプライアンス確認に使える状態情報と集計を提供します。

主な機能

  1. 01氏名・NPI・Provider IDで照合
  2. 02カンマ区切りの識別子に対応
  3. 03除外状態とフラグを返却
  4. 04リストの範囲と日付区間を集計
  5. 05保存済みの州リストを検索

活用シーン

  1. 01Medicaid参加前に事業者を確認
  2. 02NPIまたはODM Provider IDを照合
  3. 03発効日区間ごとの除外件数を集計
  4. 04状態不明の記録を特定

MCP 対応

事業者の照合とリスト範囲の集計をMCPクライアント向けのツールとして公開します。単独のstdio MCPサーバー、またはPipeworxゲートウェイ経由で利用できます。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://gateway.pipeworx.io/oh-medical-exclusions/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

詳細

@pipeworx/oh-medical-exclusions

オハイオ州メディケイド局(ODM)のプロバイダー除外・資格停止リスト 照合 — 氏名、NPI、または ODM プロバイダー ID で、オハイオ州のメディケイドプログラムから除外または資格停止された個人および組織の約 2,122 行のリストと照合します。連邦 HHS OIG LEIE(leie パック)に対応する州レベルのリストであり、ny-omig-exclusions(ニューヨーク)、ca-medical-exclusions(カリフォルニア)、tx-medical-exclusions(テキサス)、fl-medical-exclusions(フロリダ)、pa-medical-exclusions(ペンシルベニア)、ga-medical-exclusions(ジョージア)の姉妹パックです。

Pipeworx の一部です — AI エージェントを 1831 以上の稼働中データソースに接続する MCP ゲートウェイです。これは独立した非公式の統合であり、上流プロバイダーとは提携、推奨、公開のいずれの関係もありません。

ツール

  • oh_medical_check_exclusion(name?, npi?, provider_id?, limit?) — プロバイダーを ODM の除外・資格停止リストと照合します。NPI または Provider ID の一致は識別情報です(どちらも完全一致する識別子であり、 複数の登録に基づいてプロバイダーが除外されている場合は、どちらも 1 行の中でカンマ区切りのリストになっていることがあります)。氏名の一致は、 完全一致であっても候補情報にすぎません。このリストには生年月日が 含まれていないためです。一致結果にはすべて、ODM 独自の status と、 そこから導出された currently_excluded フラグが含まれます。
  • oh_medical_exclusion_coverage() — 個人と組織を合わせた総行数、現在 除外・資格停止中の件数とステータス不明の件数、NPI が記載されている件数、 除外の開始日の最古・最新の日付を返します。リスト全体から、指定範囲内に 開始日がある除外だけを集計するには、year または start_date/end_date を 渡します。

認証

キーは不要です。

データソース

通常の curl では掲載ページが 404 になります — ページが消えたのではなく、UA によるブロックです

2026-10-17 に稼働を確認済みです。ブラウザー風の User-Agent を指定しないリクエストには、オハイオ州の CDN が古い CloudFront 404 フォールバックを返します。同じリクエストでも、ブラウザー風の UA 文字列を指定すると 200 が返ります。これは、「公開データは公開データ」という原則ですでに対象とされている UA 判別の種類であり、ログインウォールでも CAPTCHA でもありません。scripts/bake-index.mjs は引き続き、このパックを正直に識別します(UA 文字列にはパック名と連絡先 URL が含まれています)。この文字列はボットフィルターを通過するためのものであり、ブラウザーになりすますものではありません。.xlsx を実際に配信するアセット CDN にはこの対応は不要です。必要なのは、現在の URL を示すページだけです。

ダウンロードリンクは固定ではありません — ビルドのたびに最新のリンクを解決します

リンク先の .xlsx はオハイオ州のアセット CDN (dam.assets.ohio.gov/raw/upload/medicaid.ohio.gov/...)にあり、ファイル名には公開日が含まれています(例: ExclusionSuspensionList_10_15_2026-3.xlsx)。scripts/bake-index.mjs は 実行のたびに掲載ページから現在のリンクを解決します。これは、 ga-medical-exclusions と scripts/ingest-dmepos.mjs が、それぞれの 不安定な上流ファイル名に対して採用している、「ファイル名を推測せず、 掲載ページから解決する」という方針と同じです。

ライブプロキシではなく、データを事前に組み込む理由

ルートの CLAUDE.md に定められた、このサイズのテーブルに関する規則に従い、 リスト全体(取得時点で 2,122 行)は src/oh-odm-index-data.ts に事前に 組み込まれ、workers/gateway/src/pack-baked-indexes.json に登録され、 デプロイ時に KV へアップロードされ、各呼び出しに args._bakedIndex として 注入されます — 静的なモジュールスコープのインポートは行いません (fleet #2754)。注入がない場合や形式が不正な場合は、単に「見つかりません」 と応答せず、明示的にエラーをスローします — src/index.test.ts を参照してください。

外部の XLSX ライブラリは不要 — 兄弟パックと同じ方針で手作業で実装

ga-medical-exclusions/scripts/bake-index.mjs の純粋な Node.js 製 ZIP リーダーを再利用しています(元は scripts/ingest-dmepos.mjs に由来します。Node.js 組み込みの zlib.inflateRawSync を使い、セントラルディレクトリを手作業で読み取ります。unzip CLI も npm パッケージも不要です)。このワークブックでは、シートを名前で特定する必要があります(「Individuals」は rId2/worksheets/sheet2.xml、「Organizations」は rId3/worksheets/sheet3.xml です。最初のシートは説明文の「Instructions」です)。ワークブックの最初のシートだけでよかった ga-medical-exclusions とは異なります。

2 つのシート、統一された 1 つの行形式

ODM はこのデータを Individuals(取得時点で 1,867 行:名前、生年月日、NPI、Provider ID、Status、Action Date、Date Added、Provider Type)と Organizations(255 行:NPI、組織名、住所、Provider ID、Status、Action Date、Date Added、Provider Type)として公開しています。両方を record_type: 'individual' | 'organization' で識別する、1 つの行形式にまとめています。

日付は Excel シリアル値。ただし 2 行は通常のテキスト

約 2,122 行すべてを直接確認したところ、Action Date と Date Added は、Individuals の 2 行を除いて、すべて型指定のない数値セル(Excel の日付シリアル値)です。この 2 行では、ODM のデータ入力により、セルに文字列 "9/24/2025" がそのまま入力されています。bake-index.mjs は、このファイルではセルの型(文字列か数値か)に基づいて、どちらの形式もデコードします。ga-medical-exclusions の SANCDATE 列とは異なり、ここでは 8 桁の YYYYMMDD との曖昧さはありません。

Action Date と Date Added — どの先行パックにもある同じ落とし穴

直接確認したところ、両方の日付がある行のうち、Individuals では 1,035/1,064 行、Organizations では 123/133 行で、値が異なっています。Action Date は除外/停止の発効日、Date Added は ODM がこの公開ファイルに行を追加した日付です。このパックでは Action Date のみを基準に集計し、Date Added は決して使いません。

NPI、Provider ID、Provider Type はカンマ区切りのリストの場合がある

Individuals の 31 行と Organizations の 11 行では、1 行に複数の NPI が記載されています(1 人/組織が複数の Medicaid 登録で除外されている場合)。例:"1447317433, 1598934424" に、対応する Provider ID の組み合わせ "2744918, 2798898" が記載されています。照合ではカンマで分割して各要素を比較するため、どちらの値を検索しても行が見つかります。

Status には空白、大文字・小文字、誤記の揺れがある

正規の「Excluded」/「Suspended」に加えて、実データには " Excluded"(先頭に空白)、"Excluded "(末尾に空白)、"suspended"(小文字)、誤記の "susepnded" が 1 件、少数の "Terminated"、空欄がいくつかあります。このパックでは、独自の有効/無効分類にあたって空白を削除して小文字に変換します(認識できる Excluded/Suspended の場合のみ currently_excluded: true とし、誤記や「Terminated」も含め、それ以外はすべて currently_excluded: null と status_unknown: true にします)。一方、status のテキストは公開時のまま提供し、空白の削除だけを行い、決して「修正」しません。

自宅住所も生年月日も含めない

Individuals シートには生年月日の列があり、Organizations シートには完全な住所(Address 1/2、City、State、Zip)がありますが、どちらもこのパックには含めていません。このタスクのルールでは、6 つの先行する州別パックと同じフィールドを提供し、それらにない個人識別情報や住所は追加しません。先行パックのいずれも、番地を含む住所や生年月日を提供していません。bake-index.mjs は、読み取り時にこれら 2 列を読み飛ばすためだけに参照します。

照合

npi クエリは、正確に 10 桁の数値である NPI 値のみを照合し、行内のカンマ区切りの各要素をすべて確認します。provider_id クエリは、先頭のゼロを許容して ODM 独自の Provider ID と照合し、同じくすべての要素を確認します。名前クエリは、単語の順序を問わず、大文字・小文字と句読点を区別せずに、組み立てた個人名または組織名と照合します。

アクセス可能性

2026-10-17 に実環境で確認済みです。ブラウザーに近い UA を使うと、一覧ページから最新のダウンロードリンクを取得でき、そのリンクは Excel 2007 以降のファイルを 200 で返します。2 つのシートにまたがるデータ行数は 2,122 行です。

クイックスタート

MCP クライアント(Claude Desktop、Cursor、Windsurf など)に追加します。

{
  "mcpServers": {
    "oh-medical-exclusions": {
      "url": "https://gateway.pipeworx.io/oh-medical-exclusions/mcp"
    }
  }
}
このエンドポイントが実際に提供するもの

https://gateway.pipeworx.io/oh-medical-exclusions/mcp の tools/list は、上の表にあるツールに加えて、共有 Pipeworx メタツール(ask_pipeworx、discover_tools、search_within、remember/recall など、ゲートウェイ全体で利用できるツール群)も返します。そのため、表示されるツール数はこの表より多くなります。現在、単一パックのエンドポイントには、パック固有のツールとともに約 30 個の共有ツールが一覧表示されます。接続の initialize 応答には正確な範囲が記載されており、その日の時点での正式な情報となります。

これは意図的な仕様であり、偶然の多重化ではありません。メタツールを使うと、このパックの対象外の質問にも、カタログ全体を検索する ask_pipeworx 経由で回答できます。MCP サーバーを追加する必要はありません。現在、メタツールなしでパックのエンドポイントをマウントする方法はありません。追加のスキーマによるコンテキスト消費がルーティングの利点を上回る場合は、複数のパックエンドポイントではなく、フルゲートウェイに一度だけ接続してください。

または、フル Pipeworx ゲートウェイに接続すると、このパックだけでなく、すべてのパックのツールが直接一覧表示されます。

{
  "mcpServers": {
    "pipeworx": {
      "url": "https://gateway.pipeworx.io/mcp"
    }
  }
}

どちらの URL でも、同じゲートウェイと 1831 以上のデータソースにアクセスできます。唯一の違いは、どのパックのツールが直接一覧表示されるかです。どちらからでも ask_pipeworx を使ってすべてのツールにアクセスできます。

MCP クライアントがない場合:HTTP で呼び出す

curl -X POST https://gateway.pipeworx.io/v1/tools/oh_medical_check_exclusion \
  -H 'Content-Type: application/json' \
  -d '{"name":"Abdi"}'

最初の呼び出しにアカウントは不要です。ツールの詳細を確認するには、GET https://gateway.pipeworx.io/v1/tools/oh_medical_check_exclusion を実行します。ツールを検索するには、{"query":"..."} を指定して POST https://gateway.pipeworx.io/v1/tools/search_packs を実行します。

スタンドアロン(ゲートウェイアカウント不要)

このパッケージは、ローカルの stdio MCP サーバーとしても実行できます。Pipeworx アカウントやゲートウェイとの往復通信は不要です。

{
  "mcpServers": {
    "oh-medical-exclusions": {
      "command": "npx",
      "args": ["-y", "@pipeworx/mcp-oh-medical-exclusions"]
    }
  }
}

または、起動を確認するために直接実行します。

npx -y @pipeworx/mcp-oh-medical-exclusions

stdin/stdout 経由で MCP 通信を行い、このパックのツールのみに対して initialize/tools/list/tools/call に応答します。上記のゲートウェイ接続で追加される共有メタツールはありません。同じソース、同じツールを利用できますが、ask_pipeworx によるルーティングはありません。

ask_pipeworx の使用

ツールを直接呼び出す代わりに、平易な英語で質問できます。これは上記のパックエンドポイントでも、フルゲートウェイでも利用できます。

ask_pipeworx({ question: "your question about Oh Medical Exclusions data" })

ゲートウェイが適切なツールを選び、引数を自動的に設定します。

詳細

ライセンス

MIT

コメント

MCP は初めてですか?

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

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