Skip to main content
Glama

IP-MCP

License: MIT Python 3.12+ MCP CI GitHub release

English · 日本語

Fragen Sie japanische Patente in natürlicher Sprache von Claude ab. IP-MCP kapselt die offizielle „Patent Information Retrieval API" des japanischen Patentamts als MCP-Server, sodass Claude Desktop, Claude Code und iPhone Claude Patentnummern auflösen, den Registrierungsstatus prüfen, Zitate abrufen und Fünf-Ämter-Familien durchlaufen können — 12 offizielle API-Tools plus 1 bewusst isoliertes Stichwortsuch-Tool.


Was Sie Claude in 30 Sekunden fragen können

Sie: „Sagen Sie mir den Registrierungsstatus und den Stand der Technik von JP-2010-228687."

Claude (unter der Haube):

  1. jpo_convert_patent_number → Anmeldenummer 2009080841

  2. jpo_get_patent_registration → Registrierung 5094774, Hitachi Ltd., läuft ab am 2029-03-30, aktiv

  3. jpo_get_patent_citations → 20 Referenzen zum Stand der Technik

Antwort: „Train Control Ground Equipment and System" (Hitachi Ltd.) wurde am 2012-09-28 als JP5094774 registriert, derzeit in Kraft, fällig am 2029-03-30. 20 Zitate zum Stand der Technik aus Recherchebericht und Zurückweisungsgründen, alle Patentliteratur (keine NPL)…

Die Stichwortsuche ist in ein separates Tool aufgeteilt (external_search_patents_by_keyword, Google Patents XHR). Das LLM kann niemals versehentlich von der offiziellen API auf die inoffizielle Quelle zurückfallen — jede Antwort trägt ein explizites source-Feld.


Related MCP server: MCP-ndl-search

Vergleich

J-PlatPat (manuelle Web-UI)

Handgebaute Flask-Wrapper

IP-MCP

Direkt auf Google Patents zugreifen

Datenquelle

Offiziell (JPO)

Offiziell (JPO)

Offiziell (JPO) + extern (optional)

Inoffiziell

Nummer umwandeln / Fortschritt / Registrierung / Zitate

✓ (von Hand)

✓

✓

❌

Stichwortsuche

✓

✓

△ (isoliertes externes Tool)

✓

Direkt von einem LLM aufrufbar

❌

❌ (REST + Parsing nötig)

✅ natives MCP

△ (HTML/JSON-Parsing nötig)

Offiziell vs. inoffiziell unterscheidbar

—

einzelne Quelle

✅ obligatorisches source-Feld

—

Automatischer Fallback

—

—

❌ verboten (das LLM entscheidet)

—

Authentifizierung

Sitzung

env

env oder OAuth 2.1 (DCR + PKCE)

keine

Bereitstellung

—

DIY

Docker Compose

—

Warum eine separate Tool-Kategorie für die Stichwortsuche?

Die offizielle JPO-API ist nur für Nummern-Lookups gedacht — jeder Endpunkt nimmt eine Anmelde-/Veröffentlichungs-/Registrierungsnummer, einen Anmeldercode oder einen exakt übereinstimmenden Anmeldernamen entgegen. Stichwort-/IPC-/F-Term-/Datumsbereich-/Teilnamenssuche existiert in der Spezifikation nicht. Deshalb:

  • tools_official/ — Namen beginnen mit jpo_*, Antwort ist {"source": "jpo_official", …}

  • tools_external/ — Namen beginnen mit external_*, Antwort ist {"source": "google_patents_unofficial", …}

  • Ein Grenztest verbietet jeden import von tools_external/ in tools_official/. Kein stiller Fallback — das LLM entscheidet, ob es die inoffizielle Quelle konsultiert.


Architektur

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

Kernentwurfsregeln:

  • tools_official/ (offizielles JPO) und tools_external/ (inoffizielles Google Patents) sind vollständig getrennt auf Code-Ebene, Aufrufstelle und Logger-Ebene. Ein Grenztest blockiert jeden import von tools_external/ in tools_official/.

  • Wiederholungen sind nur innerhalb derselben Datenquelle erlaubt (401 → Token-Refresh; 303 → exponentielles Backoff). Automatischer Quellen-übergreifender Fallback bei Fehlern ist verboten — das LLM entscheidet.

  • Jede Antwort trägt {"source": "jpo_official"} oder {"source": "google_patents_unofficial"}.


Schnellstart

Lokale Entwicklung

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

LAN-Bereitstellung (ohne Authentifizierung)

Erstellen Sie docker-compose.override.yml, um an Ihre LAN-Schnittstelle zu binden (das Repository enthält eine docker-compose.override.yml.example):

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

Claude Desktop / Code-Konfiguration:

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

Codex CLIs direkter HTTP-MCP (codex mcp add --url) erwartet Streamable HTTP, daher registrieren Sie den /mcp-Pfad, wenn Sie ihn direkt von Codex aus verwenden:

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-Clients registrieren /sse. Um Codex direktem HTTP und SSE-Clients vom selben öffentlichen Server zu bedienen, starten Sie mit MCP_TRANSPORT=both, um sowohl /mcp als auch /sse unter derselben OAuth-Konfiguration bereitzustellen. Für einen einzelnen Client funktioniert auch MCP_TRANSPORT=sse (Standard) oder MCP_TRANSPORT=streamable-http.

