Docket Lens について
Docket Lens は、規制関連の調査者が意見やガイダンスを確認するための FDA ドケット検索サーバーと分析ワークフローです。資料をキャッシュし、添付ファイルを抽出して、サーバー内でモデルを呼び出さずに草案と最終版を決定論的なテキスト処理で比較します。
主な機能
- 01ドケット記録の検索と取得
- 02コメントの取得と添付テキストの抽出
- 03再開可能なローカルコーパスの構築
- 04草案と最終版をセクション単位で比較
- 05コーパスデータの JSONL 出力
活用シーン
- 01FDA ドケットのコメントと提出者情報を確認する
- 02分析用にコメントと添付資料を収集する
- 03草案と最終版の段落変更を追跡する
MCP 対応
MCP サーバーは、ドケットの検索、文書やコメントの取得、コーパス構築、ガイダンス比較のツールを公開します。ツールはローカルの SQLite キャッシュを使い、キャッシュミス時または更新指定時にネットワークへアクセスします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
regintel-mcp
FDA regulations.gov の規制関連情報:コメントを寄せた人、求めた内容、ガイダンスの草案から最終版までに変更された点。
Black Swan Causal Labs · blackswancausallabs.com
検索は MCP サーバーが担い、判断はスキルが担います。人間はチェックポイントで確認します。
| レイヤー | コンポーネント | ステータス |
|---|---|---|
| データ | regintel-mcp サーバー(このリポジトリ、MIT) | フェーズ 1 を構築済み。 取得、キャッシュ、抽出、差分比較を行います。解釈は行いません。 |
| 手法 | スキル:submitter-taxonomy、comment-theming、draft-final-concordance | 構築済み |
| オーケストレーション | 4 つの人間によるチェックポイントを設けた /docket-analysis <docketId> | 構築済み。FDA-2020-D-2307 で初回実行 |
| 出力 | Docket Lens エクスプローラー(1 つの analysis.json を読み込み、PolyForm Noncommercial) | FDA-2020-D-2307 向けに構築済み |
インストール
Python 3.11 以降が必要です。
git clone https://github.com/Black-Swan-Causal-Labs/regintel-mcp.git
cd regintel-mcp
python3 -m venv .venv && .venv/bin/pip install -e .
cp .env.example .env # then paste your key into .env
API キー: https://open.gsa.gov/api/regulationsgov/ で無料のキーを取得し、.env に REGULATIONS_GOV_API_KEY=... として設定します。.env は gitignore されています。キーは X-Api-Key ヘッダーとしてのみ送信され、ログ、キャッシュ、出力には一切表示されません。1 件の検索であれば DEMO_KEY でも問題ありませんが、コーパス全体の取得にはレート制限が厳しすぎます。個人用キーでは 1 時間あたり 1,000 リクエストが可能です。
MCP クライアントに登録します。 MCP はオープンスタンダードなので、このサーバーは互換性のあるあらゆるアシスタント(Claude、OpenAI Codex など)で動作します。Claude Code の場合は、リポジトリのディレクトリから次を実行します。
claude mcp add regintel-mcp -- "$(pwd)/.venv/bin/python" -m regintel_mcp
Claude プラグインとしてインストールすると、.mcp.json はプラグインのルートからサーバーを起動します。
ツール
すべてのツールは、まずローカルの SQLite キャッシュ(data/cache.sqlite)を読み込みます。ネットワークにアクセスするのは、キャッシュにない場合、または refresh=true を指定して呼び出した場合のみです。
| ツール | 機能 |
|---|---|
search_dockets(query, agency="FDA", docket_type?, limit=25) | ドケットをキーワード検索します |
get_docket(docket_id) | ドケットのメタデータとコメントの総数を取得します |
list_documents(docket_id) | 通知、ガイダンスの草案と最終版、会議資料を、すべてのファイル URL とともに一覧表示します |
list_comments(docket_id, include_withdrawn=false) | すべてのコメントを内部でページ分割して取得します。is_stub、duplicate_of、agency_duplicate_count のフラグを付与します(フラグを付けるだけで、何も除外しません) |
get_comment(comment_id) | 本文、提出者のフィールド、添付ファイル、および抽出した添付ファイルのテキストを取得します |
build_corpus(docket_id, with_attachments=true) | すべてのコメントと添付ファイルをキャッシュに取り込みます。再開可能です。スタブ、重複、OCR の必要性、失敗を報告します |
get_guidance_text(ref) | ガイダンス文書(ドキュメント ID または URL)を番号付きのセクションに分割して取得します |
diff_guidance(draft_ref, final_ref) | セクションを対応付けた草案と最終版の差分を作成します。段落の変更と、移動した段落を検出します |
export_corpus(docket_id) | スキルとサブエージェント向けに output/<docket>/corpus.jsonl を書き出します |
チャット外で長時間の取得を行う場合は、次を実行します:.venv/bin/python -m regintel_mcp build-corpus FDA-2020-D-2307。
差分の仕組み: テキストレイヤーは pdfplumber で抽出します。ランニングヘッダー、草案の行番号、脚注、目次を取り除きます。セクションはガイダンス独自のローマ数字、文字、数字の見出しで分割し、まず見出し(親見出しを含むもの)で草案から最終版へ対応付け、次に見出しとテキストの類似度で対応付けます。対応付けられた各セクション内で段落を比較し、別のセクションへ移動した段落にはラベルを付けます。処理はすべて決定論的で、サーバー内でモデル呼び出しは行いません。
稼働中のサービスで検証した API の動作は docs/api-notes.md に記録されています。
Docket Lens(エクスプローラー)
Docket Lens(explorer/template.html)は、1 つの analysis.json を読み込み、3 つの連動したビューを表示する単一ページです。誰が発言したか、何を求めたか(テーマ × 提出者タイプのヒートマップで、開くと逐語的な要望を表示)、何が変わったか(セクションごとのドラフトと最終版の比較、および各要望への判定)を確認できます。ドケットのコピーを作成するには、次を実行します。
.venv/bin/python scripts/build_analysis.py FDA-2020-D-2307
.venv/bin/python scripts/build_explorer.py FDA-2020-D-2307
次に、静的サーバーを使って explorer/FDA-2020-D-2307/index.html を開きます。たとえば、python3 -m http.server --directory explorer/FDA-2020-D-2307 を実行します。エクスプローラーは PolyForm Noncommercial 1.0.0(explorer/LICENSE、explorer/NOTICE)に基づき、別途ライセンスされています。
Docket Lens のデモをホスティングする(Cloudflare Pages、パスワード保護)
sh scripts/build_site.sh FDA-2020-D-2307
cd site && npx wrangler pages deploy public --project-name docket-lens
site/functions/_middleware.js は、analysis.json を含むすべてのリクエストの前に HTTP Basic Auth を設定します。認証情報は Pages のシークレットであり、ファイルには保存されません。npx wrangler pages secret put DEMO_USER --project-name docket-lens を実行し、DEMO_PASS についても同様に設定してください。いずれかのシークレットが設定されていない場合、サイトは何も提供しません(フェイルクローズします)。これはデモ用のゲートであり、機密データのアクセス制御ではありません。
ステータス(2026 年 10 月 3 日)
- 初回の全工程実行:FDA-2020-D-2307(コメント 60 件、要望 1,211 件、チェックポイント 4 件、判定 55 件に対する人手によるスポットチェックの一致率 91%)。出力は
output/FDA-2020-D-2307/、判定はdecisions/にあります。 - 2 番目のドケットでのスモークテスト:FDA-2021-D-0548。検索とドラフト/最終版の比較は変更なしで合格しました。
docs/smoke-test-FDA-2021-D-0548.mdを参照してください。
一致度に関する注意点
このツールが測定するのは、影響ではなく一致度です。 ドラフトから最終版へのガイダンスの変更は、FDA の内部レビュー、ICH M14、その他のガイダンス、および進化する科学的知見によっても生じます。最終版の文面がコメント投稿者の要望した方向に変わっていても、その変更がコメントによって引き起こされたことを示すものではありません。 このプロジェクトのすべての出力には、この注意書きが付されています。
ライセンス
サーバー:MIT(LICENSE を参照)。エクスプローラーのテンプレートは PolyForm Noncommercial 1.0.0 に基づき、別途ライセンスされています。
© 2026 Black Swan Causal Labs · https://blackswancausallabs.com
公式 MCP Registry のパッケージ化
Docket Lens の検索サーバーには、Registry で配布するための MCP バンドルがあります。
Registry のインストールとリリース手順を参照してください。
バンドルには uv、Regulations.gov API キー、および書き込み可能な作業フォルダーが必要です。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。