kaigo-gap
kaigo_mcp
Ein MCP-Server, der japanische Pflege-Angebots- und Nachfragedaten als Werkzeug für KI-Agenten bereitstellt.
Wenn man sich von Claude Code oder Claude Desktop verbindet, kann man auf Basis öffentlicher Daten beantworten, ob in dieser Stadt genügend Spezialpflegeheime vorhanden sind.
Status: Phase 1 (Server-Kern) funktioniert. Agent-Kern und Eval sind noch nicht begonnen.
Was es tut
MCP (Model Context Protocol) ist ein Standard, um LLMs mit Werkzeugen auszustatten. Dieses Repository erstellt die Werkzeugseite und enthält kein LLM selbst. Der Server ruft allein keine APIs auf und verursacht keine Kosten.
[考える側] [このリポジトリ]
Claude Code / 自作エージェント ←stdio→ kaigo-gap サーバー
「どの道具を使うか」を判断 呼ばれたらデータを返すWerkzeuge
Werkzeug | Zweck |
| Nationaler Basiswert. Voraussetzung zur Bewertung einzelner Zahlen. |
| Ruft Angebot und Nachfrage über Stadt-/Gemeindenamen oder Versicherungsname ab. |
| Sortiert nach Mangel (bzw. Deckung) an Spezialpflegeheimen. |
Der Hauptindikator ist die Anzahl der Spezialpflegeheim-Plätze pro 100 anerkannte Personen mit Pflegegrad 3 oder höher (landesweit 24,6, Median 26,7). Definition und Quellen befinden sich auf der Seite von kaigo_gap_analysis.
Aggregation wird hier nicht geschrieben
Die Daten werden von Plan 4 (kaigo_gap_analysis) mit export_web.py exportiert und vom öffentlichen Dashboard bereitgestellt. Wir kopieren und verwenden dieselbe insurers.json. Hier wird keine Division neu geschrieben.
Wenn die Definition des Indikators an zwei Stellen liegt, kann man bei Abweichungen zwischen der Antwort des Agenten und den Zahlen des Dashboards nicht mehr feststellen, welche richtig ist. Da dataset.py von Plan 4 nach dem Prinzip „eine Definition an einer Stelle“ geschrieben ist, halten wir das über die Grenzen hinweg ein. Aktualisierung erfolgt mit python scripts/sync_data.py.
Worauf beim Design der Werkzeuge geachtet wurde
Nur Zahlen zurückzugeben reicht nicht zur Beurteilung. Selbst wenn man „12,4“ übergibt, weiß das LLM nicht, ob das hoch oder niedrig ist. Deshalb sind der nationale Rang und der nationale Wert in der Beschreibung des Werkzeugs enthalten.
Gleichnamige Gemeinden nicht auf eine einzige festlegen. „Fuchū-shi“ gibt es in Tokio und in der Präfektur Hiroshima. Beide Kandidaten werden zurückgegeben, die Eingrenzung überlassen wir dem Aufrufer.
Eine Spezialpflegeheim-Kapazität von 0 nicht als „landesweit letzter Platz“ interpretieren lassen. Es gibt 90 betroffene Versicherer, die alle gleichauf auf Platz 1 liegen. Die Anzahl der Gleichstände muss immer mitgeliefert werden, und zusätzlich ein Hinweis: „In kleinen Gemeinden ist das nicht ungewöhnlich; die Bewohner nutzen oft Einrichtungen in Nachbargemeinden.“ Ohne diesen Hinweis würde aus dem Ergebnis von rank_insurers die falsche Schlussfolgerung entstehen, dass „Shingō-mura die schlechteste Region des Landes“ sei.
Wenn man das Domänenwissen nicht in die Antworten der Werkzeuge einbettet, tritt derselbe Fehlschluss bei jedem Modellwechsel auf der Aufruferseite erneut auf. Deshalb wird es nicht im Prompt, sondern auf der Werkzeugseite platziert.
Verwendung
pip install -r requirements.txt
python scripts/sync_data.py # 案4からデータを取り込む
python scripts/smoke_test.py # 通信の疎通確認Um es von Claude Code aus zu verwenden, genügt es, in diesem Verzeichnis zu starten; dann wird .mcp.json gelesen. Für die Registrierung in anderen Clients die folgende Konfiguration:
{
"mcpServers": {
"kaigo-gap": {
"command": "python",
"args": ["-m", "kaigo_mcp"],
"cwd": "C:\projects\kaigo_mcp"
}
}
}Agent (Phase 2, bis zur Funktionsprüfung)
python -m kaigo_mcp.agent --list
python -m kaigo_mcp.agent "尼崎市は特養が足りてる?" --verboseDie Werkzeuge werden über den MCP-Server aufgerufen (keine direkten Funktionsimporte). Wenn man es mit Import erledigt, läuft es nicht über MCP, und die Behauptung „einen MCP-Server erstellt zu haben“ wäre nicht verifizierbar.
Die vier zu vergleichenden Spalten
Spalte | Modell | Ort | Kosten pro Frage |
A | qwen2.5:7b | Hauptrechner (CPU) | 0 Yen |
B | Qwen3.5 9B | RTX 5050 8GB | 0 Yen |
C | Qwen3-235B | DeepInfra | ca. 0,11 Yen |
D | Claude Haiku 4.5 | Anthropic | ca. 1,7 Yen |
B und C sind beide aus der Qwen-Familie. Dadurch lässt sich der Unterschied B→C als „Effekt nur der Modellgröße“, C→D als „Unterschied der Modellfamilie“ und A→B als „Effekt von Hardware und Generation“ lesen.
Es wird nur eine einzige Schleife geschrieben. Wenn man für eine Seite den SDK-Tool-Runner und für die andere eine handgeschriebene Schleife verwendet, lässt sich nicht mehr trennen, ob die Unterschiede zwischen den Spalten auf das Modell oder auf die Schleifenimplementierung zurückgehen. Das Backend ist nur für die Umwandlung des Verlaufs zuständig.
Messungen (Spalte A und B)
Je 6 Läufe, gemessen mit python scripts/probe_tool_calling.py.
Spalte A qwen2.5:7b (CPU) | Spalte B qwen3.5:9b (RTX 5050 8GB) | |
Erfolgsquote Werkzeugaufruf (Standardtemperatur) | 4/6 = 67% | 6/6 = 100% |
Erfolgsquote Werkzeugaufruf (Temperatur 0) | 6/6 = 100% | 6/6 = 100% |
Befolgung der Anweisung (wurde der Basiswert zuerst abgerufen?) | 0/6 = 0% | 6/6 = 100% |
Pro Lauf (nach dem Aufwärmen) | 7,6 s | muss neu gemessen werden |
Dass Temperatur 0 nötig ist, war nur dem 7B eigen
Bei qwen2.5:7b bricht bei Standardtemperatur das Start-Tag von <tool_call> (es werden ein paar Zeichen wie olith pering vorangestellt), sodass der ollama-Parser es nicht erkennt und der Aufruf in den Fließtext ausläuft. Erkennbar daran, dass nur das schließende Tag </tool_call> übrig bleibt. Mit Temperatur 0 verschwindet das.
Bei qwen3.5:9b sind es auch bei Standardtemperatur 6/6. Dieses Fehlverhalten ist kein allgemeines Problem lokaler Ausführung, sondern spezifisch für Generation und Größe dieses Modells.
Der größere Unterschied liegt darin, ob Anweisungen befolgt werden
Das Systemprompt weist an: „Bevor du antwortest, prüfe den nationalen Basiswert mit get_national_baseline.“ Das 9B folgt in 6/6 Fällen, das 7B in 0/6 Fällen, also nie. Außerdem ruft das 9B zwei Werkzeuge in einem Schritt parallel auf.
Dass das 7B die richtige Antwort liefern konnte, lag daran, dass es den im Werkzeugtext eingebetteten nationalen Wert (24,6) aufgriff, aber es befolgte die angewiesene Vorgehensweise nicht. Es ist also kein Unterschied in der Stabilität, sondern in der Befolgung von Anweisungen, und das wirkt sich umso stärker aus, je mehr Werkzeuge vorhanden sind.
Grenzen dieses Vergleichs
Bei A→B ändern sich Hardware und Modellgeneration gleichzeitig, daher lässt sich nicht trennen, ob die Verbesserung auf die GPU oder auf das 9B zurückgeht. Zur Trennung müsste man qwen2.5:7b auch auf der GPU-Maschine laufen lassen (kostenlos, wenige Minuten).
Auch die Sekunden werden durch das anfängliche Laden des Modells nach oben gezogen. Bei Spalte A betrug die Messung erster Lauf 102,6 s, danach 7,6 s (Durchschnitt 23,4 s). Das Skript wurde so korrigiert, dass es Median und ersten Lauf getrennt ausgibt, aber die Werte für Spalte B stammen noch vom alten Skript, daher ist eine Neuvermessung nötig.
Nächste Schritte
Neuvermessung von Spalte B (Sekunden mit dem verbesserten Skript erneut erfassen)
qwen2.5:7bauf der GPU-Maschine laufen lassen, um Hardware- und Modellgenerationseffekte zu trennenSpalten C und D noch nicht ausgeführt (da Kosten anfallen, nur einmal, sobald die Spalten vollständig sind)
Phase 3: Eval-Kern (Erfolgsquote und Abschlussquote über mehrere Fragen × mehrere Läufe)
Verwandte Links
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Raw Japanese regulatory data for AI agents: pension, gazette, gBizINFO. x402-metered (USDC).
Verified Polish open data for AI agents: debt, budget, 460 MPs, votings, judiciary search, RAG.
Machine-readable utilities and datasets for AI agents.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ossudesu-lab/kaigo_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server