IP-MCP
IP-MCP
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):
jpo_convert_patent_number→ Anmeldenummer2009080841
jpo_get_patent_registration→ Registrierung 5094774, Hitachi Ltd., läuft ab am 2029-03-30, aktiv
jpo_get_patent_citations→ 20 Referenzen zum Stand der TechnikAntwort: „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 | — |
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 mitjpo_*, Antwort ist{"source": "jpo_official", …}tools_external/— Namen beginnen mitexternal_*, Antwort ist{"source": "google_patents_unofficial", …}Ein Grenztest verbietet jeden
importvontools_external/intools_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 boundaryKernentwurfsregeln:
tools_official/(offizielles JPO) undtools_external/(inoffizielles Google Patents) sind vollständig getrennt auf Code-Ebene, Aufrufstelle und Logger-Ebene. Ein Grenztest blockiert jedenimportvontools_external/intools_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 --buildLAN-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 IPClaude 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-mcpSSE-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.dbSiehe PLAN.md §9-§10 und OPERATIONS.md für vollständige Bereitstellungs- und Betriebsdetails (derzeit auf Japanisch).
Tool-Liste
Name | Zweck |
| Zwischen Anmelde-/Veröffentlichungs-/Registrierungsnummern umwandeln |
| Prüfungsfortschritt (voll / einfach umschaltbar) |
| Registrierungsinformationen & Rechtsstatus |
| Zitierte Dokumente zum Stand der Technik |
| Teilanmeldungen |
| Prioritätsbasierte Anmeldungen |
| Anmeldercode ⇄ Name (nur exakte Übereinstimmung) |
| Amtshandlungen / Zurückweisungsgründe / Änderungen (verarbeitet Inline-ZIP + signierte URLs) |
| Kanonische J-PlatPat-URL |
| Fünf-Ämter-Patentfamilie (JPO / USPTO / EPO / CNIPA / KIPO) |
| OPD-Dokumentliste |
| 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 |
| 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_recordverteilt 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 |
|
| LAN-IP Ihres Bereitstellungshosts |
|
| SSH-Benutzername auf dem Host |
| 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.
This server cannot be deployed
Maintenance
Related MCP Connectors
Patent search, USPTO data, patent landscape & pgvector prior-art search for agents.
EPO/USPTO search, citations, OCR, plus PATSTAT Portfolio Analytics, guarded SQL and Graph Analytics.
- platform7nOAuthtech.p7n
Connect Claude to your Platform7n workspaces — chat, links, and tasks. One-click OAuth.
AI-optimized patent data marketplace providing structured JSON datasets.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceEnables AI agents to perform patent search, portfolio analysis, technology trend tracking, and semantic prior-art search using USPTO data.MIT
- FlicenseNot gradedqualityDmaintenanceEnables 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-
- AlicenseNot gradedqualityDmaintenanceEnables 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
- AlicenseNot gradedqualityBmaintenanceEnables 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.1AGPL 3.0