iPhone Claude / claude.ai (öffentlich, OAuth 2.1)

Für die öffentliche Bereitstellung ist die empfohlene Einrichtung Cloudflare Tunnel + Caddy (CF Origin Cert) — cloudflared wählt von Ihrem Heimnetzwerk aus zum CF-Edge, sodass kein Router-Port-Forwarding erforderlich ist und Hairpin-NAT kein Problem darstellt. Ein traditioneller Reverse-Proxy mit Let's Encrypt + direktem 443 funktioniert ebenfalls. Setzen Sie in jedem Fall MCP_OAUTH_MASTER_PASSWORD + MCP_OAUTH_ISSUER_URL, um OAuth 2.1 (DCR + PKCE + Master-Passwort-Zustimmung) zu aktivieren. Ausgestellte Client-Tokens werden in SQLite gespeichert und überleben Container-Neustarts.

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

Siehe PLAN.md §9-§10 und OPERATIONS.md für vollständige Bereitstellungs- und Betriebsdetails (derzeit auf Japanisch).


Tool-Liste

Name

Zweck

jpo_convert_patent_number

Zwischen Anmelde-/Veröffentlichungs-/Registrierungsnummern umwandeln

jpo_get_patent_progress

Prüfungsfortschritt (voll / einfach umschaltbar)

jpo_get_patent_registration

Registrierungsinformationen & Rechtsstatus

jpo_get_patent_citations

Zitierte Dokumente zum Stand der Technik

jpo_get_divisional_apps

Teilanmeldungen

jpo_get_priority_apps

Prioritätsbasierte Anmeldungen

jpo_lookup_applicant

Anmeldercode ⇄ Name (nur exakte Übereinstimmung)

jpo_get_patent_documents

Amtshandlungen / Zurückweisungsgründe / Änderungen (verarbeitet Inline-ZIP + signierte URLs)

jpo_get_jpp_url

Kanonische J-PlatPat-URL

jpo_get_opd_family

Fünf-Ämter-Patentfamilie (JPO / USPTO / EPO / CNIPA / KIPO)

jpo_get_opd_doc_list

OPD-Dokumentliste

jpo_fetch_full_record

Hochrangiger zusammengesetzter Aufruf, der auf mehrere offizielle Endpunkte verteilt (bleibt vollständig innerhalb der offiziellen API)

Antwort: {"ok": true, "source": "jpo_official", "data": {…}, "remaining_today": "…"}

Name

Zweck

external_search_patents_by_keyword

Freitext-/Anmelder-/IPC-/Datumsbereichssuche japanischer Patente (Google Patents XHR, Referenznutzung)

Antwort: {"ok": true, "source": "google_patents_unofficial", "data": {…}}

Isoliert, weil die offizielle API keine Stichwortsuche bietet (nur Nummern-Lookup). Bei Fehlern gibt sie {"ok": false, "kind": "search_unavailable"} zurück und fällt niemals auf ein offizielles Tool zurück.


Ratenbegrenzungen (Betrieb)

Die offizielle JPO-API überträgt die Verantwortung für die Selbstbegrenzung dem Betreiber:

  • Pro-Minuten-Rate: /api/patent/* ist 10 Anfragen/min, /opdapi/* ist 5 Anfragen/min (OPD wird separat in einem eigenen Bucket gezählt).

  • Tageskontingent: 30–800/Tag pro Endpunkt (nationale API-Kontingente wurden im März 2026 verdoppelt). Der maßgebliche Live-Zähler ist result.remainAccessCount, der in jeder Antwort zurückgegeben wird.

  • jpo_fetch_full_record verteilt auf 4 offizielle Endpunkte parallel, sodass ein Aufruf 1 Einheit von jedem von 4 separaten Tageskontingenten verbraucht (nicht 4 vom selben Kontingent). Der Engpass ist das jeweils niedrigste Kontingent.

Für die Tool-zu-Endpunkt-Zuordnung und betriebliche Schwellenwerte siehe OPERATIONS.md §JPO API レート制約とクォータ (Japanisch).


Dokumentation

  • 📐 PLAN.md — Designplan (Architektur, vollständige Tool-Liste, Phasenplan) [JP]

  • 🤖 CLAUDE.md — Claude Code-Anleitung (unverhandelbare Designregeln, JPO-API-Stolperfallen) [JP]

  • 🔧 OPERATIONS.md — Betriebsrunbook (Zugriffsprotokoll-Zusammenfassung, Master-Passwort-Rotation, Fehlerbehebung) [JP]


Platzhalter

Beispiel

So einstellen

YOUR_SERVER_IP

192.0.2.10

LAN-IP Ihres Bereitstellungshosts

<SSH_USER>

youruser

SSH-Benutzername auf dem Host

your-host.example.com

Ihre eigene Domain

Öffentlicher Hostname hinter Cloudflare / Ihrem Reverse-Proxy

Die Portbindung in docker-compose.yml ist standardmäßig 127.0.0.1:8765 (nur gleiche Maschine). Um sie im LAN verfügbar zu machen, erstellen Sie eine separate docker-compose.override.yml (bereits gitignored), um sie zu überschreiben.

Lizenz

MIT — siehe 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