MCP server for Swiss intellectual property data (trademarks, patents, SPC) via the IGE/IPI Swissreg API
Project description
swiss-ip-mcp
MCP-Server für Schweizer Immaterialgüterrechts-Daten (IGE/IPI)
🇬🇧 English version → README_EN.md
Übersicht
swiss-ip-mcp ist ein Model Context Protocol (MCP)-Server, der KI-Modellen strukturierten, sprachgesteuerten Zugriff auf das Schweizer Schutzrechtsregister Swissreg des Eidgenössischen Instituts für Geistiges Eigentum (IGE/IPI) ermöglicht.
Er ist der Nachfolger von patent-mcp und deckt alle verfügbaren Domänen der Swissreg Datadelivery API ab: Marken, Patente, Patentpublikationen und Ergänzende Schutzzertifikate (ESZ/SPC).
Dieser Server ist modell-agnostisch. Er funktioniert mit Claude, GPT-4, Llama und jedem anderen MCP-kompatiblen Client – nicht nur mit Claude Desktop.
Anwendungsbeispiele
Die eigentliche Stärke liegt in der Sprachsteuerung. Statt manuell im Register zu suchen, stellt man einfach eine Frage:
«Welche Marken hat die Stadt Zürich beim IGE eingetragen?»
«Ist der Name ‹Lernstadt Zürich› als Marke in der Schweiz geschützt?»
«Welche Unternehmen aus der Pharmabranche haben in den letzten sechs Monaten Schweizer Patente eingereicht?»
«Zeig mir alle Markenanmeldungen im Bildungsbereich (Nizza-Klasse 41) seit Januar 2025.»
«Welche ergänzenden Schutzzertifikate hält Novartis in der Schweiz?»
Abgedeckte Domänen
| Domäne | Beschreibung |
|---|---|
| Marken | Schweizer Markenregister – Anmeldung, Schutz, Inhaber, Nizza-Klassen |
| Patente | CH-Patente – Anmeldung, Erteilung, IPC-Klassen, Anmelder, Erfinder |
| Patentpublikationen | Offizielle Patentpublikationen im Schweizerischen Bundesblatt |
| ESZ / SPC | Ergänzende Schutzzertifikate für Arzneimittel und Pflanzenschutzmittel |
Hinweis: Eine Designsuche ist in der Swissreg Datadelivery API noch nicht verfügbar.
Tools (11)
| Tool | Funktion |
|---|---|
swiss_ip_search_trademarks |
Markensuche nach Freitext (Wildcard * möglich) |
swiss_ip_get_trademark |
Marke anhand Registernummer abrufen |
swiss_ip_search_trademarks_by_owner |
Alle Marken eines Inhabers finden |
swiss_ip_search_trademarks_by_class |
Marken nach Nizza-Klasse filtern |
swiss_ip_search_patents |
Patentsuche nach Freitext |
swiss_ip_get_patent |
Patent anhand Nummer abrufen |
swiss_ip_search_patents_by_applicant |
Patente eines Anmelders oder Erfinders finden |
swiss_ip_search_patent_publications |
Patentpublikationen durchsuchen |
swiss_ip_search_spc |
ESZ/SPC-Suche (Pharma und Pflanzenschutz) |
swiss_ip_search_recent_filings |
Eintragungen nach Datumsbereich filtern (alle Domänen) |
swiss_ip_get_quota |
Verbleibendes API-Datenkontingent prüfen |
Architektur
KI-Client (Claude Desktop, Cursor, VS Code + Continue, …)
│
│ MCP (stdio oder SSE)
▼
swiss-ip-mcp
│
│ HTTPS + OAuth2 (IGE IDP)
▼
Swissreg Datadelivery API
https://www.swissreg.ch/public/api/v1
│
├── TrademarkSearch
├── PatentSearch
├── PatentPublicationSearch
├── SPCSearch
└── UserQuota
Transportmodi
| Transport | Einsatz | Konfiguration |
|---|---|---|
| stdio | Claude Desktop, lokale Entwicklung | Standard (kein Zusatzaufwand) |
| SSE | Cloud-Deployment, Render.com | MCP_TRANSPORT=sse |
Voraussetzungen
- IGE-Zugangsdaten (kostenlos): Die Nutzungsbedingungen unterschreiben und per Post an das IGE senden. Nach Eingang erhält man Benutzername und Passwort.
- Python 3.11 oder neuer
uv(empfohlen) oderpip
Installation
# Direkt ausführen mit uv (empfohlen, keine lokale Installation nötig)
uvx swiss-ip-mcp
# Lokale Entwicklungsinstallation
git clone https://github.com/malkreide/swiss-ip-mcp
cd swiss-ip-mcp
pip install -e ".[dev]"
Konfiguration
Umgebungsvariablen
export IGE_USERNAME="dein_benutzername"
export IGE_PASSWORD="dein_passwort"
Claude Desktop
Datei öffnen:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"swiss-ip": {
"command": "uvx",
"args": ["swiss-ip-mcp"],
"env": {
"IGE_USERNAME": "dein_benutzername",
"IGE_PASSWORD": "dein_passwort"
}
}
}
}
Cloud / Render.com (SSE-Transport)
MCP_TRANSPORT=sse PORT=8000 IGE_USERNAME=... IGE_PASSWORD=... swiss-ip-mcp
Tests
# Unit-Tests (ohne Zugangsdaten)
PYTHONPATH=src pytest tests/ -v
# Mit Live-Tests gegen die echte API
IGE_USERNAME=... IGE_PASSWORD=... PYTHONPATH=src pytest tests/ -v
Der CI-Workflow läuft auf Python 3.11, 3.12 und 3.13.
Verwandte Server
| Server | Inhalt |
|---|---|
zurich-opendata-mcp |
Stadt Zürich Open Data (CKAN, Wetter, Parking, Geodaten) |
fedlex-mcp |
Schweizer Bundesrecht via Fedlex SPARQL |
swiss-transport-mcp |
ÖV-Daten, Störungen, Billette, Zugformationen |
swiss-road-mobility-mcp |
Shared Mobility, E-Ladestationen, Verkehrsdaten |
global-education-mcp |
UNESCO / OECD Bildungsdaten |
patent-mcp |
⚠️ Veraltet – durch diesen Server ersetzt |
Lizenz
MIT © 2026 malkreide
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file swiss_ip_mcp-1.0.0.tar.gz.
File metadata
- Download URL: swiss_ip_mcp-1.0.0.tar.gz
- Upload date:
- Size: 17.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5c1573c3b304a560b355756601f37ca953b224cae206fc4c9760ff583f08f1a1
|
|
| MD5 |
cbe727ae4eda83c7de96a76a2fdc891d
|
|
| BLAKE2b-256 |
227f8ae1e8af41b923c4bd842a98d69e26b8741f3d373a053c965809edc96bc7
|
Provenance
The following attestation bundles were made for swiss_ip_mcp-1.0.0.tar.gz:
Publisher:
publish.yml on malkreide/swiss-ip-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
swiss_ip_mcp-1.0.0.tar.gz -
Subject digest:
5c1573c3b304a560b355756601f37ca953b224cae206fc4c9760ff583f08f1a1 - Sigstore transparency entry: 1194544800
- Sigstore integration time:
-
Permalink:
malkreide/swiss-ip-mcp@72aa0e5f72ce2a4e20715a133a8d27ef9a73c1d9 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/malkreide
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@72aa0e5f72ce2a4e20715a133a8d27ef9a73c1d9 -
Trigger Event:
release
-
Statement type:
File details
Details for the file swiss_ip_mcp-1.0.0-py3-none-any.whl.
File metadata
- Download URL: swiss_ip_mcp-1.0.0-py3-none-any.whl
- Upload date:
- Size: 12.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
edaa6cae34f77ba6eb0c5143f806695c8c37818b5a5d0abd8263e17b291f74d5
|
|
| MD5 |
06ae7c7ed448f169b24558b24e9bf475
|
|
| BLAKE2b-256 |
a122da72d21dd1aba4c5d9b85549d79c23b6cd29b978904447515f39c5d905a5
|
Provenance
The following attestation bundles were made for swiss_ip_mcp-1.0.0-py3-none-any.whl:
Publisher:
publish.yml on malkreide/swiss-ip-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
swiss_ip_mcp-1.0.0-py3-none-any.whl -
Subject digest:
edaa6cae34f77ba6eb0c5143f806695c8c37818b5a5d0abd8263e17b291f74d5 - Sigstore transparency entry: 1194544808
- Sigstore integration time:
-
Permalink:
malkreide/swiss-ip-mcp@72aa0e5f72ce2a4e20715a133a8d27ef9a73c1d9 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/malkreide
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@72aa0e5f72ce2a4e20715a133a8d27ef9a73c1d9 -
Trigger Event:
release
-
Statement type: