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: Patent Intelligence MCP

比較

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_PASSWORDMCP_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_record4つの公式エンドポイントに並列展開するため、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を参照してください。

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
2Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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
    B
    quality
    D
    maintenance
    Enables Claude Desktop to interact with freee accounting API for expense registration, transaction management, and receipt image processing.
    15
    1
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Appeared in Searches

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kitepon/IP-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server