Mapsi MCP server
Geocoding, routing, isochrone, H3, elevation and 13 more geospatial tools via OpenStreetMap.
Usage numbers are collected on the next scan
Reviews
Write oneNobody has reviewed Mapsi yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Mapsi tools (18)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
autocompleteGet real-time address suggestions as a user types in an input field. Returns: array of suggestions each with { text, label, lat, lon }. WHEN TO USE: ONLY for powering a live address input field in a UI. Minimum 2 characters. DO NOT USE IN AGENTS: Agents should call geocode directly with a complete address. Autocomplete is a UI tool, not an agent tool — it returns partial matches, not reliable coor
batch_geocodeGeocode multiple addresses in a single API request. Returns: { results: [{ input, formatted_address, lat, lon, confidence, status }] }. Results are in the same order as the input array. status is "ok" or "not_found". PERFORMANCE: Always use batch_geocode for 2+ addresses. Never loop geocode calls — batch is far faster and uses fewer API credits. CACHING: Deduplicate your address list before callin
batch_reverse_geocodeReverse geocode multiple coordinates in a single API request. Returns: { results: [{ lat, lon, formatted_address, street, city, postcode, country, country_code }] }. Results are in the same order as the input array. PERFORMANCE: Always use batch_reverse_geocode for 2+ coordinates. Never loop reverse_geocode calls. USE FOR: Enriching GPS log exports, converting coordinate datasets to readable addre
elevationGet the elevation (altitude above sea level in metres) for a geographic coordinate. Returns: { elevation_m (number) }. WHEN TO USE: Fitness/hiking apps, drone routing (terrain clearance), flood risk analysis, gradient calculation for cycling routes. NOTE: Elevation data has ~30m horizontal resolution globally; higher resolution available in some regions.
geocodeConvert an address or place name into WGS84 coordinates (lat/lon). Returns: formatted_address (string), coordinates {lat, lon}, city, country, confidence (0–1). WHEN TO USE: When you have a human-readable address and need lat/lon. DO NOT USE: For coordinates-to-address (use reverse_geocode). For real-time user typing (use autocomplete). CONFIDENCE: Score below 0.6 means the result is ambiguous — a
get_static_map_urlBuild a URL for a static PNG map image centered on a location. Returns: { url, auth_note, html_example }. USE FOR: Email templates, PDF reports, social sharing previews, server-side image generation. No JavaScript needed. ZOOM GUIDE: - 1–4: Country/continent - 6–8: Region/state - 10–11: City - 12–13: Neighbourhood - 14–16: Street level (most common) - 17–19: Building/parcel AUTH: For server-side u
get_tile_style_urlGet the MapLibre GL style URL for Mapsi map tiles. Returns: { style_url, usage_note, maplibre_example }. AUTH NOTE: Tile auth uses ?key= query param in the URL, NOT the X-API-Key header. This is intentional — tile URLs must be usable in browser <img> tags and MapLibre without exposing headers. STYLES: - light: Minimal, pale, ideal for data overlays (default) - dark: Dark mode, high contrast for da
h3_indexConvert a coordinate to an H3 hexagonal grid cell index at a given resolution. Returns: { h3_index (string), resolution, center_lat, center_lon }. Resolution guide (area per cell): - 5: ~250 km² — country/large region level - 7: ~5 km² — city neighbourhood level (most common for analytics) - 9: ~0.1 km² — city block level - 12: ~0.003 km² — building level USE FOR: Spatial aggregation, density heat
isochroneGenerate a reachability polygon — the geographic area reachable from a point within a given time or distance. Returns: GeoJSON FeatureCollection with one Polygon per contour. Each polygon is the boundary of the reachable area. CONTOURS — you must provide EITHER contours_minutes OR contours_meters, not both and not neither: - contours_minutes: [5, 10, 15] returns 3 nested polygons for 5, 10, 15 min
map_matchSnap a raw GPS trace to the road network to correct GPS drift and determine the actual route taken. Returns: { matched_points: [{lat,lon}], confidence (0–1), geometry (GeoJSON LineString of matched route) }. COORDINATE FORMAT — CRITICAL: The coordinates array uses [longitude, latitude] order (GeoJSON convention), NOT [latitude, longitude]. Correct: [[-0.1276, 51.5074], [-0.1279, 51.5078]] ← [lon,
matrixCalculate travel times and distances between multiple origins and destinations in a single request. Returns: { sources: [{lat,lon}], targets: [{lat,lon}], durations: [[sec,...]], distances: [[km,...]] } durations[i][j] = travel time in seconds from origin i to destination j. distances[i][j] = distance in km from origin i to destination j. PERFORMANCE: Always prefer matrix over calling route in a l
nearest_roadFind the nearest point on the road network to a given coordinate. Returns: { lat, lon, distance_m (distance from input to snapped point), road_name }. WHEN TO USE: Snap waypoints to routable roads before calling route. Also call this if route returns "no route found" — the waypoint may be in a park, building, or off-road area. RECOVERY: If route fails, call nearest_road on origin and destination,
normalize_addressNormalize and standardize a messy or inconsistently formatted address string. Returns: { formatted_address, street, housenumber, city, postcode, country, country_code, lat, lon }. WHEN TO USE: When cleaning user-submitted data, deduplicating a CRM, or standardizing addresses before batch processing. Also geocodes the address as a side-effect (lat/lon included). DO NOT USE: If you just need coordin
places_searchFind points of interest, businesses, and landmarks near a geographic coordinate. Returns: array of { name, lat, lon, categories: [string], address, distance_m }. QUERY: Use category keywords (restaurant, pharmacy, hospital, supermarket, ATM, petrol station, parking) or specific names ("Starbucks", "IKEA"). RADIUS: Default 1000m (1km). Increase for rural areas, decrease for dense urban. Max ~50000m
point_in_polygonGet the full administrative hierarchy for a geographic coordinate. Returns: { country, country_code (ISO 3166-1 alpha-2), region (state/province), county, city, suburb, neighbourhood }. Not all levels are present for every location — rural coordinates may return only country and region. USE FOR: Territory assignment, tax region detection, locale/language inference, delivery zone validation, "what
reverse_geocodeConvert geographic coordinates (lat/lon) into a human-readable address. Returns: formatted_address, street, housenumber, city, postcode, country, country_code. WHEN TO USE: When you have coordinates and need a readable address (e.g. from GPS, user map click, or API response). DO NOT USE: When you already have a formatted_address — no need to reverse geocode it. GRANULARITY: Use the layers paramete
routeGet turn-by-turn directions between two or more waypoints. Returns: { distance_km, duration_sec, legs: [{ steps: [{ instruction, distance_km, duration_sec }] }], geometry (GeoJSON LineString) }. WAYPOINT ORDER: First element = origin, last = destination. Intermediate elements are via-points in order. TRAVEL MODES: auto (car), truck (HGV — applies weight/height/hazmat restrictions), bicycle, pedest
timezoneGet the IANA timezone for a geographic coordinate. Returns: { timezone (IANA name), utc_offset_hours, utc_offset_seconds, dst_active }. Examples of IANA timezone names: "Europe/Paris", "America/New_York", "Asia/Kolkata". WHEN TO USE: Scheduling delivery ETAs, converting server timestamps to local time, detecting user timezone from coordinates.
Public scan report
scanner v0.1.9 · 2026-09-27 · same rubric, same numbers if you re-run it
- Code scan11 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitystatic API keys via environment variables6/15
- Maintenancerepository not readable: repo not found3/15
- Maintainer identityno repository or website to verify2/10
Install directly
Runs npx -y mapsi-mcp on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add mapsi-mcp -- npx -y mapsi-mcp
Mapsi: common questions
- Is Mapsi MCP server safe?
- With care: it is graded C, so read the findings first (55/100). Read the Mapsi safety report
- How do I install Mapsi?
- It runs on your machine. Copy the Claude Code, Claude Desktop or Cursor config from the install section.
- Does Mapsi need an API key?
- Yes. The registry entry asks for
MAPSI_API_KEY. - Is Mapsi maintained?
- The latest release is v1.0.0.