Skip to main content
Glama

osm-mcp

CI npm version npm downloads node Container license Docs

Сервер MCP для OpenStreetMap: геокодирование, расстояния и время в пути пешком/на автомобиле/на велосипеде, оптимизация маршрута с несколькими остановками, изохроны и поиск POI — создан для планирования поездок с помощью ИИ-ассистентов.

11 инструментов, все только для чтения. Все бэкенды — бесплатные публичные сервисы OpenStreetMap; ключ API не требуется. Ключ OpenRouteService можно указать опционально для смены движка маршрутизации.

📖 Полная документация: https://osm-mcp.ni-c.de

Зачем ещё один MCP-сервер для OSM?

  • Корректные маршруты для пеших и велосипедных прогулок. Публичные демо-серверы OSRM игнорируют сегмент профиля внутри пути URL OSRM и всегда возвращают маршруты для автомобиля, если не используются префиксы путей FOSSGIS routed-foot / routed-bike / routed-car. Большинство существующих MCP-серверов для OSM делают это неправильно и молча возвращают время вождения для пеших запросов. Этот сервер использует префиксы, и его живой smoke-тест проверяет, что пешие маршруты значительно медленнее автомобильных.

  • Соответствие политике по построению. Ограничение скорости для каждого сервиса (Nominatim и OSRM: 1 запрос/секунду), идентифицирующий User-Agent для каждого запроса (требуется политикой использования Nominatim), кэширование ответов, ограниченная конкурентность Overpass (2 слота) и автоматическое переключение на зеркало Overpass при 429/5xx.

  • Поддержка Photon. Опциональное геокодирование, устойчивое к опечаткам, с помощью komoot's Photon, которое предназначено для интерактивного использования — лучше подходит для поиска, управляемого LLM, чем постоянные запросы к Nominatim.

Related MCP server: Geo MCP Worker

Требования

  • Node.js ≥ 22

  • Доступ в Интернет к публичным сервисам OpenStreetMap (см. таблицу ниже)

Конфигурация

Все переменные опциональны — сервер работает «из коробки».

Переменная

Значение по умолчанию

Описание

OSM_USER_AGENT

osm-mcp/<version> (+https://github.com/ni-c/osm-mcp)

User-Agent, отправляемый каждому сервису. Nominatim требует реальный, идентифицирующий.

NOMINATIM_BASE_URL

https://nominatim.openstreetmap.org

Геокодирование / обратное геокодирование

PHOTON_BASE_URL

https://photon.komoot.io

Геокодирование, устойчивое к опечаткам

OSRM_BASE_URL

https://routing.openstreetmap.de

Маршрутизация, матрицы, оптимизация маршрутов. Должен обслуживать префиксы путей routed-{car,bike,foot} (макет FOSSGIS).

OVERPASS_BASE_URL

https://overpass-api.de/api/interpreter,https://overpass.private.coffee/api/interpreter

Через запятую конечные точки Overpass, пробуются по порядку при 429/5xx

VALHALLA_BASE_URL

https://valhalla1.openstreetmap.de

Изохроны

ORS_API_KEY

Опциональный ключ OpenRouteService (секрет). При установке маршруты, матрицы и изохроны используют ORS вместо OSRM/Valhalla. Бесплатный тариф: 2000 направлений/день, 40/минуту.

ORS_BASE_URL

https://api.openrouteservice.org

Конечная точка OpenRouteService

OSM_CACHE_TTL

3600

Время в секундах, в течение которого одинаковые ответы вышестоящих сервисов обслуживаются из кэша в памяти (0 отключает кэширование)

Установка

claude mcp add osm -- npx -y osm-mcp

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "osm": {
      "command": "npx",
      "args": ["-y", "osm-mcp"]
    }
  }
}

Codex (~/.codex/config.toml):

[mcp_servers.osm]
command = "npx"
args = ["-y", "osm-mcp"]

Контейнер (мультиархитектурный, с SBOM и подтверждением сборки):

docker run -i --rm ghcr.io/ni-c/osm-mcp

-i обязателен — протокол работает через stdin и stdout. Нет порта для публикации. Другие рецепты для клиентов — в руководстве по клиентам.

Инструменты

Инструмент

Описание

geocode

Название места/адрес → координаты (Nominatim или Photon)

reverse_geocode

Координаты → ближайший адрес

route

Расстояние и время в пути между 2+ точками, foot/car/bike; опционально пошаговая сводка

route_matrix

Время в пути/расстояние от каждого источника до каждого пункта назначения за один вызов

optimize_route

