MCP-Server für KI-Agenten
Ein entfernter MCP-Server mit einem Werkzeug je Datensatz. Agenten schlagen Werte nach, statt sie zu schätzen, und zitieren die Quelle.
So funktioniert der Server
#Der MCP-Server unter https://mcp.quellenkontor.dev/v1 ist ein entfernter Server nach dem Model Context Protocol. Er spricht Streamable HTTP: Jede Anfrage ist ein JSON-RPC-Aufruf per POST, die Antwort kommt als JSON. Er hält keine Sitzungen, jede Anfrage steht für sich.
- Für jeden Datensatz gibt es ein Werkzeug, benannt nach dem Muster
hr_datensatz. - Alle Werkzeuge lesen nur. Sie sind als lesend, nicht verändernd und wiederholbar gekennzeichnet, viele Clients rufen sie deshalb ohne Rückfrage auf.
- Jedes Ergebnis beginnt mit einem fertigen Satz zum Zitieren, danach folgen die Daten als Text und als strukturiertes Objekt mit denselben Feldern wie die REST-API.
- Der Server gibt dem Agenten Regeln mit: Werte nachschlagen statt schätzen, fehlende Angaben erfragen, Rechtsgrundlage und Quelle zitieren. Derselbe Text steht als Prompt
quellenkontor_regelnbereit und unten zum Kopieren.
Einrichten
#Du brauchst einen Schlüssel aus dem Konto. Er wird als Header Authorization: Bearer qk_live_… mitgeschickt.
Claude Code
Mit einem Befehl im Terminal:
Oder als Datei .mcp.json im Projekt. Claude Code setzt ${QK_KEY} aus deiner Umgebung ein, der Schlüssel steht also nicht in der Datei:
Cursor
In ~/.cursor/mcp.json. Die Datei liegt in deinem Home-Verzeichnis, nicht im Projekt. Trag deinen Schlüssel direkt ein und leg die Datei nie in ein Repository:
VS Code
In .vscode/mcp.json. VS Code fragt den Schlüssel beim ersten Start ab und speichert ihn sicher:
Claude Desktop
Claude Desktop bindet entfernte Server mit festem Header über die Brücke mcp-remote ein, die per npx startet (Node.js nötig). In der Konfigurationsdatei von Claude Desktop:
Der Header steht ohne Leerzeichen nach dem Doppelpunkt, den Schlüssel liest mcp-remote aus der Variable AUTH_HEADER. Die Datei liegt auf deinem Rechner, leg sie nie in ein Repository.
Andere Clients
Getestet haben wir Claude Code, Cursor und VS Code. Jeder andere Client, der entfernte Server über Streamable HTTP mit eigenem Header anbinden kann, funktioniert mit diesen beiden Angaben: Adresse https://mcp.quellenkontor.dev/v1 und Header Authorization mit deinem Schlüssel.
Mit Claude.ai und ChatGPT verbinden (OAuth)
#Claude im Browser, Claude Desktop, die Claude-Apps und ChatGPT binden entfernte MCP-Server als Connector ein. Statt eines Schlüssels im Header nutzen sie OAuth: Du erlaubst den Zugriff einmal im Browser, danach fragt die Anwendung mit einem eigenen Schlüssel für dein Konto ab. Einen Schlüssel aus dem Konto brauchst du dafür nicht.
Claude
- Öffne in Claude die Connectors und füge einen eigenen Connector (Custom Connector) hinzu.
- Trag als Adresse
https://mcp.quellenkontor.dev/v1ein. Client-ID und Client-Secret bleiben leer, Claude registriert sich selbst. - Fragt der Dialog nach der Art der Anmeldung, wähle die Anmeldung per OAuth und nicht den Zugang ohne Anmeldung.
- Klick auf Verbinden. Es öffnet sich quellenkontor.dev: Melde dich an, prüf Anwendung, Weiterleitung und Konto und klick auf Erlauben.
Der Connector gilt danach in Claude im Browser, in Claude Desktop und in den Apps. In Team- und Enterprise-Organisationen legt ihn eine Person mit Adminrechten an, jedes Mitglied verbindet danach sein eigenes Konto.
ChatGPT
- Schalte in ChatGPT in den Einstellungen unter Apps den Entwicklermodus ein und leg eine eigene App mit MCP-Server an.
- Trag als Adresse
https://mcp.quellenkontor.dev/v1ein und wähle als Authentifizierung OAuth. ChatGPT registriert sich selbst, Client-ID und Secret brauchst du nicht. - ChatGPT öffnet danach quellenkontor.dev. Melde dich an und klick auf Erlauben.
Was bei der Anmeldung passiert
- Die Zustimmungsseite zeigt den Namen der Anwendung, die Adresse, an die Quellenkontor dich zurückschickt, dein Konto und deinen Tarif. Den Namen gibt die Anwendung selbst an, verlass dich auf die Adresse.
- Mit Erlauben legt Quellenkontor einen API-Schlüssel mit dem Namen „MCP: Name der Anwendung“ an und übergibt ihn der Anwendung. Er steht im Konto bei deinen anderen Schlüsseln und zählt zur Höchstzahl deines Tarifs.
- Werkzeugaufrufe über den Connector verbrauchen dasselbe Kontingent wie jede andere Abfrage.
initializeundtools/listgehen auch ohne Anmeldung, erst ein Werkzeugaufruf braucht den Schlüssel. - Der Schlüssel läuft nicht ab. Sperrst du ihn im Konto, antwortet der Server auf den nächsten Werkzeugaufruf mit 401. Claude fragt dann neu nach der Anmeldung, in ChatGPT verbindest du die App neu.
- Jede Verbindung legt einen eigenen Schlüssel an. Verbindest du eine Anwendung neu, sperr den alten Schlüssel im Konto, sonst ist die Höchstzahl schnell erreicht.
Technische Angaben
| Punkt | Angabe |
|---|---|
| Schutz-Metadaten (RFC 9728) | https://mcp.quellenkontor.dev/.well-known/oauth-protected-resource/v1 |
| Autorisierungsserver (RFC 8414) | https://mcp.quellenkontor.dev/.well-known/oauth-authorization-server |
| Endpunkte | /authorize, /token und /register auf mcp.quellenkontor.dev, die Zustimmungsseite auf quellenkontor.dev |
| Registrierung (RFC 7591) | dynamisch, als öffentlicher Client ohne Secret (token_endpoint_auth_method none) |
| Weiterleitungsadressen | https, oder http nur für localhost und 127.0.0.1, dort mit beliebigem Port |
| PKCE (RFC 7636) | Pflicht, nur S256 |
| resource (RFC 8707) | die Adresse des MCP-Servers, etwa https://mcp.quellenkontor.dev/v1 |
| Code | gilt 60 Sekunden und lässt sich einmal einlösen. Kommt er ein zweites Mal, sperrt Quellenkontor den Schlüssel dazu. |
| Token | ein API-Schlüssel qk_live_…, token_type Bearer, ohne Ablauf und ohne Refresh-Token |
| Antwort an die Anwendung | mit iss (RFC 9207) |
Alle Werkzeuge
#Das vollständige Eingabeschema jedes Werkzeugs steht in der Referenz des Datensatzes unter "Schema für MCP". Ein Agent bekommt es über tools/list.
Nur einzelne Bereiche laden
#Ein Bot für ein Thema braucht selten alle 24 Werkzeuge. Mit einem Zusatz an der Adresse liefert tools/list nur einen Teil, das spart Tokens und verhindert Verwechslungen:
| Adresse | Werkzeuge |
|---|---|
https://mcp.quellenkontor.dev/v1?bereiche=fristen,kalender | nur die Bereiche Arbeitsrecht und Fristen und Kalender |
https://mcp.quellenkontor.dev/v1?werkzeuge=hr_pausen,hr_arbeitstage | nur diese Werkzeuge, dazu hr_verlauf für ihre Tabellen |
Die Bereiche heißen lohn (Löhne und Grenzen), sozialversicherung (Sozialversicherung und Abgaben), steuer (Steuer und Reisekosten), fristen (Arbeitsrecht und Fristen), kalender (Kalender).
Systemprompt für deinen Bot
#Viele Chatbot-Frameworks reichen die Regeln des Servers nicht an das Modell weiter. Dann kopierst du sie in den Systemprompt deiner Anwendung:
Ein Aufruf im Detail
#So sieht ein Werkzeugaufruf auf dem Draht aus. Normalerweise erledigt das dein Client, zum Testen geht es auch mit curl:
Kontingent
#Ein Werkzeugaufruf mit Ergebnis zählt wie eine Abfrage der REST-API. Frei sind initialize, tools/list und Aufrufe mit fehlerhaften Argumenten. Den Stand nach jedem Aufruf findest du im Ergebnis unter _meta im Schlüssel quellenkontor.dev/kontingent, mit Limit, Verbrauch und Tarif.
Fehler
#| Situation | Antwort des Servers |
|---|---|
| Argument fehlt, hat das falsche Format oder ist unbekannt | Ergebnis mit isError: true, Meldung und betroffenem Parameter. Das Modell kann den Aufruf korrigieren. Zählt nicht. |
| Kein Wert für den Stichtag | Ergebnis mit isError: true und Code kein_wert. Zählt nicht. |
| Schlüssel fehlt oder ist gesperrt | HTTP 401 mit Header WWW-Authenticate samt resource_metadata und JSON-RPC-Fehler -32001. OAuth-Clients starten damit die Anmeldung. |
| Kontingent aufgebraucht | Ergebnis mit isError: true und Code kontingent_erreicht, dazu _meta mit dem Stand |
| Unbekanntes Werkzeug | JSON-RPC-Fehler -32602 |
| Unbekannte Methode | JSON-RPC-Fehler -32601 |
| Nicht unterstützte Protokollversion im Header MCP-Protocol-Version | HTTP 400 mit der Liste der unterstützten Versionen |
Protokoll und Grenzen
#- Unterstützte Protokollversionen: 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05. Der Server antwortet mit der Version, die der Client anfragt, sonst mit der neuesten.
- Methoden:
initialize,ping,tools/list,tools/call,prompts/listundprompts/get(Prompt quellenkontor_regeln).resources/listliefert eine leere Liste. - Kein Stream vom Server: GET auf die Adresse beantwortet der Server mit 405, Benachrichtigungen ohne id mit 202.
- Keine Sitzungen: Der Header Mcp-Session-Id wird nicht gebraucht.
Testen mit dem MCP Inspector
#Der MCP Inspector ist das offizielle Testwerkzeug des Protokolls. Er zeigt alle Werkzeuge mit Schema und lässt dich Aufrufe von Hand ausführen:
Im Inspector wählst du den Transport Streamable HTTP, trägst die Adresse https://mcp.quellenkontor.dev/v1 ein und setzt unter Authentication den Header Authorization mit Bearer qk_live_….
Beispielfragen an einen Agenten
#| Frage | Werkzeug |
|---|---|
| Wie hoch ist der Mindestlohn ab dem 1. Januar 2027, und was heißt das für die Minijob-Grenze? | hr_mindestlohn |
| Eintritt am 1. März 2017, Kündigung durch den Arbeitgeber am 10. November 2026 zugegangen. Wann endet das Arbeitsverhältnis? | hr_kuendigungsfrist |
| Wie viele Arbeitstage hat der Januar 2027 in Bayern? | hr_arbeitstage |
| Welche Beitragsbemessungsgrenze gilt 2026 in der Rentenversicherung? | hr_rechengroessen |
| Wie viel Urlaub steht bei einer Drei-Tage-Woche gesetzlich zu? | hr_urlaubsanspruch |
| Welchen geldwerten Vorteil hat mein E-Dienstwagen für 62.000 Euro? (Der Agent fragt nach dem Anschaffungsdatum.) | hr_dienstwagen |
| Mein Mitarbeiter arbeitet am 1. Mai 2027, Grundlohn 20 Euro. Wie viel Zuschlag ist steuerfrei? | hr_sfn_zuschlaege |
| Wie hoch ist der Grundfreibetrag 2027? (Die Antwort ist vorläufig, bis das Steuergesetz verkündet ist.) | hr_einkommensteuer_eckwerte |
| Wann erreicht der Jahrgang 1962 die Regelaltersgrenze? | hr_regelaltersgrenze |
Ein guter Agent nennt in der Antwort die Rechtsgrundlage und die Quelle aus dem Ergebnis, fragt nach fehlenden Angaben und sagt, wenn ein Wert noch vorläufig ist. Wenn deine Anwendung eigene Anweisungen an das Modell gibt, schreib hinein, dass HR-Werte nur aus den Werkzeugen kommen dürfen.
Fehlt etwas oder ist etwas unklar? Schreib uns, wir ergänzen die Doku.