39 lines
1.6 KiB
Markdown
39 lines
1.6 KiB
Markdown
# ru-regions MCP server
|
||
|
||
MCP-сервер: по названию населённого пункта РФ или координатам отдаёт регион (через DaData).
|
||
|
||
## Tools
|
||
|
||
- `get_region(city, limit=5, refresh=False)` — определить регион по названию НП.
|
||
- `get_region_by_coords(lat, lon, radius_meters=1000, limit=1)` — обратный геокодинг.
|
||
- `cache_stats()` / `cache_clear()` — статистика и сброс локального кеша.
|
||
|
||
Результаты кешируются в SQLite, повторные запросы не идут в DaData.
|
||
|
||
## Запуск локально (stdio)
|
||
|
||
```sh
|
||
export DADATA_API_KEY=...
|
||
./server.py
|
||
```
|
||
|
||
Скрипт shebang-нутый под `uv run` — зависимости подтянутся через PEP 723 inline metadata.
|
||
|
||
## Запуск в Docker (streamable-http)
|
||
|
||
```sh
|
||
echo "DADATA_API_KEY=..." > .env
|
||
docker compose up -d --build
|
||
```
|
||
|
||
По умолчанию слушает `127.0.0.1:8311`, endpoint — `/mcp`. Перед ним обычно reverse-proxy с TLS (Caddy/nginx).
|
||
|
||
## Переменные окружения
|
||
|
||
| Переменная | По умолчанию | Описание |
|
||
|---|---|---|
|
||
| `DADATA_API_KEY` | — (обязательно) | Токен DaData (бесплатный тариф — 10k запросов/сутки) |
|
||
| `MCP_TRANSPORT` | `stdio` | `stdio` или `streamable-http` |
|
||
| `MCP_HOST` | `127.0.0.1` | Хост для HTTP-режима |
|
||
| `MCP_PORT` | `8311` | Порт для HTTP-режима |
|
||
| `RU_REGIONS_CACHE_PATH` | `cache.sqlite` рядом со скриптом | Путь к SQLite-кешу |
|