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 サーバー
「どの道具を使うか」を判断 呼ばれたらデータを返すRelated MCP server: Japan Data MCP
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 deployed
Maintenance
Related MCP Connectors
Search Japanese company credit, financials, subsidies, and procurement via AI agents.
Local government intelligence for AI agents.
Japan data tools for AI agents: calendar (rokuyo), address, name splitting, corporate number lookup
Raw Japanese regulatory data for AI agents: pension, gazette, gBizINFO. x402-metered (USDC).
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceEnables LLMs to search and retrieve Japanese real estate data through unified access to the MLIT Real Estate Information Library API, supporting over 25 geospatial datasets for interactive queries.189MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to query Japanese public data (laws, corporations, statistics) from official government APIs, returning normalized English metadata with source attribution.1MIT
- FlicenseNot gradedqualityDmaintenanceProvides AI agents with comprehensive Japanese market intelligence through 27 MCP tools, covering corporate data, macroeconomics, financials, and environmental data from 14 integrated sources.-
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to search Japanese government subsidies and grants, including archived closed calls and recurring application periods based on historical data.10 npm1MIT