mapsi-mcp
Geospatial API tools for AI agents — geocoding, reverse geocoding, routing, isochrone, distance matrix, static maps, H3 hexagons, elevation, GPS map-matching, point-in-polygon, address normalisation, timezone lookup, and batch geocoding. Built on OpenStreetMap infrastructure. Cost-effective alternative to Google Maps API.
README
mapsi-mcp
MCP server for Mapsi — 18 geospatial tools for AI coding assistants. Connect Claude Code, Cursor, Windsurf, or any MCP-compatible IDE directly to Mapsi APIs.
OpenStreetMap-based · Self-hosted infrastructure · No Google Maps vendor lock-in
Quick Start
1. Get your API key at mapsi.dev/console/api-keys (free tier: 1,000 calls/day, no credit card)
2. Add the config to your IDE:
Claude Code / Claude Desktop
Add to ~/.claude.json (or .mcp.json in your project root):
{
"mcpServers": {
"mapsi": {
"command": "npx",
"args": ["-y", "mapsi-mcp"],
"env": { "MAPSI_API_KEY": "msk_your_key_here" }
}
}
}
Cursor
Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"mapsi": {
"command": "npx",
"args": ["-y", "mapsi-mcp"],
"env": { "MAPSI_API_KEY": "msk_your_key_here" }
}
}
}
Windsurf
Add to ~/.codeium/windsurf/mcp_config.json — same JSON format as Cursor above.
VS Code + Cline
Open Cline settings → MCP Servers → Add server → paste:
{
"mapsi": {
"command": "npx",
"args": ["-y", "mapsi-mcp"],
"env": { "MAPSI_API_KEY": "msk_your_key_here" }
}
}
Zed
Add to your Zed settings under "context_servers":
{
"mapsi-mcp": {
"command": { "path": "npx", "args": ["-y", "mapsi-mcp"] },
"env": { "MAPSI_API_KEY": "msk_your_key_here" }
}
}
3. Restart your IDE — then ask your AI in plain English.
What You Can Ask Your AI
Geocode all addresses in my CSV and add lat/lon columns
Build an address autocomplete input for this React form using Mapsi
Draw a 20-minute drive isochrone from our warehouse at this coordinate
Find the 5 nearest hospitals to this coordinate
Migrate this Google Maps geocoding call to Mapsi
Add a MapLibre map with Mapsi light tiles and drop markers from this array
Calculate a distance matrix between 10 warehouses and 50 delivery stops
Snap this GPS trace to the road network and calculate total distance
Available Tools (18)
Geocoding
| Tool | Description |
|---|---|
geocode |
Address or place name → lat/lon. Returns confidence score (0–1); treat scores below 0.6 as ambiguous. |
reverse_geocode |
lat/lon → formatted address, street, city, postcode, country. |
autocomplete |
Real-time address suggestions as user types (min 2 chars). For UI input fields. |
normalize_address |
Standardize messy/inconsistent addresses. Returns structured fields + coordinates. |
timezone |
IANA timezone name + UTC offset + DST status for any coordinate. |
elevation |
Altitude in metres for any coordinate (~30m resolution globally). |
Routing
| Tool | Description |
|---|---|
route |
Turn-by-turn directions. Modes: auto, truck, bicycle, pedestrian, motor_scooter. |
isochrone |
Reachability polygon within N minutes or N metres. Returns GeoJSON for MapLibre/Leaflet. |
matrix |
Travel time + distance matrix for up to 50×50 origin-destination pairs in one call. |
map_match |
Snap a GPS trace to the road network. Coordinates are [lon, lat] order (GeoJSON). |
nearest_road |
Find nearest routable road point. Call this if route returns "no route found". |
Places
| Tool | Description |
|---|---|
places_search |
Find nearby POIs by category (restaurant, hospital, pharmacy, ATM…). Returns name, coords, categories. |
Spatial
| Tool | Description |
|---|---|
point_in_polygon |
Admin hierarchy for a coordinate: country, region, city, neighbourhood. |
h3_index |
Convert coordinate to H3 hexagonal grid cell at resolution 0–15. |
Batch
| Tool | Description |
|---|---|
batch_geocode |
Geocode up to 30,000 addresses in a single call. Never loop geocode for bulk data. |
batch_reverse_geocode |
Reverse geocode multiple coordinates in one call. |
Tiles
| Tool | Description |
|---|---|
get_tile_style_url |
MapLibre GL style URL. Styles: light, dark, streets, topo, grayscale, black, white, liberty. |
get_static_map_url |
Static PNG map URL for use in <img> tags, emails, and PDFs. |
Auth
- API calls:
X-API-Keyheader (handled automatically by the MCP server) - Tile URLs:
?key=query param (browser-safe; returned byget_tile_style_url)
Common Patterns for Agents
Geocode once, reuse the result:
Don't re-geocode the same address twice within a session. Cache the lat/lon and pass it directly to route, isochrone, and places_search.
Bulk data → batch tools:
For more than 1 address or coordinate pair, always use batch_geocode / batch_reverse_geocode.
Route fails → nearest_road first:
If route returns an error near the origin or destination, call nearest_road to snap the point to a routable road, then retry route with the snapped coordinates.
Isochrone — time vs distance:
Use contours_minutes for time-based reachability (delivery ETAs, commute zones).
Use contours_meters for fixed-radius circles on the road network.
Provide only one, not both.
Pricing
| Plan | Calls/day | Batch size |
|---|---|---|
| Free | 1,000 | 10 |
| Growth | 50,000 | 5,000 |
| Business | Unlimited | 30,000 |
Full pricing at mapsi.dev/pricing
Links
- Website: mapsi.dev
- API docs: mapsi.dev/docs
- AI prompts: mapsi.dev/prompts-for-ai
- npm: npmjs.com/package/mapsi-mcp
- GitHub: github.com/algolayer/mapsi-mcp
- Support: support@mapsi.dev
License
MIT — algolayer.com
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.