Uspto Patent Trial And Appeal Board Ptab Mcp Server について
USPTO特許審判・不服審判部(PTAB)の記録や文書を調査するMCPサーバーです。構造化検索、応答サイズ制限、複数段階のPDFテキスト抽出、ダウンロード機能を備え、法律調査のワークフローに対応します。
主な機能
- 01PTAB記録の検索
- 02構造化応答のサイズ制限
- 033段階のPDFテキスト抽出
- 04永続的な文書ダウンロードリンク
- 05検索・ダウンロードのインタラクティブ表示
活用シーン
- 01PTAB手続きと当事者の確認
- 02スキャン文書からのテキスト抽出
- 03事件文書のダウンロードと確認
MCP 対応
MCPクライアントにUSPTO PTABの検索・文書ツールを提供し、文書内容の抽出やダウンロードにも対応します。stdioとStreamable HTTPのトランスポートをサポートします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
USPTO PTAB MCP サーバー
USPTO Patent Trial and Appeal Board(PTAB)Open Data Portal API 向けの高性能な Model Context Protocol(MCP)サーバーです。トークンを節約するコンテキスト削減機能、ハイブリッド文書抽出、そして特許ライフサイクル全体の分析を可能にするシームレスな MCP 間連携を備えています。
📚 ドキュメント
| ドキュメント | 説明 |
|---|---|
| 📥 インストールガイド | 自動化スクリプトを使用した、各プラットフォーム共通のセットアップ手順 |
| 🔑 API キーガイド | スクリーンショット付きの、USPTO API キーと Mistral API キーの取得手順 |
| 📖 使用例 | 関数の例、ワークフロー、連携パターン |
| 🎯 プロンプトテンプレート | 法務および調査ワークフロー向けの高度なプロンプトテンプレートを詳しく解説するガイド |
| ⚙️ フィールドのカスタマイズ | コンテキスト削減を最適化するためのフィールドセットのカスタマイズ方法を詳しく解説するガイド |
| 🔒 セキュリティガイドライン | セキュリティに関する包括的なベストプラクティス |
| 🛡️ セキュリティスキャン | シークレットの自動検出とプロンプトインジェクション対策ガイド |
| コンテンツの来歴 | 取得したテキストの取り扱い方針:文書テキストの逐語的な保持、来歴ラベル付け、検出のみを行うインジェクションスキャン |
| 🧪 テストガイド | テストスイートのドキュメントと API キーのセットアップ |
| 🔄 MCP 更新ガイド | 既存の USPTO MCP を PTAB 連携に対応させるための更新手順 |
| ⚖️ ライセンス | MIT ライセンスの利用規約 |
📢 重要:API 移行に関する更新(2026年1月)
この PTAB MCP の公開が遅れた理由
USPTO による大規模な API 移行のため、この USPTO PTAB MCP の公開が遅れました。開発中の初期バージョンでは、USPTO Developer Hub API の PTAB エンドポイント(developer.uspto.gov)を使用していましたが、これらは2026年1月6日に正式に廃止されました。詳細は、公式のUSPTO PTAB 移行ガイドをご覧ください。
要対応:他の USPTO MCP を更新してください
著者が公開している他の USPTO MCP サーバーを2026年1月19日より前にインストールした場合は、PTAB 連携の強化を利用するため、更新してください。既存の MCP は更新しなくても引き続き動作しますが、PTAB を含む USPTO 間のワークフローでプロキシの集中管理を最適化するには、更新を強くお勧めします。特にPatent File Wrapper MCPの更新をお勧めします。
⚠️ 重要:この PTAB MCP をインストールする場合は、PTAB のインストール前に、Patent File Wrapper(PFW)MCP を先にインストールする(または、すでにインストール済みの場合は更新する)ことを強くお勧めします。更新された PFW には、PFW の統合プロキシサーバー経由で PTAB 文書をダウンロードするために必要な、プロキシ集中管理機能の強化が含まれています。
📖 詳細は完全版 MCP 更新ガイドをご覧ください:
- 各 MCP の変更点
- ステップごとの更新手順(Git と手動 ZIP の方法)
- 更新のメリット(プロキシの集中管理、ツール参照の修正)
- よくある更新時の問題のトラブルシューティング
🚀 FastMCP 4.0 + MCP Apps(2026年9月)
このサーバーは、MCP Python SDK 2.x 上でFastMCP 4.0.3(fastmcp[apps]>=4.0.3,<5.0.0)を実行し、MCP プロトコルリビジョン 2026-07-28 に対応しています。MCP Apps のビジュアルビュー、2 種類のトランスポートモード、ブラウザーで安全に使用できるダウンロードプロキシを備えています。
新機能:
- MCP Apps ビュー — 検索結果はインタラクティブなカードビュー(タイプ/ステータス/当事者のフィルター、並べ替え、Google Patents と Patent Center のボタン)として表示され、ダウンロードは「最近のダウンロード」パネルに表示されます。STDIO を使って Claude Desktop で動作し、HTTP の設定は不要です。
- 永続的なダウンロードリンク — ローカルプロキシが、暗号化されたトークンをパスに含むリンク(PTAB_LINK_TTL_DAYS、既定値は 1 日、PTAB_LINK_MAX_USES、既定値は 25 回のダウンロード)を発行するようになりました(
/download/persistent/{hash})。どのブラウザーでクリックしても、ヘッダーも 401 エラーもなく、PDF を直接ダウンロードできます。 - ライブのダウンロードページ — ローカルプロキシが
http://localhost:8083/downloadsを提供し、最近生成されたダウンロードリンクを一覧表示するブラウザーページを開けるようになりました。 - 3 段階のテキスト抽出:まず PDF のネイティブテキストレイヤー(pypdf)を使い、テキストレイヤーのないスキャンページには Mistral OCR を使います。次に、短いスキャン済み出願書類(
DOCLING_MAX_PAGES以下のページ数の文書。既定値は 20 ページ)には、セルフホスト型 OCR バックエンドの Docling を使います。時間のかかる抽出処理の間、進捗通知がストリーミングされます。 - HTTP トランスポートモード — Docker/リバースプロキシ環境へのデプロイでは
FASTMCP_TRANSPORT=httpを設定します。X-API-KEY認証、claude.ai プローブの修正、セキュリティヘッダー、認証不要の/healthエンドポイントに対応しています。
環境変数:
| 変数 | デフォルト | 目的 |
|---|---|---|
USPTO_API_KEY | — | 必須。 USPTO ODP API キー |
MISTRAL_API_KEY | unset | 任意。テキストレイヤーのないスキャンページで Mistral OCR ティアを有効にします |
MISTRAL_OCR_MODEL | mistral-ocr-latest | 日付付きの OCR モデルスラッグを固定します |
DOCLING_SERVE_URL | unset | セルフホストした docling-serve インスタンスのベース URL。Docling 抽出ティアを有効にします(例:http://localhost:5001 または https://your-docling-host.example.com) |
DOCLING_TIMEOUT | 300 | Docling の読み取りタイムアウト(秒) |
DOCLING_MAX_PAGES | 20 | このページ数を超える場合は Docling をスキップします(大きな文書 → Mistral) |
FASTMCP_TRANSPORT | stdio | stdio(Claude Desktop)または http(Docker/リモート) |
FASTMCP_HOST | 127.0.0.1 | HTTP バインドアドレス |
FASTMCP_PORT | 8000 | HTTP ポート — Windows では 8765 を使用してください(8000 は Hyper-V の予約範囲に含まれることがよくあります) |
FASTMCP_STATELESS_HTTP | true | ステートレスなストリーミング HTTP:サーバー側のセッションテーブルを使わず、各リクエストを自己完結させます。mcp-session-id を再送しないクライアント、およびロードバランス構成/複数レプリカのデプロイに必要です |
CORS_EXTRA_ORIGIN | unset | HTTP モードで許可する追加の CORS オリジン(例:https://claude.ai) |
INTERNAL_AUTH_SECRET | unset | HTTP モードでは必須(X-API-KEY 認証)。一元化プロキシの JWT の署名にも使用します |
ENABLE_ALWAYS_ON_PROXY | true | ダウンロードプロキシを起動時に開始するか、必要に応じて開始するかを指定します |
PTAB_PROXY_PORT | 8083 | ローカルダウンロードプロキシのポート |
PTAB_PROXY_BASE_URL | unset | 外部から到達可能なプロキシのベース URL(Docker/リバースプロキシ) — 生成されるすべてのダウンロードリンクで使用されます |
PROXY_ALLOWED_IPS | unset | プロキシで許可する追加のクライアント IP/CIDR(Docker サブネット) |
PROXY_TOKEN | auto | プロセス間登録用の固定プロキシ認証トークン |
CENTRALIZED_PROXY_URL | unset | PFW 一元化プロキシの完全なベース URL(例:Docker では http://pfw:8080) — CENTRALIZED_PROXY_PORT より優先されます |
CENTRALIZED_PROXY_PORT | none | 従来のポートのみの PFW 設定(localhost) |
MCP_APP_EXTRA_DOMAINS | unset | MCP App iframe 用の追加 CSP ドメイン(カンマ区切り) |
LOG_LEVEL | INFO | ログレベル。ログに記録されるのはフローのメタデータ(ツール、リクエスト ID、ステータス、件数)のみです — クエリテキスト、レスポンス本文、OCR テキスト、署名付き URL は記録されません |
PTAB_LOG_DIR | unset | ローテーションするファイルログを任意で有効にします(デフォルト:stderr のみ) |
PTAB_LOG_MAX_BYTES | 10485760 | ファイルログのローテーションサイズ |
PTAB_LOG_BACKUP_COUNT | 5 | 保持するローテーション済みファイルログの数 |
PTAB_ENABLE_PROMPTS | false | 11 個のプロンプトテンプレートを登録します。デフォルトではオフです。これが true でない限り、クライアント UI には何も表示されません |
PTAB_ENABLE_USER_MANAGEMENT | false | ptab_manage_users を登録します。デフォルトではオフのため、標準のインストールで公開されるツールは 15 個ではなく 14 個です。PTAB_AUTH_MODE=oauth が必要です |
PTAB_AUTH_MODE | none | none(stdio/X-API-KEY HTTP)または oauth(OAuth 2.1 認可サーバーと保護対象リソース、HTTP のみ) |
PTAB_OWNER_EMAILS | unset | oauth モード:所有者アカウントをカンマ区切りで指定します。設定すると、これらのアカウントのみが ptab:admin を保持でき、管理者ロールを付与できるのもこれらのアカウントのみです。未設定の場合、有効な名簿上の管理者は全員、管理者として扱われます |
PTAB_DATA_DIR | ~/.uspto_ptab_mcp/data | 永続リンクと暗号化キー用のランタイムデータディレクトリ(モード 0700 で作成) |
PTAB_LINK_TTL_DAYS | 1 | 永続ダウンロードリンクの有効期間(日数、1 未満にはなりません) |
PTAB_LINK_MAX_USES | 25 | 永続リンクで許可されるダウンロード回数。この回数に達するとリンクは削除されます(0 で上限を無効化) |
PTAB_CONTENT_DEADLINE_SECONDS | 85 | PTAB_get_document_content 呼び出しごとのエンドツーエンドの時間制限。ダウンロード、Mistral OCR とその再試行、Docling で共有されます。制限時間内に完了しない処理は「Deadline exceeded」の結果を返します |
PTAB_OCR_DAILY_LIMIT | 500 | 呼び出し元ごとのローリング 24 時間 OCR 呼び出し上限(0 で無効化) |
PYPDF_MAX_PAGES | 200 | ネイティブテキストレイヤー抽出ティアのページ上限 |
MISTRAL_OCR_MAX_PAGES | 50 | Mistral OCR ティアのページ上限 |
MISTRAL_OCR_TIMEOUT | 120.0 | Mistral OCR リクエストのタイムアウト(秒) |
USPTO_SHARED_RATE_LIMIT_DIR | unset | プロセス間 USPTO レート制限の保存先ディレクトリ。未設定の場合、共有レート制限は無効になり、プロセス内でレートは適用されません |
USPTO_SHARED_RATE_LIMIT_RPS | 4.0 | 共有トークンバケットの補充レート(上記のディレクトリが設定されている場合にのみ読み込まれます) |
USPTO_SHARED_MAX_CONCURRENT | 1 | 共有同時実行スロットプールのサイズ(USPTO のバースト制限はキーごとに同時実行 1 件です) |
USPTO_SHARED_MAX_WAIT_SECONDS | 45 | レート制限エンベロープを返す前に、スロットとトークンを得るため共有 FIFO キューで呼び出しが待機する時間。いずれかのプロセスが 429 を受け取ると、共有クールダウン(上記ディレクトリ内の cooldown.json)が max(5 s, Retry-After) に設定され、すべての acquire がクールダウン終了まで待機します |
USPTO_MAX_RESPONSE_CHARS | 40000 | 構造化ツールレスポンスの文字数上限(レスポンスサイズガード) |
USPTO_MAX_CONTENT_CHARS | 120000 | 抽出された文書テキストの文字数上限 |
USPTO_RESPONSE_BOUNDS_ENABLED | true | レスポンスサイズガードのマスタースイッチ |
Docker 対応: /health エンドポイント、FASTMCP_TRANSPORT=http、PTAB_PROXY_BASE_URL、CENTRALIZED_PROXY_URL、PROXY_ALLOWED_IPS を組み合わせることで、サーバーを Docker/リバースプロキシの背後にデプロイできます。Compose ファイルは、別の uspto_docker_mcp リポジトリにあります。 |
⚡ クイックスタート
Windows へのインストール
PowerShell を管理者として実行してから、次のコマンドを実行します。
# Navigate to your user profile
cd $env:USERPROFILE
# If git is installed:
git clone https://github.com/john-walkoe/uspto_ptab_mcp.git
cd uspto_ptab_mcp
# If git is NOT installed:
# Download and extract the repository to C:\Users\YOUR_USERNAME\uspto_ptab_mcp
# Then navigate to the folder:
# cd C:\Users\YOUR_USERNAME\uspto_ptab_mcp
# The script detects if uv is installed and if it is not it will install uv - https://docs.astral.sh/uv
# Run setup script (sets execution policy for this session only):
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process
.\deploy\windows_setup.ps1
# View INSTALL.md for sample script output.
# Close Powershell Window.
# If choose option to "configure Claude Desktop integration" during the script then restart Claude Desktop
PowerShell スクリプトは次の処理を行います。
- ✅ uv を確認し、自動的にインストールします(winget または PowerShell スクリプトを使用)
- ✅ 依存関係をインストールし、実行可能ファイルを作成します
- ✅ USPTO API キー(必須)と Mistral API キー(任意)の入力を求めます。または、開発者が提供する他の USPTO MCP をインストール済みかどうかを検出し、インストール済みのものにある既存のキーを使用するかどうかを尋ねます。
- 🔒 API キーを入力した場合、スクリプトは Windows DPAPI 暗号化を使用して API キーを自動的に安全に保存します
- ✅ USPTO PFW MCP をすでにインストールしているかどうかを尋ね、インストール済みの場合は USPTO PFW MCP の既定の一元化プロキシを使用します
- ✅ Claude Desktop との連携を設定するかどうかを尋ねます
- 🔒 安全な設定方法(推奨)または従来の方法(MCP JSON ファイルに API キーを平文で記載)を提示します
- ✅ 既存の Claude Desktop 設定をバックアップしてから自動的に統合します(他の MCP サーバーは保持されます)
- ✅ インストールの概要と次の手順を提示します
Claude Desktop の設定 - 手動インストール
{
"mcpServers": {
"uspto_ptab": {
"command": "uv",
"args": [
"--directory",
"C:/Users/YOUR_USERNAME/uspto_ptab_mcp",
"run",
"ptab-mcp"
],
"env": {
"USPTO_API_KEY": "your_actual_USPTO_api_key_here",
"MISTRAL_API_KEY": "your_mistral_api_key_here_OPTIONAL",
"CENTRALIZED_PROXY_PORT": "none",
"PTAB_PROXY_PORT": "8083"
}
}
}
}
プロキシ設定に関する注意事項:
- CENTRALIZED_PROXY_PORT:
- 単独で使用する場合は
"none"に設定します(推奨しません) - USPTO PFW MCP がインストールされており、PFW がローカルプロキシに既定のポートを使用している場合は、8080 に設定します(PFW が既定のポートを使用していない場合は、この値を合わせて変更してください)
- 単独で使用する場合は
- PTAB_PROXY_PORT:ローカルプロキシのポート(既定値:
8083。PFW の8080との競合を避けます)- スタンドアロンモード(PFW MCP が検出されない場合)でのみ使用されます
- PFW MCP がインストールされている場合、PTAB は自動的に PFW の一元化プロキシ(ポート
8080)を使用しますが、PTAB のローカルプロキシポートにフォールバックします - 一元化プロキシのメリット:すべての USPTO MCP でポートを統一できること、リンクを長期間利用できること(既定では PFW_LINK_TTL_DAYS / PFW_LINK_MAX_USES、1 日/25 回のダウンロード)、レート制限を統一できること
詳細なインストール方法、手動設定、トラブルシューティングについては、INSTALL.md を参照してください。
🔑 主な機能
- ⚙️ ユーザーがカスタマイズ可能なフィールド - コードを変更せずに、YAML でフィールドセットを設定できます
- 🎯 コンテキストの削減 - 大量の API データではなく、要点を絞った応答を取得できます(80~99%削減)
- 📊 段階的な情報開示戦略 - 最小限の検出 → バランスの取れた分析 → ドキュメントの抽出
- 🔍 3 種類のデータ - 審判(IPR/PGR/CBM)、審判請求(Ex Parte)、インターフェアレンスに特化した検索ツール
- 🆕 ツール検索の最適化 - サーバーの指示により、Claude が必要に応じてツールを効率的に見つけられるため、ツール検索を有効にするとコンテキストウィンドウの使用量を 70~85%削減できます(ベータ機能)
- ✨ インテリジェントなドキュメント抽出 - セキュアなブラウザーからのダウンロードに対応した、自動最適化ハイブリッド抽出(PyPDF2 → Mistral OCR にフォールバック)
- 🆕 一元化されたプロキシ統合 - PFW MCP を自動検出し、統合プロキシ(ポート 8080)を使用して、永続的なリンクと MCP 間のダウンロードを実現します
- 🌐 セキュアなブラウザーからのダウンロード - API キーを安全に保ちながら、プロキシ URL をクリックして PDF を直接ダウンロードできます
- 📁 強化されたファイル名 - 審判のメタデータを含むプロフェッショナルな形式:
PTAB-2024-08-23_IPR2024-01353_PAT-7883848_FINAL_WRITTEN_DECISION.pdf - 👁️ 高度な OCR 機能 - 必要に応じて Mistral OCR を使用し、スキャンされた PDF から LLM 用のテキストを抽出します
- 🔐 API キーの安全な保存 - Windows DPAPI 暗号化をオプションで利用でき、API キーを安全に保管します(設定ファイルに平文で保存されません)
- 🚀 高パフォーマンス - 指数バックオフを使った再試行ロジックと、レート制限への準拠
- 🛡️ 本番環境対応 - 強化されたエラー処理、自動ログサニタイズ、安全なファイル権限を設定した永続的な監査証跡
- 🔒 エンタープライズセキュリティ - SafeLogger による機密データの自動マスキング、ファイルベースのロギング(10MB ごとにローテーション)、コンプライアンス対応のためのセキュリティログの分離
- 💻 クロスプラットフォーム - Linux と Windows でシームレスに動作します
- 📋 API を完全に網羅 - USPTO PTAB Open Data Portal のすべてのエンドポイントに対応
- 🔗 MCP 間の統合 - Patent File Wrapper、FPD、Citations、Pinecone MCP とのシームレスな統合により、ライフサイクル全体を分析できます
ワークフロー設計 - ユーザーの指示は最小限で、すべてLLMが実行
ユーザーからのリクエスト例:
- 「2024年に申し立てられたApple IncのIPR手続きをすべて探してください」
- 「特許7883848の最終書面決定を表示してください」
- 「IPR2024-01353の開始決定を取得してください」
- 「この企業のPTABでの異議申し立て実績を調査し、審査経過と関連付けてください」 - USPTO Patent File Wrapper(PFW)のインストールが必要です - uspto_pfw_mcp。また、このリクエストやMCPをまたぐその他のプロンプトを実行する前に、LLMにPTAB_get_guidanceツールを呼び出すよう依頼することを推奨します(セクションの選択についてはクイックリファレンス表を参照してください。詳細は使用例をご覧ください)。
- 「この技術分野のIPR成功率と引用パターンを分析してください」
LLMが実行する手順:
ステップ1:検索(最小限) → ステップ2:選択と分析(バランス型 - 任意) → ステップ3:審判の詳細レビュー → ステップ4(任意):調査対象となる特定の審判文書を選択 → ステップ5(任意):文書一覧からdocument_id(s)を取得 → ステップ6(任意):LLMで使用する文書の抽出、および/またはユーザーが利用するPDFのダウンロードリンク
フィールド設定では、最適化された調査手順を利用できます。
- **検索(最小限)**では、文書によるコンテキストの肥大化を抑えながら、審判を効率的に50~100件取得します。
- 取得した結果から**選択と分析(バランス型 - 任意)**を行い、有力な審判を選びます。高度なワークフローや、Patent File WrapperまたはFPDと連携するMCP横断ワークフローで必要な場合は、バランス型の検索を任意で実行します。
- 選択した審判について、
PTAB_search_trials_completeを使用した審判の詳細レビューを行い、LLMが分析に使用できる完全な構造化データを取得します。 - 調査対象となる特定の審判文書を選択します(任意)。例:最終書面決定、開始決定、申し立て書。
- 文書一覧からdocument_id(s)を取得します(任意)。
PTAB_get_documentsを使用してdocument_id(s)を取得します。 - LLMで使用する文書の抽出、および/またはダウンロードリンクを利用します(任意)。品質が最適化されるよう自動調整するインテリジェントなハイブリッドツールで文書を抽出します。文書をPDFとしてダウンロードする際は、チャット履歴からUSPTOのAPIキーが見えないようにするHTTPプロキシ経由のURLを使用します。
🎯 プロンプトテンプレート
このMCP サーバーには、複雑なPTABワークフロー向けに最適化された高度なAIプロンプトテンプレートが含まれています。サーバー側でプロンプトの登録を有効にするには、オプトインが必要です。PTAB_ENABLE_PROMPTS=trueを指定してサーバーを起動しない限り、プロンプトは登録されません。すべてのテンプレート、機能、使用例に関する詳細なドキュメントは、**PROMPTS.md**をご覧ください。
テンプレートの概要
| カテゴリ | テンプレート | 目的 |
|---|---|---|
| 法律分析 | /trial_precedent_research、/ipr_challenge_defense_PFW、/portfolio_ptab_risk_assessment_PFW_FPD | 訴訟調査、防御戦略、ポートフォリオのリスク評価 |
| 調査と審査経過 | /prior_art_board_decision_mining、/ptab_prior_art_validation_PFW_CITATIONS、/technology_landscape_ptab_analysis_PFW | 先行技術調査、審査官による引用の検証、競合情報 |
| 文書管理 | /complete_trial_litigation_package、/trial_timeline_analysis、/complete_prosecution_lifecycle_PFW_FPD_CITATIONS | 整理された取得、タイムライン分析、ライフサイクル全体を網羅するワークフロー |
すべてのテンプレートに共通する主な機能:
- 入力処理の強化 - 識別子を柔軟に指定できます(審判番号、特許番号、当事者名)
- スマート検証 - 形式を自動検出し、入力方法を案内します
- MCP横断連携 - PFW、FPD、Citations、Pinecone MCPとのシームレスなワークフロー
- コンテキストの最適化 - 段階的な情報開示によってトークンを削減します
📊 利用可能な関数
検索関数(用途別のツール9種類 - データ型ごとに3種類)
審判検索ツール(IPR、PGR、CBM)
| 関数(表示名) | コンテキスト削減率 | 使用例 |
|---|---|---|
PTAB_search_trials_minimal(審判を最小限の項目で検索) | 通常95~99% | 超高速の審判案件検索(ユーザーが最小限の項目をカスタマイズ可能) |
PTAB_search_trials_balanced(審判をバランスよく検索) | 通常85~95% | 包括的な審判分析(documentBagなし) |
PTAB_search_trials_complete(審判を完全に検索) | 通常80~90% | 詳細な調査に適した完全な審判データ |
審判部への不服申立て検索ツール(査定系不服申立て)
| 関数(表示名) | コンテキスト削減率 | 使用例 |
|---|---|---|
PTAB_search_appeals_minimal(不服申立てを最小限の項目で検索) | 通常95~99% | 超高速の不服申立て案件検索(ユーザーが最小限の項目をカスタマイズ可能) |
PTAB_search_appeals_balanced(不服申立てをバランスよく検索) | 通常85~95% | 包括的な不服申立て分析(documentBagなし) |
PTAB_search_appeals_complete(不服申立てを完全に検索) | 通常80~90% | 詳細な調査に適した完全な不服申立てデータ |
抵触審査検索ツール
| 関数(表示名) | コンテキスト削減率 | 使用例 |
|---|---|---|
PTAB_search_interferences_minimal(抵触審査を最小限の項目で検索) | 通常95~99% | 超高速の抵触審査案件検索(ユーザーが最小限の項目をカスタマイズ可能) |
PTAB_search_interferences_balanced(抵触審査をバランスよく検索) | 通常85~95% | 包括的な抵触審査分析(documentBagなし) |
PTAB_search_interferences_complete(抵触審査を完全に検索) | 通常80~90% | 詳細な調査に適した完全な抵触審査データ |
検索戦略
特化した検索戦略
- IPR/PGR/CBM分析 -
search_trials_*ツールを使用して、当事者系レビュー、付与後レビュー、対象事業方法の手続を分析します - 査定系不服申立ての分析 -
search_appeals_*ツールを使用して、PTABの不服申立て決定と審査官の判断を覆す傾向を調査します - 抵触審査手続 -
search_interferences_*ツールを使用して、発明者間の優先権争いを分析します - MCP間の連携 -
applicationNumberTextと特許番号を使用して、PTABデータをPFWの出願審査履歴と関連付けます - 危険信号の特定 - 訴訟リスクの評価では、開始決定、最終書面決定、和解の傾向に注目します
クエリ例
# Find IPR proceedings for specific patent
PTAB_search_trials_minimal(
patent_number="7883848",
trial_type="IPR",
limit=50
)
# Technology area IPR analysis
PTAB_search_trials_balanced(
petitioner_name="Apple Inc",
filing_date_from="2020-01-01",
filing_date_to="2024-12-31",
limit=100
)
# Cross-MCP workflow example
# 1. Find patents with PFW
# 2. Check PTAB challenge history
PTAB_search_trials_minimal(
patent_number=patent_from_pfw,
limit=20
)
文書処理関数
| 関数(表示名) | 目的 | 要件 |
|---|---|---|
PTAB_get_documents(審判文書を取得) | ページネーション、並べ替え、フィルタリングに対応し、PTABのあらゆる手続の全記録にアクセスします。審判ではPOST検索エンドポイント(正確な件数、next_offset)を使用し、不服申立てと抵触審査ではGETを使用します。 | USPTO_API_KEY |
PTAB_get_document_content(PTAB文書の内容を取得) | インテリジェントなハイブリッド文書抽出(PyPDF2 + OCR) | USPTO_API_KEY(OCRのフォールバックにはMISTRAL_API_KEYも必要) |
PTAB_get_document_download(PTAB文書のダウンロード) | ファイル名を拡張した、安全なブラウザーアクセス可能なダウンロードURL | USPTO_API_KEY |
文書処理機能
- 文書リスト階層(
PTAB_get_documents):すべての PTAB 審理タイプの完全なドケットにアクセスできます- 汎用識別子のサポート - 審理番号、控訴番号、インターフェアランス番号を使用できます
- identifier_type パラメーター - 正しいルーティングのために、「trial」、「appeal」、「interference」のいずれかを指定します
- 審理の完全なページネーション - POST 検索エンドポイント(
trials/documents/search)を使用し、正確なtotal_documents件数(訴訟の多い IPR の場合は 105 件など)とnext_offsetのヒントを返します。従来の GET エンドポイントでは、気付かないうちに 25 件に制限されていました。 offset+limitパラメーター - ドケット全体をページ単位で表示できます。offset=0, limit=25→ 最初の 25 件、offset=25, limit=25→ 次の 25 件など。sort_orderパラメーター -"asc"は古い順(申立書、POPR、初期の証拠書類)に返します。「desc」(デフォルト)は新しい順(FWD、サー・リプライ、審理の記録)に返しますdocument_titleフィルター -documentTypeDescriptionTextに対する大文字と小文字を区別しない部分一致です(例:document_title='Final Written Decision'、document_title='Patent Owner Response')。タイトルフィールドではなく、説明フィールドを照合します。document_categoryフィルター - 大まかなカテゴリによる絞り込み:PETITION、RESPONSE、ORDER、DECISION、MOTION、FINALfiling_partyフィルター - BOARD、PETITIONER、PATENT OWNER で絞り込みます- LLM 向けに最適化された解析 - 文書 ID、説明、提出日、提出者を抽出します
- 既知の API 制限 - 一部の審理では、申立書(Paper 1)と審理開始決定が検索エンドポイントにインデックスされていない場合があります。すべての結果をページ送りしても初期の重要な文書が見つからない場合は、審理の ZIP ダウンロード(
PTAB_search_trials_balanced→fileDownloadURIから利用可能)を使用してください。完全なドケットが含まれています。
- インテリジェント抽出階層(
PTAB_get_document_content):ハイブリッド方式による自動最適化抽出- スマートな方式選択 - 最初に PyPDF2 を自動的に試し、必要に応じて Mistral OCR にフォールバックします(API キーが必要です)
- 効率的な OCR の利用 - PyPDF2 の抽出が品質チェックに失敗した場合にのみ OCR を実行します
- 品質検出 - 抽出結果が使用可能か、OCR が必要かを自動的に判定します
- 透明性のある報告 - 使用した抽出方式を表示します
- 統一されたインターフェース - すべての PTAB 文書タイプを単一のツールで処理します(ツールの混同を解消します)
- 高度な機能 - Mistral OCR を使用してスキャン文書からテキストを抽出します
- 出典注釈 - すべての応答に
provenance_noteが付与され、抽出されたテキストが引用文書データ(指示ではない)としてラベル付けされます。また、テキストがインジェクションに類似した形式の場合は、検出のみを行うスキャンによってinjection_scan注釈(種類ラベルのみ、文書 ID をキーとします)が追加されます。問題がない場合、このキーは含まれず、テキスト自体は常に改変せずに返されます。docs/CONTENT_PROVENANCE.md を参照してください
- ブラウザーからのダウンロード階層(
PTAB_get_document_download):ファイル名を拡張した、安全なプロキシ経由のダウンロード- クリックしてダウンロードできる URL で、どのブラウザーからも直接使用できます
- 一元化されたプロキシとの統合 - 設定されている場合、PFW MCP を自動検出し、すべての USPTO 文書のダウンロードに統合プロキシ(ポート 8080)を使用します。一元化されたプロキシに問題が検出された場合は、ローカルプロキシにフォールバックします。
- 永続リンク - PFW の一元化されたプロキシを使用する場合は暗号化されたリンクです(デフォルトでは PFW_LINK_TTL_DAYS / PFW_LINK_MAX_USES、1 日 / 25 回のダウンロード。MCP を再起動しても使用できます)
- 統合アーキテクチャ - PFW がインストールされている場合、すべての USPTO MCP で単一の HTTP プロキシ(ポート 8080)を使用します
- 単独でのフォールバック - PFW が検出されない場合はローカルプロキシ(ポート 8083)を使用します
- 拡張されたファイル名 - 審理のメタデータを含むプロフェッショナルな形式です
- 形式:
PTAB-2024-08-23_IPR2024-01353_PAT-7883848_FINAL_WRITTEN_DECISION.pdf - 審理の提出日順に並べ替えます
- 特許弁護士やファイル管理のために、すぐに文脈を把握できます
- 形式:
- API キーのセキュリティ - USPTO の認証情報がチャット履歴やブラウザーに公開されることはありません
- レート制限への準拠 - USPTO のダウンロード制限を自動的に適用します
LLM ガイダンス機能
| 関数(表示名) | 目的 | 要件 |
|---|---|---|
PTAB_get_guidance(PTAB get guidance) | コンテキスト効率の高い、選択式のガイダンスセクション(トークンを95~99%削減) | なし |
コンテキスト効率の高いガイダンスシステム
新機能:PTAB_get_guidance ツール — ガイダンスセクションを選択して取得し、MCP リソースの可視性に関する問題を解決します。
🎯 クイックリファレンスチャート — 呼び出すセクションをすぐに確認できます。
- 🔍 「企業/特許/日付で審判を検索」→
PTAB_get_guidance("tools") - 📄 「審判の文書をダウンロード」→
PTAB_get_guidance("documents") - 🔖 「審判の種類(IPR/PGR/CBM)を理解」→
PTAB_get_guidance("tools") - 🤝 「審判と出願手続を関連付ける」→
PTAB_get_guidance("workflows_pfw") - 🚩 「FPD 請願+PTAB のパターン」→
PTAB_get_guidance("workflows_fpd") - 📊 「引用の品質+PTAB の相関分析」→
PTAB_get_guidance("workflows_citations") - 🧠 「アシスタントと MPEP ガイダンスを調査」→
PTAB_get_guidance("workflows_pinecone") - 🏢 「ポートフォリオの包括的なデューデリジェンス」→
PTAB_get_guidance("workflows_complete") - ⚙️ 「段階的開示の戦略」→
PTAB_get_guidance("tools") - 📉 「ワークフローのトークン使用量を削減」→
PTAB_get_guidance("cost") - 📏 「応答サイズの予算とページネーションのマーカーについて」→
PTAB_get_guidance("limits")
このツールは、最大限の効率を実現するために、具体的なワークフロー、フィールドの推奨事項、API 呼び出しの最適化戦略、避けるべきアンチパターン、MCP 間の統合パターンを提供します。cost セクションで扱うのはトークン使用量であり、費用ではありません。詳しい例と統合ワークフローについては、USAGE_EXAMPLES.md を参照してください。
ユーティリティ関数
| 関数(表示名) | 目的 | 要件 |
|---|---|---|
PTAB_get_field_configs(フィールド設定を取得) | 現在の YAML フィールド設定を表示 | なし |
管理機能(任意)
| 関数 | 目的 | 要件 |
|---|---|---|
ptab_manage_users | OAuth デプロイメント用の登録ユーザー管理 | PTAB_ENABLE_USER_MANAGEMENT=true による登録制(デフォルトでは無効)。OAuth モードでは ptab:admin スコープも必要 |
💻 使用例と統合ワークフロー
次の項目を含む包括的な使用例については、以下をご覧ください。
- 審判の検索(特許番号、請求人名、出願日)
- 審判の分析(技術分野、技術センター、決定結果)
- インターフェアレンス手続(当事者の分析、優先権争い)
- 高度な文書フィルタリング(文書の種類、選択的なダウンロード)
- MCP 間の統合ワークフロー(PTAB + PFW + FPD + Citations + Pinecone)
- ライフサイクル全体のデューデリジェンスの例
- 訴訟調査のパターン
- IPR 成功率の分析
- コンテキスト削減戦略(最小、バランス、完全の各ティアにおける段階的開示)
詳しくは、USAGE_EXAMPLES.md のドキュメントを参照してください。
🔧 フィールドのカスタマイズ
この MCP サーバーでは、コンテキストを最適に削減するために、YAML 設定を使ってユーザーがフィールドセットをカスタマイズできます。コードを変更せずにフィールドセットを変更できます。
フィールドのカスタマイズに関する詳しいドキュメントについては、CUSTOMIZATION.md を参照してください。
クイックスタート
- プロジェクトのルートディレクトリにある
field_configs.yamlを編集します #記号を削除して、使用するフィールドのコメントを解除します- Claude Desktop を保存して再起動します。変更は再起動後に反映されます
利用可能なフィールドセット
段階的開示に対応した3種類のデータ:
- 審判(IPR/PGR/CBM):最小(12フィールド)→ バランス(30~50)→ 完全(すべて)
- 審判請求(Ex Parte):最小(9フィールド)→ バランス(25~40)→ 完全(すべて)
- インターフェアレンス:最小(6フィールド)→ バランス(20~30)→ 完全(すべて)
例:訴訟調査用フィールドセット
trials_minimal:
fields:
- trialNumber # IPR2024-01353
- patentOwnerData.applicationNumberText # → PFW integration
- patentOwnerData.patentNumber # Patent number
- regularPetitionerData.realPartyInInterestName # Petitioner
- trialMetaData.trialStatusCategory # Status
以下については、CUSTOMIZATION.md を参照してください。
- すべてのデータ型のフィールドリファレンス
- トークン削減の戦略
- MCP 間の統合パターン
- カスタムフィールドセットの例
- トラブルシューティングガイド
🔗 MCP 間の統合
この MCP は、特許ライフサイクルを包括的に分析できるよう、他の USPTO MCP およびナレッジベースとシームレスに連携するよう設計されています。
関連する USPTO MCP サーバー
| MCP サーバー | 目的 | GitHub リポジトリ |
|---|---|---|
| USPTO Patent File Wrapper (PFW) | 審査経過と書類 | uspto_pfw_mcp |
| USPTO Final Petition Decisions (FPD) | 審査中の請願に関する決定 | uspto_fpd_mcp |
| USPTO Enriched Citation | 2017年10月から現在までに郵送された Office Actions から AI が抽出した引用情報 | uspto_enriched_citation_mcp |
| Pinecone Assistant MCP | AI によるチャットと引用機能を備えた特許法ナレッジベース(MPEP、審査ガイダンス)— API キー 1 つ、無料枠には制限あり | pinecone_assistant_mcp |
| Pinecone RAG MCP | カスタム埋め込みを使用する特許法ナレッジベース(MPEP、審査ガイダンス)— Pinecone と埋め込みモデルが必要、毎月リセットされる無料枠あり | pinecone_rag_mcp |
統合の概要
Patent Trial and Appeal Board (PTAB) MCP は、特許付与後の手続きと審判決定にアクセスでき、特許付与後の特許への異議申し立てを追跡します。他の MCP と組み合わせることで、次のことが可能になります。
- PTAB + PFW:PTAB の手続きと審査経過を相互参照し、訴訟を調査する
- PTAB + FPD:請願に関する危険信号と、特許付与後の異議申し立てのパターンを関連付ける
- PTAB + Citations:後に PTAB で異議を申し立てられた特許について、審査官による引用の質を分析する
- PTAB + Pinecone(Assistant または RAG):PTAB 文書の全文を抽出する前に、MPEP のガイダンスと法的基準を調査する
- PFW + FPD + PTAB:出願から特許付与後の異議申し立てまで、特許ライフサイクル全体を追跡する
- PFW + FPD + PTAB + Citations:審査、請願、引用、異議申し立てを網羅した包括的なデューデリジェンスを行う
主な統合パターン
相互参照するフィールド:
patentOwnerData.applicationNumberText- PTAB の手続きと PFW の審査を結び付ける主キーpatentOwnerData.patentNumber- Citations およびその他の MCP と連携する特許番号patentOwnerData.groupArtUnitNumber- すべての MCP にわたる技術分野別の分析regularPetitionerData.realPartyInInterestName- MCP 間で当事者を照合patentOwnerData.technologyCenterNumber- 技術分類の分析
段階的なワークフロー:
- 発見(PTAB):最小限の検索で、関連する IPR/PGR/CBM の手続きを見つける
- 審査の背景情報(PFW):異議を申し立てられた特許を審査経過と相互参照する
- 引用情報(Citations):異議を申し立てられた特許について、審査官による引用の質を分析する(2017年10月以降のみ)
- 請願の確認(FPD):審査の手続き経過を確認し、危険信号を探す
- ナレッジ調査(Pinecone):利用可能であれば、MPEP のガイダンスを調査する(Assistant MCP:
assistant_context/RAG MCP:semantic_search) - 文書分析(PTAB):対象を絞った PTAB 文書を抽出し、審判部の判断理由を確認する
- リスク評価:PTAB の傾向、審査の質、引用分析に基づいて、特許の脆弱性を定量化する
統合ワークフロー、相互参照の例、ユースケースの詳細については、USAGE_EXAMPLES.md を参照してください。
🆕 集中プロキシ統合(PFW + PTAB)
PFW と PTAB の MCP が両方インストールされている場合、PTAB は PFW の集中プロキシと自動的に統合され、ドキュメント管理を一元化します。
アーキテクチャの利点:
- 単一ポート - すべての USPTO ドキュメントのダウンロードに、1 つの HTTP サーバー(ポート 8080)を使用します
- 永続リンク - PFW のリンクストアを介した暗号化リンク(デフォルトでは PFW_LINK_TTL_DAYS / PFW_LINK_MAX_USES が 1 日 / 25 回のダウンロード。MCP の再起動後も利用できます)
- レート制限の統合 - すべての MCP で USPTO の制限を共有します
- MCP 間キャッシュ - PFW はすべての USPTO MCP からのドキュメントをキャッシュし、アクセスを高速化します
- 自動検出 - PTAB は起動時に PFW を検出し、集中モードに切り替えます
仕組み:
- PTAB は USPTO API のレスポンスから PDF ダウンロード URL を抽出します
- PTAB は拡張ファイル名を生成します:
PTAB-{date}_{trial}_{patent}_{description}.pdf - PTAB は PFW にドキュメントを登録します:
POST {CENTRALIZED_PROXY_URL}/register-ptab-document(JWT 認証。拡張ファイル名を含みます) - PFW はメタデータをデータベースに保存します(trial_number、download_url、api_key、enhanced_filename)
- PTAB は PFW が発行したダウンロードリンクを返します
- ユーザーがリンクをクリック → PFW が USPTO から取得 → 拡張ファイル名で PDF をストリーミングします
- リンクは PFW_LINK_TTL_DAYS の期間(デフォルトでは 1 日)有効で、MCP の再起動後も利用できます
PFW の場所の設定: CENTRALIZED_PROXY_URL に PFW のプロキシのベース URL を設定します。1 台のマシンでは http://localhost:8080、Docker コンテナ間では http://pfw:8080、リバースプロキシの背後にある外部 HTTPS ベース URL などを指定します。(従来の CENTRALIZED_PROXY_PORT も、localhost の設定で引き続き使用できます。)ホスト間で登録する場合、PFW の PROXY_ALLOWED_IPS で PTAB の送信元 IP を許可する必要があります。
スタンドアロンモード:
- PFW がない場合:PTAB のローカルプロキシ(ポート 8083)が独自の永続リンク(PTAB_LINK_TTL_DAYS、デフォルトでは 1 日。PTAB_LINK_MAX_USES、デフォルトでは 25 回のダウンロード)(
/download/persistent/{hash})を発行します。暗号化された SQLite ベースのリンクで、ブラウザーで安全に使用でき、プロキシの再起動後も有効です - 拡張ファイル名も引き続き使用できます(同じ生成ロジックをローカルで使用します)
- 適切なフォールバックにより、PTAB は完全なダウンロード機能を備えた状態で単独動作します
📈 パフォーマンス比較
| 方法 | レスポンスサイズ | コンテキスト使用量 | 機能 |
|---|---|---|---|
| 直接 curl | ~200KB 以上 | 高 | 生の API アクセス |
| MCP バランス型 | ~30KB | 中 | 分析に必要な主要フィールド |
| MCP 最小型 | ~5KB | 非常に低い | 必要最小限のデータ |
| カスタムフィールド | ~2KB | 極めて低い | 2~3 個のフィールドのみ(99% 削減) |
🧪 テスト
エンドツーエンドの手動テストスイート(まずはこちらから)
tests/TEST_SUITE.md:Claude Desktop 経由でライブ USPTO API に対して、デフォルトで登録される 14 個のツールを網羅する 18 件のテストです。MCP Apps ビュー、永続ダウンロードリンク、ダウンロードページ、抽出ティア、HTTP トランスポートモードが含まれます。重要な変更を行った後に実行してください。
開発者向け自動テスト
# Full pytest suite — hermetic by default: no API key or network needed
# (tests marked @pytest.mark.network auto-skip unless PTAB_RUN_NETWORK_TESTS=1)
uv run pytest
# test_deployment bash-helper tests need bash on PATH
設定ファイル:
-
pyproject.toml(
[tool.pytest.ini_options]):非同期テスト用に pytest を設定しますasyncio_mode = "auto"を有効にし、async/await テストをシームレスに実行します- ライブ API テスト用に
networkマーカーを登録します
-
.pre-commit-config.yaml:セキュリティ用の Git pre-commit フックです
- 各コミットの前に
detect-secretsとプロンプトインジェクションのスキャンを実行します - API キーの誤ったコミットを防ぎます
- 次のコマンドでインストールします:
uv run pre-commit install
- 各コミットの前に
包括的なテストガイドについては、tests/README.md を参照してください。
📁 プロジェクト構成
uspto_ptab_mcp/
├── field_configs.yaml # Root-level field customization (YAML)
├── .pre-commit-config.yaml # Pre-commit hooks for security scanning
├── .secrets.baseline # Baseline file for detect-secrets (tracks known secrets)
├── .prompt_injections.baseline # Baseline file for prompt injection detection
├── src/
│ └── ptab_mcp/
│ ├── main.py # Composition root: FastMCP server, instructions, tool registration
│ ├── runtime.py # Settings/logging/keys and service singletons
│ ├── server_bootstrap.py # Server/proxy startup (stdio, HTTP, hybrid)
│ ├── middleware.py # HTTP auth + security-header middleware
│ ├── __main__.py # Entry point for -m execution
│ ├── app_uris.py # MCP App resource URIs
│ ├── shared_secure_storage.py # Secure API key storage (DPAPI/chmod 600)
│ ├── tools/ # The 15 MCP tools (14 register by default)
│ │ ├── trials.py # PTAB_search_trials_minimal/balanced/complete
│ │ ├── appeals.py # PTAB_search_appeals_minimal/balanced/complete
│ │ ├── interferences.py # PTAB_search_interferences_minimal/balanced/complete
│ │ ├── documents.py # PTAB_get_documents/download/content (+ extraction tiers)
│ │ ├── guidance.py # PTAB_get_guidance, PTAB_get_field_configs
│ │ └── admin.py # ptab_manage_users (registration-gated)
│ ├── auth/ # Optional OAuth 2.1 sign-in (PTAB_AUTH_MODE=oauth)
│ ├── config/
│ │ ├── field_manager.py # YAML field configuration management
│ │ ├── settings.py # Environment configuration
│ │ ├── tool_reflections.py # Sectioned LLM guidance (10 sections, 95-99% token reduction)
│ │ ├── api_constants.py # API configuration constants (official USPTO rate limits)
│ │ ├── filter_field_mapping.py # Field mapping for search filters
│ │ ├── log_config.py # Logging configuration (SanitizingFilter on every handler)
│ │ └── storage_paths.py # File storage path utilities
│ ├── prompts/ # 11 AI-optimized prompt templates
│ ├── api/
│ │ ├── ptab_client.py # PTAB API client (ODP API integration)
│ │ ├── proceedings.py # Trial/appeal/interference adapters
│ │ ├── docling_client.py # Docling OCR client (self-hosted tier)
│ │ └── field_constants.py # Field name constants
│ ├── proxy/
│ │ ├── server.py # HTTP proxy for secure downloads
│ │ ├── rate_limiter.py # USPTO rate limiting compliance
│ │ ├── secure_link_cache.py # Persistent download links
│ │ ├── centralized_integration.py # PFW proxy integration
│ │ └── models.py # Pydantic models for proxy
│ ├── shared/
│ │ ├── error_utils.py # Error handling utilities
│ │ ├── circuit_breaker.py # Circuit breaker pattern
│ │ ├── internal_auth.py # Internal authentication (JWT)
│ │ ├── injection_scan.py # Detection-only scanner + provenance note for retrieved text
│ │ ├── dpapi_crypto.py # Windows DPAPI encryption
│ │ ├── cache.py # Caching utilities
│ │ ├── log_sanitizer.py # Log sanitization (API key masking)
│ │ ├── safe_logger.py # SafeLogger wrapper (auto-sanitization)
│ │ └── uspto_shared_rate_limiter.py # Cross-process USPTO rate limiter
│ ├── services/
│ │ └── ocr_service.py # OCR quality detection and processing
│ ├── ui/ # MCP App HTML views (search results, downloads, user management)
│ ├── validation/
│ │ └── validators.py # Input validation functions
│ └── util/
│ ├── response_formatter.py # Response formatting
│ ├── search_runner.py # Shared search execution path
│ ├── identity.py # Authenticated-identity helpers
│ ├── database.py # SQLite helpers
│ └── filter_builder.py # Search filter construction
├── deploy/
│ ├── linux_setup.sh # Linux deployment script (chmod 600 security)
│ ├── windows_setup.ps1 # PowerShell deployment script (DPAPI)
│ ├── manage_api_keys.ps1 # API key management utilities
│ ├── Validation-Helpers.psm1 # PowerShell validation module
│ ├── validation-helpers.sh # Bash validation helpers
│ ├── merge_ptab_to_claude_json.py # Claude Code config merger (Python)
│ └── quick_merge_claude_config.sh # Claude Code config merger (Bash wrapper)
├── docs/
│ └── CONTENT_PROVENANCE.md # Retrieved-text handling posture (security questionnaire answer)
├── tests/ # Hermetic pytest suite + manual end-to-end guide
│ ├── conftest.py # Network-test auto-skip gate + shared mock fixtures
│ ├── TEST_SUITE.md # Manual end-to-end suite (live API via Claude Desktop)
│ └── README.md # Testing documentation
├── .security/ # Commit-time security scanning tools
│ ├── check_prompt_injections.py # Prompt injection detector
│ ├── ptab_prompt_injection_detector.py # Detection engine
│ ├── test_benign.txt # Test benign inputs
│ ├── test_malicious.txt # Test malicious inputs
│ ├── VALIDATION_REPORT.md # Security validation results
│ └── README.md # Security tools documentation
├── reference/
│ ├── PTAB_swagger.yaml # API specification
│ ├── PTAB-to-ODP-PTAB-API-Mapping.txt # Legacy API mapping
│ └── Document_Descriptions_List.csv # Document type reference
├── documentation_photos/ # Visual documentation
├── pyproject.toml # Package configuration (incl. pytest + ruff config)
├── uv.lock # uv lockfile
├── README.md # This file
├── INSTALL.md # Comprehensive installation guide
├── CUSTOMIZATION.md # Field customization guide
├── USAGE_EXAMPLES.md # Function examples and workflows
├── PROMPTS.md # Prompt templates documentation
├── API_KEY_GUIDE.md # API key setup guide
├── SSO_SETUP.md # OAuth sign-in setup walkthrough
├── SECURITY_GUIDELINES.md # Security best practices
├── SECURITY_SCANNING.md # Automated secret detection guide
└── LICENSE # MIT License
Runtime Generated Files (not in repo):
~/.uspto_ptab_mcp/
├── logs/
│ ├── ptab_mcp.log # Application logs (10MB rotation, 5 backups)
│ └── security.log # Security events (10MB rotation, 10 backups)
├── .uspto_api_key # Encrypted USPTO API key (DPAPI/chmod 600)
├── .mistral_api_key # Encrypted Mistral API key (DPAPI/chmod 600)
└── .uspto_internal_auth_secret # Internal auth secret (shared across MCPs)
🔍 トラブルシューティング
よくある問題
API キーの問題
- Claude Desktop の場合: 設定ファイル内の API キーで十分です
- テストスクリプトの場合: 環境変数を設定する必要があります
USPTO API キーの設定:
- Windows コマンドプロンプト:
set USPTO_API_KEY=your_key - Windows PowerShell:
$env:USPTO_API_KEY="your_key" - Linux/macOS:
export USPTO_API_KEY=your_key
Mistral API キーの設定(OCR 用):
- Windows コマンドプロンプト:
set MISTRAL_API_KEY=your_key - Windows PowerShell:
$env:MISTRAL_API_KEY="your_key" - Linux/macOS:
export MISTRAL_API_KEY=your_key
uv と pip の問題
- uv の利点: 依存関係の解決に優れ、インストールも高速です
- 混在インストール:
uv syncとpip install -e .の両方を使用できます - テスト: uv で管理するプロジェクトでは、先頭に
uv runを付けてください
フィールドからデータが返されない
- 原因: フィールド名が YAML 設定にありません
- 解決方法:
field_configs.yamlを編集して、必要なフィールドを追加してください
認証エラー
- 原因: API キーが設定されていないか、無効です
- 解決方法:
USPTO_API_KEY環境変数または Claude Desktop の設定を確認してください - API キーの取得先: USPTO Open Data Portal から無料の API キーを取得してください
MCP サーバーが起動しない
- 原因: 依存関係が不足しているか、パスが正しくありません
- 解決方法: セットアップスクリプトを再実行し、すべての PowerShell ウィンドウを再起動してから、Claude Desktop(または他の MCP クライアント)を再起動し、設定を確認してください
- 問題が解決しない場合: MCP のインストールをリセットしてください(下記の「MCP インストールのリセット」を参照)
仮想環境の問題(Windows のセットアップ)
- 症状:
windows_setup.ps1の実行中に「No pyvenv.cfg file」エラーが発生する - 原因: Claude Desktop の実行中は
.venvファイルがロックされ、仮想環境を正しく作成できません - 解決方法:
- セットアップスクリプトを実行する前に、Claude Desktop を完全に終了します
.venvフォルダーを削除します:Remove-Item ./.venv -Force -Recurse -ErrorAction SilentlyContinue.\deploy\windows_setup.ps1を再度実行します
MCP インストールのリセット
Windows Quick インストーラーを再度実行するために、MCP のインストールを完全にリセットする必要がある場合:
# Navigate to the project directory
cd C:\Users\YOUR_USERNAME\uspto_ptab_mcp
# Remove Python cache directories
Get-ChildItem -Path ./src -Directory -Recurse -Force | Where-Object { $_.Name -eq '__pycache__' } | Remove-Item -Recurse -Force
# Remove virtual environment
if (Test-Path ".venv") {
Remove-Item ./.venv -Force -Recurse -ErrorAction SilentlyContinue
}
# Remove database files (if any)
Remove-Item ./proxy_documents.db -Force -ErrorAction SilentlyContinue
Remove-Item ./ptab_links.db -Force -ErrorAction SilentlyContinue
# Now you can run the setup script again
.\deploy\windows_setup.ps1
Linux/macOS のリセット:
# Navigate to the project directory
cd ~/uspto_ptab_mcp
# Remove Python cache directories
find ./src -type d -name '__pycache__' -exec rm -rf {} + 2>/dev/null || true
# Remove virtual environment and database files
rm -rf .venv
rm -f proxy_documents.db ptab_links.db
# Run setup script again
./deploy/linux_setup.sh
ヘルプの利用
- 動作する例については、テストスクリプトを確認してください
field_configs.yamlのフィールド設定を確認してください- Claude Desktop の設定が、INSTALL.md に記載されたテンプレートと一致していることを確認してください
- ワークフロー固有のガイダンスには
PTAB_get_guidanceを使用してください
🛡️ セキュリティと本番環境への対応
強化されたエラー処理
- 指数バックオフを伴う再試行ロジック - 一時的な障害時に自動で再試行します(1 秒、2 秒、4 秒の間隔で 3 回)
- スマートな再試行戦略 - 認証エラーやクライアントエラー(4xx)は再試行しません
- 構造化ログ - リクエスト ID を追跡し、デバッグとモニタリングを改善します
- 本番環境レベルの耐障害性 - タイムアウト、ネットワークの問題、API レート制限に適切に対処します
- タイムアウトの設定 - API リクエストを調整するための環境変数 USPTO_TIMEOUT および USPTO_DOWNLOAD_TIMEOUT
セキュリティ機能
- 🔐 Windows DPAPI による安全なストレージ - Windows Data Protection API を使用して API キーを暗号化します(ユーザーごとの暗号化)
- 環境変数による API キー管理 - コードベース内にハードコードされた認証情報はありません
- 平文の API キーをゼロに - 安全なストレージオプションにより、Claude Desktop の設定ファイルから API キーを排除できます
- クロスプラットフォームのセキュリティ - Windows 以外のシステムでは環境変数に自動でフォールバックします
- 安全なテストパターン - テストファイルでは、フォールバック付きの環境変数を使用します
- 包括的な .gitignore - 認証情報が誤ってコミットされるのを防ぎます
- セキュリティガイドライン - 安全な開発手法を網羅したドキュメント
- 自動シークレットスキャン - GitHub Actions ワークフローで API キーの漏洩を防ぎます(detect-secrets)
- 20 種類以上のシークレットを検出 - AWS キー、GitHub トークン、JWT、秘密鍵、API キーなど
- プロンプトインジェクションの検出 - 70 種類以上のパターンを検出するシステムにより、AI 固有の攻撃から保護します
- ベースライン管理 - 2 つのベースラインシステム(シークレットとプロンプトインジェクション)で既知の検出結果を追跡しながら、実際の脅威を検出します
- フィールド名の定数化 - マジック文字列を排除し、タイプミスに起因するセキュリティ問題を減らします
コンテンツの来歴と取得テキストの取り扱い
PTAB 文書は当事者が作成した主張文書です。申立書、準備書面、証拠資料には、 当事者が提出したあらゆるテキストが埋め込まれている可能性があります。そのため、 取得した文書テキストはそのまま提供され(削除も書き換えも行いません。忠実な 再現こそがこの製品の特長です)、ラベル付けと検出を組み合わせた方針で取り扱います。
- 来歴のラベル付け -
PTAB_get_document_contentの応答には、 抽出されたテキストが指示ではなく、引用された文書データであることを示すprovenance_noteが含まれます。また、サーバーの指示では、取得テキスト内に 指示のような文言があれば、それに従うのではなく報告するよう、利用するモデルに 指示します - 検出のみを行うインジェクションスキャン - 抽出されたテキストは、ツール呼び出し時に
インジェクションに類する内容(指示の上書き、プロンプトの抽出、エンコーディングによる
回避、不可視 Unicode を利用したステガノグラフィの密度)についてスキャンされます。
該当する場合は、文書 ID に対応する種類ラベルを含む
injection_scan注釈を追加します。 一致したテキスト自体は含まれません。テキストに問題がなければ、このキーは まったく追加されません(src/ptab_mcp/shared/injection_scan.py) - コンテンツを最小限に抑えたログ記録 - ログにはフローのメタデータのみを記録します。 スキャン結果は種類ラベルであり、文書の内容をログに含めずに安全に伝達できます
リクエストの追跡とデバッグ
すべての API リクエストに、相関付けのための一意なリクエスト ID(8 文字の UUID)が含まれます。
[a1b2c3d4] Starting POST request to trials/proceedings/search
[a1b2c3d4] Request successful on attempt 1
ドキュメント
SECURITY_GUIDELINES.md- セキュリティのベストプラクティスを網羅したガイドSECURITY_SCANNING.md- 自動シークレット検出と防止のガイドtests/README.md- API キーの設定方法を含む、テストの完全ガイド- サポートを円滑にするため、リクエスト ID を含むエラーメッセージを強化しました
📝 貢献
- リポジトリをフォークします
- フィーチャーブランチを作成します
- 新しい機能のテストを追加します
- すべてのテストが合格することを確認します
- プルリクエストを送信します
📄 ライセンス
MIT License
⚠️ 免責事項
本ソフトウェアは「現状有姿」で提供され、いかなる種類の保証もありません。
独立プロジェクトに関するお知らせ:これは個人による独立したプロジェクトであり、米国特許商標庁(USPTO)と提携、承認、または支援を受けているものではありません。
作者は、明示的または黙示的を問わず、以下を含みますがこれらに限定されない、いかなる表明も保証も行いません。
- 正確性とAI生成コンテンツ:データの正確性、完全性、またはいかなる目的への適合性も保証されません。ユーザーは、テキスト、データ、分析などを含むもののこれらに限定されない、人工知能(AI)コンポーネントによって生成または支援された出力が、不正確、不完全、架空の内容を含む、またはAIモデルによる「ハルシネーション」(作話)を表している可能性があることに特にご注意ください。
- 可用性:USPTO APIおよびMistral APIへの依存により、サービスが中断する場合があります。
- 法令遵守:ユーザーは、本ソフトウェアの使用、およびその出力に基づいて行う提出や措置が、以下を含みますがこれらに限定されない、適用されるすべての法律、規制、ポリシーを厳格に遵守することについて、単独で責任を負います。
- 最新の米国特許商標庁での手続きにおける人工知能ベースのツールの使用に関するガイダンス(USPTOガイダンス)。
- USPTOの誠実義務(例:37 CFR 1.56、11.303)。これには、重要な情報を開示し、誤りを訂正する義務が含まれます。
- USPTOの署名要件(例:37 CFR 1.4(d)、2.193(c)、11.18)。これらは、人による確認と合理的な調査を証明するものです。
- 発明者に関するすべての規則(例:各請求対象の発明には、少なくとも1人の人間の発明者が必要です)。
- 法律上の助言:このツールはデータへのアクセスと処理のみを提供し、法律上の助言は行いません。すべての結果は、資格を有する法律専門家が独自に検証し、批判的に分析し、専門的な判断を行う必要があります。
- 商用利用:ユーザーは、商用利用に関するUSPTOおよびMistralの規約を確認する必要があります。
- 機密保持とデータセキュリティ:作者は、クライアントの機密情報や技術情報を含め、ユーザーが本ソフトウェアのAIコンポーネントに入力したデータ、またはMistral APIなどのサードパーティAIサービスに送信したデータの機密性やセキュリティについて、いかなる表明も行いません。ユーザーは、統合されたサードパーティAIサービスのプライバシーポリシー、データ保持の慣行、セキュリティ対策を理解し、受け入れる責任を負います。
- 外国出願ライセンスと輸出管理:ユーザーは、特に技術情報などのデータを本ソフトウェアのAIコンポーネントを通じて入力または処理することが、米国の外国出願ライセンス要件(例:35 U.S.C. 184、37 CFR Part 5)や輸出管理規制(例:EAR、ITAR)に違反しないようにする責任を単独で負います。これには、外国人がそのようなデータにアクセスする場合や、AIサーバーが米国外に設置されている場合に、「みなし輸出」が発生する可能性を認識することも含まれます。
**責任の制限:**いかなる場合も、損害が発生する可能性について知らされていたとしても、作者は、本ソフトウェアの使用に起因する直接的、間接的、付随的、特別、または結果的な損害について責任を負いません。
ユーザーの責任:USPTO へのすべての提出物および行為の完全性とコンプライアンスについては、全面的にご自身が責任を負います。
- 独立した検証:本ソフトウェアで AI が生成または支援したすべての出力、分析、コンテンツは、USPTO またはその他の機関に依拠したり、行動を起こしたり、提出したりする前に、人間が十分に確認し、独立して検証し、必要に応じて修正する必要があります。これには、事実に関する主張、法的な主張、引用、証拠による裏付け、技術的な開示が含まれます。
- 誠実義務と善意:USPTO に対する誠実義務と善意を遵守する必要があります。これには、重要な情報(発明者に関する情報や誤りなど)の開示、および記録上の不正確な情報の速やかな訂正が含まれます。
- 署名と証明:USPTO に提出するすべての書面には、37 CFR 11.18(b) の要件に従って、ご自身で署名するか署名を記入し、内容を自ら確認し、合理的な調査を行ったことを証明する必要があります。AI ツールは書類に署名できず、必要な人間による調査を行うこともできません。
- 機密情報:基盤となる AI プロバイダーのデータ取り扱い方法を十分に理解し、クライアントから完全な同意を得ていない限り、機密情報、専有情報、またはクライアントの機微情報を本ソフトウェアの AI コンポーネントに入力しないでください。不注意または無許可による情報開示を防ぐ責任は、ご自身にあります。
- 輸出管理:機微な技術データを本ツールで使用する場合は、外国出願ライセンスおよび輸出管理に関するすべての規制を把握し、遵守してください。
- サービスのコンプライアンス:USPTO の各種規定(USPTO ウェブサイトの利用規約、USPTO.gov アカウントポリシー、自動データマイニングの制限など)および Mistral の利用規約をすべて遵守してください。AI ツールは USPTO.gov アカウントを取得できません。
- セキュリティ:API 認証情報とクライアント情報を安全に取り扱ってください。
- テスト:本番環境で使用する前に、十分にテストしてください。
- 専門家としての判断:本ツールは補助的なものであり、ご自身の専門家としての判断や専門知識に代わるものではありません。
本ソフトウェアを使用することで、本免責事項を読み、ソフトウェアを自己責任で使用することに同意し、すべての結果および関連する法的・倫理的義務の遵守について全面的に責任を負うことを認めたものとみなされます。
**法律専門家への注意事項:**本ツールは、法律実務で一般的に使用される特許調査ツールへのアクセスを提供しますが、データ取得および AI 支援による処理のみを行うシステムです。すべての結果は独立した検証と批判的な専門家による分析を必要とし、資格を有する法律顧問に代わるものでも、USPTO の AI 使用に関するガイダンスに記載されている、ご自身の専門家としての判断や職務の遂行に代わるものでもありません。
🔗 関連リンク
- USPTO オープンデータポータル
- USPTO PTAB オープンデータポータル API
- Model Context Protocol
- Claude
- uv パッケージマネージャー
- Mistral AI
💝 このプロジェクトを支援する
この USPTO PTAB MCP サーバーが役に立った場合は、開発へのご支援をご検討ください。このプロジェクトは、特許関係者の皆様に包括的で本番環境に対応したツールを提供するため、長い時間をかけて個人の時間を使って開発されました。
皆様のご支援は、特許関係者の皆様が利用できるこのオープンソースツールの保守と改善に役立ちます。ありがとうございます!
謝辞
- PTAB Open Data Portal API を提供してくださった USPTO
- MCP 仕様を提供してくださった Model Context Protocol
- このプロジェクトを通じて、卓越した開発支援、アーキテクチャに関する助言、ドキュメントの作成、PowerShell による自動化、テストの整理、包括的なコード開発を提供してくださった Claude Code
- 追加の開発支援とテスト支援を提供してくださった Claude Desktop
ご質問はありますか? クロスプラットフォームでのインストール手順については、INSTALL.mdをご覧ください。また、実際に動作する例についてはテストスクリプトをご確認ください。
USPTO のレート制限の共有(複数 MCP のデプロイ)
4 つの USPTO MCP(Citations、PFW、PTAB、FPD)すべてを、複数のユーザーにサービスを提供する HTTP コンテナーとして同じマシン上で実行し、USPTO API キーを1 つだけ使用する場合、各サーバー内のレート制限機構は、他の 3 つのプロセスの動作を把握できません。一方、USPTO が公表している制限はプロセス単位ではなくキー単位です(バースト=1、呼び出しの種類に応じて 4~15 リクエスト/秒、週次クォータあり、429 の 5 秒以内の再試行は禁止)。4 つのコンテナーすべてを同じバインドマウントディレクトリに接続すると、POSIX ファイルロックによって調停される、プロセス間で共有する単一の FIFO キュー、上限付きの進行中リクエスト用スロットプール、容量 1 のトークンバケット、429 のクールダウンが利用できます(クラッシュにも安全です。プロセスが停止すると、そのロックはカーネルによって解放されます)。単一 MCP または STDIO のデプロイでは設定不要です。ディレクトリ変数が設定されていない限り、レート制限機構は無効です。
# docker-compose.yml (excerpt, all 4 USPTO MCP services)
volumes:
uspto-rate-limit: {}
services:
ptab-mcp:
volumes:
- uspto-rate-limit:/var/run/uspto-shared-rate-limit
environment:
USPTO_SHARED_RATE_LIMIT_DIR: /var/run/uspto-shared-rate-limit
USPTO_SHARED_RATE_LIMIT_RPS: "4" # default; total across ALL 4 MCPs
USPTO_SHARED_MAX_CONCURRENT: "1" # default; shared in-flight slots (burst=1 per key)
USPTO_SHARED_MAX_WAIT_SECONDS: "45" # default; queue wait ceiling
ディレクトリをマウントするすべてのプロセス間で、単一のキュー、単一のトークンバケット、単一の同時実行スロットが共有されます。待機中の呼び出しは到着順に処理されます。待機上限時間内にスロットを取得できない呼び出しには、レート制限エンベロープ(rate_limited: true、retry_after_seconds)が直ちに返されます。まずスロットを取得し、その後にトークンを取得するため、このキーを使った連続する 2 回の送信の間隔は常に少なくとも 1/RPS になります。いずれかのプロセスが 429 を受け取ると、cooldown.json(max(5 s, Retry-After))に記録され、すべてのプロセスがクールダウンの終了を待ちます。429 を受け取った呼び出しは、待機後の時間が 10 秒以下の場合に 1 回だけ再試行し、それ以外の場合はエンベロープを返します。ダウンロードプロキシは、スロットを保持したまま USPTO から PDF をバッファーします(PTAB_MAX_PDF_BYTESによる上限があります)。その後スロットを解放してから、バイトデータをユーザーに配信します。そのため、スロットの占有時間はユーザー側の接続速度ではなく、USPTO からの転送速度に左右されます。
OAuth サインイン(任意)
PTAB_AUTH_MODE=oauthを設定すると、Google および Microsoft のサインインで HTTP エンドポイントを保護できます(動的クライアント登録を伴う OAuth 2.1 — Claude.ai / Claude Desktop のカスタムコネクターとして動作します)。アクセスはローカルの SQLite ユーザーリストによって制御されます。adminロールでは、ユーザー管理ツールptab_manage_usersとその MCP App パネルが使用可能になります。デフォルト(none)と STDIO の動作は変更されません。詳しい手順はSSO_SETUP.mdをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
