Skip to main content
Glama

IP-MCP

License: MIT Python 3.12+ MCP CI GitHub release

English · 日本語

Claudeから自然言語で日本の特許を検索できます。 IP-MCPは、特許庁公式の「特許情報取得API」をMCPサーバーとしてラップし、Claude Desktop、Claude Code、iPhone版Claudeから特許番号の解決、登録状況の確認、引用文献の取得、五大庁ファミリーの参照が可能です。公式APIツール12個に加え、意図的に分離されたキーワード検索ツール1個を提供します。


30秒でClaudeに聞けること

あなた: 「JP-2010-228687の登録状況と先行技術を教えて。」

Claude(内部の処理):

  1. jpo_convert_patent_number → 出願番号 2009080841

  2. jpo_get_patent_registration → 登録番号5094774、株式会社日立製作所、2029-03-30満了、存続中

  3. jpo_get_patent_citations → 先行技術文献20件

回答: 「列車制御地上装置およびシステム」(株式会社日立製作所)は2012-09-28にJP5094774として登録され、現在有効、2029-03-30に満了予定です。調査報告書および拒絶理由から先行技術引用20件、すべて特許文献(非特許文献なし)…

キーワード検索は別ツール(external_search_patents_by_keyword、Google Patents XHR)に分離されています。LLMが公式APIから非公式ソースへ誤ってフォールバックすることは絶対にありません。すべてのレスポンスには明示的なsourceフィールドが付与されます。


Related MCP server: MCP-ndl-search

比較

J-PlatPat(手動Web UI)

自作Flaskラッパー

IP-MCP

Google Patents直接利用

データソース

公式(JPO)

公式(JPO)

公式(JPO)+外部(任意)

非公式

番号変換/進行/登録/引用

✓(手動)

✓

✓

❌

キーワード検索

✓

✓

△(分離された外部ツール)

✓

LLMから直接呼び出し可能

❌

❌(REST+パース処理が必要)

✅ ネイティブMCP

△(HTML/JSONパースが必要)

公式と非公式の区別

—

単一ソース

✅ 必須のsourceフィールド

—

自動フォールバック

—

—

❌ 禁止(LLMが判断)

—

認証

セッション

env

envまたはOAuth 2.1(DCR+PKCE)

なし

デプロイ

—

DIY

Docker Compose

—

キーワード検索を別ツールカテゴリにする理由

公式JPO APIは番号検索のみです。すべてのエンドポイントは出願/公開/登録番号、出願人コード、または完全一致の出願人名を受け取ります。キーワード/IPC/Fターム/日付範囲/部分一致検索は仕様に存在しません。そこで:

  • tools_official/ — ツール名はjpo_*で始まり、レスポンスは{"source": "jpo_official", …}

  • tools_external/ — ツール名はexternal_*で始まり、レスポンスは{"source": "google_patents_unofficial", …}

  • 境界テストにより、tools_external/からtools_official/へのimportは禁止されています。サイレントフォールバックなし — 非公式ソースを参照するかどうかはLLMが判断します。


アーキテクチャ

flowchart LR
    User["Claude Desktop /<br/>Claude Code /<br/>iPhone Claude"]
    CF["Cloudflare<br/>(Edge TLS + Tunnel)"]
    Caddy["Caddy<br/>(CF Origin Cert)"]

    User -->|"HTTPS + OAuth"| CF
    CF -->|"outbound from home<br/>via cloudflared"| Caddy
    Caddy -->|"http+SSE"| MCP

    subgraph Docker["Docker container (Python 3.12 + FastMCP)"]
      MCP["MCP server<br/>:8765"]
      Official["tools_official/<br/>(jpo_* 12 tools)"]
      External["tools_external/<br/>(external_* 1 tool)"]
      OAuth["OAuth 2.1<br/>SQLite-backed"]
      MCP --> Official
      MCP --> External
      MCP -.->|"persisted"| OAuth
    end

    Official -->|"OAuth2 password grant"| JPO[("JPO Patent API")]
    External -->|"3s spacing + 503 backoff"| GP[("Google Patents XHR")]

    classDef boundary stroke-dasharray: 5 5
    class External,GP boundary

中核となる設計ルール:

  • tools_official/(公式JPO)とtools_external/(非公式Google Patents)は、コード階層、呼び出し箇所、ロガーレベルで完全に分離されています。境界テストにより、tools_external/からtools_official/へのimportはブロックされます。

  • リトライは同じデータソース内でのみ許可されます(401→トークン更新、303→指数バックオフ)。失敗時のソース間の自動フォールバックは禁止されています — LLMが判断します。

  • すべてのレスポンスには{"source": "jpo_official"}または{"source": "google_patents_unofficial"}が付与されます。


クイックスタート

ローカル開発

cp .env.example .env          # Fill in JPO_USERNAME / JPO_PASSWORD
chmod 600 .env
docker compose up -d --build

LANデプロイ(認証なし)

docker-compose.override.ymlを作成してLANインターフェースにバインドします(リポジトリにはdocker-compose.override.yml.exampleが同梱されています):

services:
  ip-mcp:
    ports:
      - "YOUR_SERVER_IP:8765:8765"   # your LAN IP

Claude Desktop / Codeの設定:

{
  "mcpServers": {
    "ip-mcp": {
      "transport": { "type": "sse", "url": "http://YOUR_SERVER_IP:8765/sse" }
    }
  }
}

Codex CLIの直接HTTP MCP(codex mcp add --url)はStreamable HTTPを期待するため、Codexから直接使用する場合は/mcpパスを登録します:

