Skip to content
Conduit

mcp server

osm-mcp

MCP server for OpenStreetMap

GRABOSM/osm-mcpcommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

Before you start

  • Node.js 20 or newer
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "grabosm-osm-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "osm-mcp"
      ]
    }
  }
}

same format Cursor, GitHub Copilot CLI, Junie, JetBrains AI Assistant, Augment (Auggie CLI), Factory Droid, Kiro, Devin CLI +12

Values in angle brackets are placeholders. Restart Claude Desktop after editing its config.Claude Desktop docs

README

synced Oct 25, 2026

OpenStreetMap MCP Server

A powerful Model Context Protocol (MCP) server for OpenStreetMap, providing 30 tools for geocoding, routing, quality assurance, and data analysis. Optimized for AI assistants like Cursor and Claude.

A community project by Grab — providing open-source mapping tools to help developers and researchers work with OpenStreetMap data more effectively.


🎯 Quick Start

1️⃣ Installation

git clone https://github.com/GRABOSM/osm-mcp.git
cd osm-mcp
npm install
npm run build

2️⃣ Configure AI Integration

Cursor AI

  1. Open Cursor Settings → Features → Model Context Protocol.
  2. Add a new server with:
    • Type: command
    • Command: node /absolute/path/to/osm-mcp/dist/index.js

Cursor Desktop

Add this to your mcp.json:

{
  "mcpServers": {
    "osm-mcp": {
      "command": "node",
      "args": ["/absolute/path/to/osm-mcp/dist/index.js"]
    }
  }
}

Claude Desktop

Add this to your claude_desktop_config.json:

{
  "mcpServers": {
    "osm": {
      "command": "node",
      "args": ["/absolute/path/to/osm-mcp/dist/index.js"]
    }
  }
}

3️⃣ Start Using

Try asking your AI:

  • "Find coffee shops in Makati, Manila"
  • "Calculate a 15-minute driving isochrone from Grab HQ Singapore"
  • "Get directions from Changi Airport to Marina Bay Sands"

🚀 Key Features

  • Geocoding: Search addresses and landmarks globally.
  • Routing (OSRM): Turn-by-turn directions, distance matrices, and route optimization.
  • Smart POI: Find restaurants, shops, and attractions with intelligent tag detection.
  • Quality Assurance (OSMOSE): Detect mapping errors and monitor data quality.
  • Changeset Analysis: Analyze recent edits and user contributions.
  • Tag Intelligence (Taginfo): Real-world tag usage statistics and validation.
  • Dual Interface: Use via MCP (AI tools) or HTTP REST API.

🛠️ Tool Reference (30 Tools)

🗺️ Geocoding (4)

  1. search_location: Search for places and addresses.
  2. reverse_geocode: Get address from coordinates.
  3. search_structured: Search by street, city, country, etc.
  4. get_place_details: Get full details of an OSM element.

📍 Points of Interest (3)

  1. search_pois: General POI search (amenities, shops, etc.).
  2. search_pois_smart: Intelligent POI search with category detection.
  3. find_amenities_nearby: Locate facilities within a specific radius.

🛣️ Routing & Navigation (5)

  1. get_osrm_route: Detailed turn-by-turn directions.
  2. get_distance_matrix: Travel times and distances between multiple points.
  3. optimize_route: Find the best route through multiple stops (TSP).
  4. map_match_gps: Snap GPS traces to the road network.
  5. calculate_isochrone: Area reachable within a time limit.

📊 OSM Data Analysis (6)

  1. search_highways_smart: Smart search for roads and motorways.
  2. get_elements_in_bounds: Get all data within a bounding box.
  3. search_by_tags: Find elements by specific OSM tags.
  4. get_route_data: Extract road geometry for custom use.
  5. execute_overpass_query: Run advanced Overpass QL queries.
  6. snap_to_roads: Find the nearest road for any point.

🔄 Changeset Analysis (3)

  1. get_changeset: Details of a specific mapping edit.
  2. search_changesets: Find edits by user, time, or location.
  3. get_changeset_diff: View exact changes made in an edit.

🔍 Quality Assurance (6)

  1. osmose_search_issues: Find data errors with filters.
  2. osmose_get_issue_details: Details of a specific quality issue.
  3. osmose_get_issues_by_country: Quality issues by nation.
  4. osmose_get_issues_by_user: Issues related to a specific user.
  5. osmose_get_stats: Data quality metrics and charts.
  6. osmose_get_items: List of detectable issue categories.

🏷️ Tag Intelligence (3)

  1. get_tag_suggestions: Autocomplete for OSM tags.
  2. get_tag_stats: Usage statistics for any tag.
  3. validate_osm_tag: Check if a tag combination is proper.

💡 Example Usage

Navigation

"Get directions from KL Sentral to Petronas Twin Towers"

Urban Planning

"Calculate 30-minute driving isochrone from Grab HQ Singapore"

Quality Monitoring

"Analyze recent mapping activity in Bengaluru"


🌐 HTTP API Mode

Run as a standalone server:

npm run dev:http

Access docs at: http://localhost:8888/api/info


🛠️ Troubleshooting

  • Absolute Paths: Always use full paths in AI tool configurations.
  • Build First: Ensure you run npm run build after any changes.
  • Node Version: Use Node.js v18 or higher.

📄 License

This project is licensed under the MIT License.


🙏 Credits

  • OpenStreetMap Contributors
  • OSRM, Nominatim, Overpass, OSMOSE, Taginfo communities.
↑↓ navigate openesc close