Лучший порядок посещения для набора остановок (задача коммивояжёра, OSRM trip)

isochrone

Доступная зона в пределах заданного времени или расстояния (Valhalla, или ORS с ключом)

find_nearby_pois

POI вокруг местоположения по категории или сырому тегу OSM, отсортированные по расстоянию (Overpass)

poi_details

Полная запись OSM одного элемента: часы работы, веб-сайт, телефон, …

suggest_meeting_point

Справедливое место встречи для 2–8 человек (сбалансированное время в пути)

straight_line_distance

Расстояние по большому кругу, вычисляется офлайн

map_link

Ссылки на маркер / маршрут openstreetmap.org, вычисляются офлайн

Каждый ввод места принимает либо название/адрес (автоматически геокодируется), либо буквальные координаты в формате "lat,lon".

Политика использования и атрибуция

Этот сервер взаимодействует с общей инфраструктурой сообщества. Он применяет опубликованные ограничения на стороне клиента, но оператор просит пользователей в целом не перегружать систему и использовать в некоммерческих целях:

  • Данные: © участники OpenStreetMap, лицензия ODbL 1.0.

  • Nominatim: макс. 1 запрос/секунду, обязателен идентифицирующий User-Agent, результаты кэшируются (политика).

  • OSRM / Valhalla (FOSSGIS): разумное, некоммерческое использование; макс. 1 запрос/секунду (о сервисе).

  • Overpass: ~2 одновременных слота на IP, <10 000 запросов/день (вики).

  • Photon: добросовестное использование (photon.komoot.io).

Для интенсивного или коммерческого использования разверните сервисы самостоятельно и укажите переменные *_BASE_URL на ваши экземпляры.

Безопасность

  • Все инструменты только для чтения; сервер никогда не записывает данные в OpenStreetMap.

  • Никакие учётные данные не требуются; опциональный ORS_API_KEY удаляется из окружения процесса после загрузки и скрывается в сообщениях об ошибках.

  • Контент из OSM (названия, адреса, теги) помечается как ненадёжные данные в результатах инструментов, чтобы модель обрабатывала их как данные, а не инструкции.

  • Тела ошибок вышестоящих сервисов усекаются, а HTML-страницы ошибок отбрасываются до того, как они попадут в контекст модели.

  • Перенаправления никогда не выполняются; все запросы имеют тайм-аут.

Разработка

npm install
npm run lint          # eslint + prettier
npm test              # unit tests (all upstream APIs mocked)
npm run test:coverage
npm run build
npm run smoke         # opt-in LIVE test against the real public services

Релиз

Управляется тегами, без ручного шага публикации:

  1. Перенесите записи [Unreleased] в новый раздел ## [x.y.z] - YYYY-MM-DD в CHANGELOG.md и обновите package.json.

  2. npm run lint && npm run build && npm run test:coverage.

  3. Сделайте коммит, затем подписанный аннотированный тег: git tag -s vx.y.z -m "vx.y.z".

  4. git push origin main vx.y.z.

Затем release.yml запускает тесты, публикует в npm с подтверждением через Trusted Publishing (без участия токена), создаёт релиз на GitHub из раздела CHANGELOG и публикует в реестр MCP как io.github.ni-c/osm-mcp. ci.yml отправляет мультиархитектурный образ в GHCR по тому же тегу.

Если шаг с реестром не удался, исправьте проблему в main и запустите workflow Publish to MCP Registryне запускайте задачу с тегом повторно, так как она будет использовать старую версию кода.

Лицензия

MIT

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

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

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    A comprehensive MCP server providing 30 tools for geocoding, routing, and OpenStreetMap data analysis. It enables AI assistants to search for locations, calculate travel routes, and perform quality assurance checks on map data.
    30
    3
    MIT
  • A
    license
    -
    quality
    B
    maintenance
    Free geospatial MCP server for AI agents, providing geocoding, reverse geocoding, POI search, and route planning using OpenStreetMap data via Nominatim, Overpass, and OSRM.
    1
    GPL 3.0
  • A
    license
    -
    quality
    A
    maintenance
    MCP server for geocoding, reverse geocoding, place/POI search, and distance calculation using OpenStreetMap Nominatim, with no API key required.
    183
    MIT

View all related MCP servers

Related MCP Connectors

  • MCP server for Japan geodata: cadastral lot numbers (chiban) and reverse geocoding, for AI agents.

  • Hosted MCP server for LLM cost estimation, model comparison, and budget-aware routing.

  • AI marketplace — flights, tours, activities, transport & more via MCP. No auth required.

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/ni-c/osm-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server