CODEX_HOME=/path/to/codex-home codex mcp add ip-mcp --url https://your-host.example.com/mcp
CODEX_HOME=/path/to/codex-home codex mcp login ip-mcp

SSEクライアントは/sseを登録します。Codex直接HTTPとSSEクライアントの両方を同じ公開サーバーで提供するには、MCP_TRANSPORT=bothで起動して、同じOAuth設定の下で/mcpと/sseの両方を公開します。単一クライアントの場合は、MCP_TRANSPORT=sse(デフォルト)またはMCP_TRANSPORT=streamable-httpでも動作します。

iPhone版Claude / claude.ai(公開、OAuth 2.1)

公開公開にはCloudflare Tunnel+Caddy(CF Origin Cert)の構成が推奨されます — cloudflaredが自宅ネットワークからCFエッジへ発信接続するため、ルーターのポートフォワーディングは不要で、ヘアピンNATの問題もありません。Let's Encrypt+直接443を使用した従来のリバースプロキシでも動作します。いずれの場合も、MCP_OAUTH_MASTER_PASSWORD+MCP_OAUTH_ISSUER_URLを設定してOAuth 2.1(DCR+PKCE+マスターパスワード同意)を有効にします。発行されたクライアントトークンはSQLiteに永続化され、コンテナ再起動後も保持されます。

MCP_OAUTH_MASTER_PASSWORD=<24+ chars random>
MCP_OAUTH_ISSUER_URL=https://your-host.example.com
# optional: MCP_OAUTH_DB_PATH=/app/data/oauth.db

完全なデプロイ+運用の詳細はPLAN.md §9-§10およびOPERATIONS.mdを参照してください(現在は日本語のみ)。


ツール一覧

名前

目的

jpo_convert_patent_number

出願/公開/登録番号の相互変換

jpo_get_patent_progress

審査進行状況(詳細/簡易切替)

jpo_get_patent_registration

登録情報と権利状況

jpo_get_patent_citations

引用された先行技術文献

jpo_get_divisional_apps

分割出願

jpo_get_priority_apps

優先権主張出願

jpo_lookup_applicant

出願人コード⇄名称(完全一致のみ)

jpo_get_patent_documents

拒絶理由通知/意見書/補正書(インラインZIP+署名付きURL対応)

jpo_get_jpp_url

J-PlatPat正規URL

jpo_get_opd_family

五大庁特許ファミリー(JPO/USPTO/EPO/CNIPA/KIPO)

jpo_get_opd_doc_list

OPD文書一覧

jpo_fetch_full_record

複数の公式エンドポイントに展開する高レベル複合ツール(公式API内に完全に留まる)

レスポンス: {"ok": true, "source": "jpo_official", "data": {…}, "remaining_today": "…"}

名前

目的

external_search_patents_by_keyword

日本語特許のフリーテキスト/権利者/IPC/日付範囲検索(Google Patents XHR、参考用)

レスポンス: {"ok": true, "source": "google_patents_unofficial", "data": {…}}

公式APIにはキーワード検索がない(番号検索のみ)ため分離されています。失敗時は{"ok": false, "kind": "search_unavailable"}を返し、公式ツールへのフォールバックは絶対にしません。


レート制限(運用)

公式JPO APIは自己スロットリングの責任を運用者に委ねています:

  • 分単位レート: /api/patent/*は10 req/min、/opdapi/*は5 req/min(OPDは独自のバケットで別途カウント)。

  • 日次クォータ: エンドポイントごとに30〜800/日(2026年3月に国別APIクォータが2倍に増加)。権威あるライブカウンターはresult.remainAccessCountで、すべてのレスポンスで返されます。

  • jpo_fetch_full_recordは4つの公式エンドポイントに並列展開するため、1回の呼び出しで4つの別々の日次クォータからそれぞれ1単位を消費します(同じクォータから4単位ではありません)。ボトルネックは最も低いクォータです。

ツールとエンドポイントの対応および運用上のしきい値については、OPERATIONS.md §JPO API レート制約とクォータ(日本語)を参照してください。


ドキュメント

  • 📐 PLAN.md — 設計計画(アーキテクチャ、全ツール一覧、段階的計画)[JP]

  • 🤖 CLAUDE.md — Claude Codeガイド(譲れない設計ルール、JPO APIの落とし穴)[JP]

  • 🔧 OPERATIONS.md — 運用ランブック(アクセスログ集計、マスターパスワードのローテーション、トラブルシューティング)[JP]


プレースホルダー

例

設定方法

YOUR_SERVER_IP

192.0.2.10

デプロイホストのLAN IP

<SSH_USER>

youruser

ホスト上のSSHユーザー名

your-host.example.com

ご自身のドメイン

Cloudflare/リバースプロキシの背後にある公開ホスト名

docker-compose.ymlのポートバインドはデフォルトで127.0.0.1:8765(同一マシンのみ)です。LANで公開するには、別のdocker-compose.override.yml(すでにgitignore済み)を作成して上書きします。

ライセンス

MIT — LICENSEを参照してください。

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables natural language search of Japan's National Diet Library bibliographic database via Claude Desktop, allowing users to find books and academic materials using intuitive Japanese queries.
    6
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables Claude to search and retrieve patent data from EPO OPS and Google Patents via natural language, supporting patent search, details, claims, and family information with OAuth authentication.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables conversational patent data analysis through a set of tools for trend analysis, clustering, word cloud generation, and more. Allows natural language queries to explore patent datasets with structured results and visualizations.
    1
    AGPL 3.0

Appeared in Searches