Skip to main content
Glama

kaigo_mcp

MCP-сервер, который публикует данные о спросе и предложении в японском уходе за пожилыми как инструмент, доступный ИИ-агентам.

При подключении из Claude Code или Claude Desktop можно получить ответ на вопрос «достаточно ли в этом городе домов престарелых специального типа» на основе открытых данных.

Статус: Phase 1 (сам сервер) работает. Сам агент и eval не начаты.

Что это делает

MCP (Model Context Protocol) — это стандарт для наделения LLM инструментами. Этот репозиторий создаёт сторону инструментов и не содержит саму LLM. Сам по себе сервер не вызывает никаких API и не порождает расходов.

[考える側]                    [このリポジトリ]
Claude Code / 自作エージェント  ←stdio→  kaigo-gap サーバー
「どの道具を使うか」を判断              呼ばれたらデータを返す

Инструменты

Инструмент

Назначение

get_national_baseline

Общенациональные базовые значения. Основа для оценки отдельных цифр

lookup_insurer

Получение данных о спросе и предложении по названию муниципалитета или страховщика

rank_insurers

Сортировка по степени нехватки (или достатка) домов престарелых специального типа

Основной показатель — число мест в домах престарелых специального типа на 100 человек с установленной степенью ухода 3 и выше (по стране 24,6; медиана 26,7). Определение и источники находятся на стороне kaigo_gap_analysis.

Агрегация здесь не выполняется

Данные выгружаются в варианте 4 (kaigo_gap_analysis) скриптом export_web.py, и здесь используется та же копия insurers.json, которую раздаёт публичная панель. Деление здесь заново не переписывается.

Если определение показателя хранится в двух местах, то при расхождении ответа агента и цифр на панели невозможно определить, какой из них правильный. dataset.py из варианта 4 написан по принципу «определение — в одном месте», и этот принцип соблюдается и здесь. Обновление — через python scripts/sync_data.py.

Что учитывалось при проектировании инструментов

По одним цифрам судить нельзя. Если передать «12,4», LLM не поймёт, много это или мало, поэтому в ответ включаются общенациональный рейтинг и общенациональное значение в описании инструмента.

Одноимённые муниципалитеты не сводятся к одному. «Футю» есть и в Токио, и в префектуре Хиросима. Возвращаются оба кандидата, а уточнение оставляется вызывающей стороне.

Ноль мест в домах престарелых специального типа не должен читаться как «худший в стране». Таких страховщиков 90, и все они оказываются на первом месте с одинаковым результатом. Обязательно прилагается число совпадающих, а также примечание: «в малых муниципалитетах это не редкость, и жители часто пользуются учреждениями соседних муниципалитетов». Без этого из результата rank_insurers можно сделать ошибочный вывод, что «Синго — худший регион страны».

Если не встроить предметные знания в ответы инструментов, то при каждой смене вызывающей модели будет повторяться одно и то же неверное прочтение. Именно поэтому они помещаются на сторону инструментов, а не в промпт.

Использование

pip install -r requirements.txt
python scripts/sync_data.py     # 案4からデータを取り込む
python scripts/smoke_test.py    # 通信の疎通確認

Чтобы использовать из Claude Code, достаточно запустить в этом каталоге — тогда будет прочитан .mcp.json. Настройки для регистрации в других клиентах:

{
  "mcpServers": {
    "kaigo-gap": {
      "command": "python",
      "args": ["-m", "kaigo_mcp"],
      "cwd": "C:\projects\kaigo_mcp"
    }
  }
}

Агент (Phase 2 · до подтверждения работы)

python -m kaigo_mcp.agent --list
python -m kaigo_mcp.agent "尼崎市は特養が足りてる?" --verbose

Инструменты вызываются через MCP-сервер (функции напрямую не импортируются). Если обойтись импортом, это не будет прохождением через MCP, и утверждение «мы создали MCP-сервер» не будет проверено.

4 сравниваемые колонки

Колонка

Модель

Место

Стоимость за вопрос

A

qwen2.5:7b

Основная машина (CPU)

0 иен

B

Qwen3.5 9B

RTX 5050 8GB

0 иен

C

Qwen3-235B

DeepInfra

около 0,11 иены

D

Claude Haiku 4.5

Anthropic

около 1,7 иены

B и C выровнены по одной линейке Qwen. Тогда разница B→C читается как «эффект только размера модели», C→D — как «разница семейств моделей», а A→B — как «эффект железа и поколения».

Пишется только один цикл. Если для одной стороны использовать SDK-раннер инструментов, а для другой — рукописный, то разницу между колонками нельзя будет отделить от разницы в реализации цикла. Бэкенд отвечает только за преобразование истории.

Фактические замеры (колонки A и B)

По 6 запусков, замер скриптом python scripts/probe_tool_calling.py.

Колонка A qwen2.5:7b (CPU)

Колонка B qwen3.5:9b (RTX 5050 8GB)

Доля успешных вызовов инструментов (температура по умолчанию)

4/6 = 67%

6/6 = 100%

Доля успешных вызовов инструментов (температура 0)

6/6 = 100%

6/6 = 100%

Следование инструкции (сначала ли запрошено базовое значение)

0/6 = 0%

6/6 = 100%

Время на один запуск (после прогрева)

7,6 с

требуется повторный замер

Необходимость температуры 0 была особенностью именно 7B

У qwen2.5:7b при температуре по умолчанию повреждается открывающий тег <tool_call> (в начале появляется несколько символов вроде olith, pering), парсер ollama не распознаёт его, и вызов просачивается в текст ответа. Признак — остаётся только закрывающий тег </tool_call>. При температуре 0 это исчезает.

У qwen3.5:9b даже при температуре по умолчанию 6/6. Это повреждение — не общая проблема локального запуска, а особенность поколения и размера именно этой модели.

Гораздо больше разница в «следовании инструкции»

В системном промпте указано: «перед ответом проверить общенациональное базовое значение через get_national_baseline». 9B следует этому в 6/6 случаев, 7B не последовал ни разу — 0/6. При этом 9B вызывает два инструмента параллельно за один шаг.

7B смог дать правильный ответ, потому что подхватил общенациональное значение (24,6), встроенное в описание инструмента, но предписанную процедуру не выполнил. Разница не в стабильности, а в следовании инструкции, и она будет тем заметнее, чем больше инструментов.

Ограничения этого сравнения

В A→B одновременно меняются и железо, и поколение модели, поэтому нельзя отделить, чем вызвано улучшение — GPU или 9B. Для разделения нужно запустить qwen2.5:7b и на GPU-машине (бесплатно, несколько минут).

Секунды также искажаются первой загрузкой модели, которая поднимает среднее. В фактических замерах колонки A было 102,6 с в первый раз и 7,6 с в последующие (среднее 23,4 с). Скрипт исправлен так, чтобы выводить медиану и первый запуск отдельно, но значения колонки B получены старым скриптом, поэтому нужен повторный замер.

Дальнейшие планы

  • Повторный замер колонки B (переснять секунды улучшенным скриптом)

  • Запустить qwen2.5:7b на GPU-машине и разделить эффекты железа и поколения модели

  • Колонки C и D не выполнялись (поскольку это платно, только один раз, когда колонки будут готовы)

  • Phase 3: сам eval (доля правильных ответов и доля завершённых прогонов при нескольких вопросах × нескольких запусках)

Связанное

  • kaigo_matching — структурное извлечение записей по уходу (вариант 1)

  • kaigo_gap_analysis — анализ разрыва спроса и предложения по страховщикам (вариант 4 · источник этих данных)

-
license - not tested
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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.

View all MCP Connectors

Latest Blog Posts

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