Content
# Patent MCP Server 🔍
[](https://github.com/malkreide/patent-mcp-server/actions/workflows/ci.yml)
[](https://opensource.org/licenses/MIT)
[](https://www.python.org/downloads/)
Ein [Model Context Protocol](https://modelcontextprotocol.io/) Server für die **Patentrecherche** – entwickelt für das Schulamt der Stadt Zürich als Teil des MCP-Portfolios.
Ermöglicht KI-Agenten den strukturierten Zugriff auf **130+ Millionen Patentdokumente weltweit** über das [EPO Open Patent Services](https://developers.epo.org/) API sowie **Schweizer Patentdaten** direkt vom [IGE/Swissreg](https://www.swissreg.ch).
**Model-agnostisch** – funktioniert mit Claude Desktop, Cursor, Windsurf, VS Code + Continue, LibreChat, Cline und selbst-gehosteten Modellen via mcp-proxy.
## Was kann der Server?
### EPO Tools (weltweit, 130+ Mio. Dokumente)
| Tool | Funktion |
|------|----------|
| `patent_search` | Volltextsuche (Titel, Abstract, Klasse, Anmelder, Erfinder) |
| `patent_bibliography` | Bibliographische Daten: Titel, Anmelder, Erfinder, Abstract, Klassifikationen |
| `patent_abstract` | Zusammenfassung einer Erfindung (150-250 Wörter) |
| `patent_claims` | Patentansprüche – das rechtlich bindende Herzstück |
| `patent_description` | Technische Beschreibung / Spezifikation |
| `patent_family` | INPADOC-Patentfamilie – alle verwandten Anmeldungen weltweit |
| `patent_legal_status` | Rechtsstand (Ist das Patent noch in Kraft?) |
| `patent_register` | EP-Register-Informationen (Verfahrensstatus, benannte Staaten) |
### Schweizer Tools (IGE/Swissreg)
| Tool | Funktion |
|------|----------|
| `swiss_patent_search` | Volltextsuche in CH-Patenten und EP-Patenten mit Wirkung CH/LI |
| `swiss_patent_detail` | Detail-Abfrage direkt aus dem Schweizer Patentregister |
### Resources (via @-Mention)
- `patents://search-syntax` – EPO Suchsyntax-Referenz
- `patents://sources` – Übersicht Patentdatenquellen
- `patents://classification-guide` – CPC-Klassifikationssystem erklärt
### Prompts (Workflow-Vorlagen)
- `prior_art_search` – Systematische Stand-der-Technik-Recherche
- `technology_landscape` – Technologie-Landschaftsanalyse
- `patent_explained` – Patent in einfacher Sprache erklären
## Voraussetzungen
- **Python 3.10+** (3.12 empfohlen)
- **uv** für Dependency Management
- **EPO OPS API-Key** (kostenlos, 4 GB/Monat)
## Installation
### 1. Repository klonen
```bash
git clone https://github.com/schulamt-zh/patent-mcp-server.git
cd patent-mcp-server
```
### 2. Dependencies installieren
```bash
uv sync
```
### 3. EPO API-Key einrichten
1. Registriere dich kostenlos bei [EPO OPS](https://developers.epo.org/)
2. Erstelle unter "My Apps" eine neue Anwendung
3. Kopiere Consumer Key und Consumer Secret
```bash
cp .env.example .env
# Trage deine Keys in .env ein
```
### 4. Testen
```bash
uv run patent-mcp-server
# Sollte ausgeben: "Starting Patent MCP Server (EPO OPS + IGE)"
```
## Claude Desktop Konfiguration
Füge in `claude_desktop_config.json` hinzu:
```json
{
"mcpServers": {
"patents": {
"command": "uv",
"args": [
"--directory",
"/pfad/zu/patent-mcp-server",
"run",
"patent-mcp-server"
]
}
}
}
```
## Beispielabfragen
**Einfache Suche:**
> "Suche nach Patenten zu maschinellem Lernen in der Bildung"
→ Nutzt `patent_search` mit `ta=machine learning AND ta=education`
**Patent verstehen:**
> "Erkläre mir Patent EP3456789 in einfacher Sprache"
→ Nutzt `patent_bibliography` + `patent_abstract` + `patent_claims`
**Stand der Technik:**
> "Gibt es bereits Patente für einen KI-gestützten Stundenplan-Optimierer?"
→ Nutzt den `prior_art_search` Prompt-Workflow
**Rechtsstand prüfen:**
> "Ist das Patent CH712345 noch in Kraft?"
→ Nutzt `patent_legal_status`
## Datenquellen
| Quelle | Abdeckung | Auth | Kosten |
|--------|-----------|------|--------|
| **EPO OPS** | 130+ Mio. Dokumente weltweit | OAuth2 (Key+Secret) | Kostenlos (4 GB/Monat) |
| **IGE/Swissreg** | CH-Patente + EP mit Wirkung CH/LI | OpenID Connect | Kostenlos (Nutzungsbedingungen) |
| **Espacenet** | Selbe Daten wie EPO, Web-Interface | – | Kostenlos |
## Sicherheit
- **Read-Only**: Der Server liest nur Daten, er schreibt oder verändert nichts
- **Keine Personendaten**: Patentdaten sind öffentlich zugängliche Informationen
- **Rate Limiting**: Eingebautes Token-Management und Retry-Logik für EPO-Quotas
- **Kein Rechtsrat**: Der Server weist explizit darauf hin, dass Ergebnisse keine Rechtsberatung darstellen
## Architektur
```
Claude / LLM Host
│
▼
MCP Client (stdio / SSE)
│
▼
Patent MCP Server
│
├── EPO OPS API (OAuth2)
│ ├── Published Data Search
│ ├── Bibliography / Abstract / Claims / Description
│ ├── INPADOC Family
│ ├── INPADOC Legal Status
│ └── EP Register
│
└── IGE/Swissreg API (OpenID Connect)
├── PatentSearch
└── PatentDetail
```
## Entwicklung
### Tests ausführen
```bash
pip install -e ".[dev]"
python -m pytest tests/ -v
```
### Linting
```bash
ruff check .
ruff format --check .
```
### EPO Live-Smoke-Tests
```bash
# Voraussetzung: EPO Keys in .env
PYTHONPATH=. python tests/smoke_epo.py --verbose
```
## Lizenz
MIT
---
*Keine Rechtsberatung. Für verbindliche Auskünfte: [IGE](https://www.ige.ch) oder Patentanwalt.*