bbox-mcp-server
The server provides geospatial tools for AI agents to query, convert, and analyze location data using OpenStreetMap, with map verification links. Capabilities include:
Coordinate Conversion & Projection: Parses input in 6 formats (raw coordinates, WKT, GeoJSON, etc.), outputs to 9 formats (WKT, GeoJSON, KML, STAC, Overpass, Leaflet, OGC, CSV, etc.), and reprojects across 3900+ EPSG systems, also computing center points and tile indices.
H3 Hexagonal Grid Generation: Generates H3 indices for a bounding box at any resolution, with optional compaction and GeoJSON hex output.
OpenStreetMap Querying (Overpass): Executes Overpass QL queries within a bounding box or radius, returning structured results with pin map links.
OSM Tag Discovery: Looks up correct OSM tags for categories (e.g., food, health, transport) to avoid hallucinated tags in queries.
Spatial Density Analysis: Runs Overpass queries and bins results into H3 hexagons for density mapping, returning counts per cell and boundaries.
Shareable Map Links: Generates a public URL to visualize any bounding box or geometry on an interactive map for verification.
Natural Language Locations: Accepts location descriptions (e.g., "Times Square") when a Mapbox token is configured, enabling easier spatial operations.
Zero Configuration: Works out of the box via
npx -y bbox-mcp-serverwith no API keys required for basic functionality; uses free OpenStreetMap data.
Enables natural language location lookup via Mapbox's geocoding API, allowing users to specify areas by name (e.g., 'Seattle') without needing explicit coordinates.
Provides tools for querying OpenStreetMap data through the Overpass API, enabling searches for points of interest, roads, and other mapped features within a specified area, as well as H3-based spatial aggregation.
🌍 bbox-mcp-server
Ask AI about anything, anywhere — and verify the answer on a map. For Free
The geospatial toolkit for AI agents. 6 tools, zero config — give any LLM the ability to find, query, convert, and aggregate spatial data using open data. No API keys or signups required to start.
Every response includes a shareable verification link to vibhorsingh.com/boundingbox — click it to visually confirm results on an interactive map. No other MCP server does this.
What Can You Do With This?
You don't have to be a GIS professional to make use of this. Any AI agent with this MCP server can answer spatial questions using real OpenStreetMap data and not spit out hallucinated garbage.
Ask your AI agent... | What happens under the hood |
"How many EV chargers are in downtown Denver?" | Overpass query → H3 hex binning → density analysis |
"Is there a hospital near this Airbnb?" | POI search with structured tags → map verification link |
"Find all playgrounds within 1km of this address"* | Overpass query + radius filter → pinned results on a shareable map |
"Convert this WKT to GeoJSON in EPSG:3857" | Format conversion across 6 inputs, 9 outputs, 3,900+ projections |
"Show me all bike-share stations in Amsterdam" | Curated OSM tags → Overpass query → results on map |
"Compare park density across Seattle neighborhoods" | Overpass + H3 aggregation → hex-binned spatial analysis |
Every answer comes with a link. Click it, see if the AI got it right and you can also share it with someone else.
Related MCP server: Mapbox MCP Server
What Makes This Different
Most AI tools give you text you have to trust. This one gives you an interactive map you can check and verify!
Verifiable — Every response includes a public URL where you (or anyone) can visually confirm the results. This is the only MCP server that does this in any domain.
Deterministic — Queries hit real OpenStreetMap data and return real coordinates. The AI interprets your question. The data comes from all the hard work done by all the awesome OSM volunteers.
Free — No paid services. Overpass API is free, OSM data is free, the tool is free. A Mapbox token (free tier, no payment info) unlocks natural language location search but isn't required.
Zero config —
npx -y bbox-mcp-serverand you're running.
Why This Exists
The problem | How bbox-mcp solves it |
"I have WKT but the API needs a GeoJSON bbox in EPSG:3857." | Parses 6 input formats, projects to 3,900+ EPSG codes, outputs in 9 formats — in one call. |
"I keep getting the wrong OSM tags for Overpass queries." |
|
"How many hospitals are in this district?" |
|
"Is this bounding box actually correct?" | Every response includes a clickable map link for visual verification. |
Tools at a Glance
Tool | What it does | Key params |
| Convert and project a bbox across formats and coordinate systems |
|
| Generate H3 hex cell indices covering a bbox |
|
| Create a shareable map link for a bbox |
|
| Query OpenStreetMap via Overpass QL within a bbox or radius |
|
| Look up correct OSM tags for a category |
|
| Run an Overpass query and bin results into H3 hexagons |
|
All tools accept location (natural language, requires Mapbox token) or bbox (coordinates, WKT, GeoJSON, etc).
Quick Start
Add to your MCP client config:
Add to claude_desktop_config.json:
{
"mcpServers": {
"bbox": {
"command": "npx",
"args": ["-y", "bbox-mcp-server"]
}
}
}Add to .cursor/mcp.json:
{
"mcpServers": {
"bbox": {
"command": "npx",
"args": ["-y", "bbox-mcp-server"]
}
}
}Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"bbox": {
"command": "npx",
"args": ["-y", "bbox-mcp-server"]
}
}
}Add to .vscode/mcp.json in your workspace:
{
"servers": {
"bbox": {
"command": "npx",
"args": ["-y", "bbox-mcp-server"]
}
}
}Try: "Find all coffee shops within 500m of Times Square"
Optional Configuration
{
"mcpServers": {
"bbox": {
"command": "npx",
"args": ["-y", "bbox-mcp-server"],
"env": {
"MAPBOX_ACCESS_TOKEN": "pk.your-token-here",
"OVERPASS_API_URL": "https://your.custom.overpass.instance/api/interpreter",
"NOMINATIM_API_URL": "https://your.custom.nominatim.instance"
}
}
}
}Variable | Default | Description |
| — | Enables natural language location search (e.g. "San Francisco") |
| auto | Custom Overpass endpoint. By default, rotates between |
|
| Custom Nominatim endpoint. Set this if hosting as a shared/remote MCP server or using a commercial provider. |
|
| Safety cap for H3 grid generation |
Or install globally: npm install -g bbox-mcp-server
Tool Reference
get_bounds
Convert and project a bounding box across 6 input formats, 9 output formats, and 3,900+ coordinate systems. Returns the center point and tile coordinates for the centroid.
Param | Type | Default | Description |
| string | — | Input geometry (coordinates, WKT, GeoJSON, ogrinfo extent) |
| string |
| Target projection. Unknown codes auto-fetched from epsg.io. |
| string |
| Output: |
| string |
| Swap to |
| number |
| Zoom level for tile coordinate calculation |
| number |
| Decimal places in formatted output |
💡 Prompt: "Get the bounding box for Central Park in WKT format projected to EPSG:32618"
get_h3_indices
Generate Uber H3 hexagonal cell indices covering a bounding box.
Param | Type | Default | Description |
| string | — | Input geometry |
| number | — | H3 resolution (0–15) |
| boolean |
| Merge cells into coarser parents where possible |
| boolean |
| Include GeoJSON hex boundaries |
💡 Prompt: "Give me H3 cells at resolution 7 for downtown Chicago, include the hex geometries"
search_overpass
Execute an Overpass query within a bounding box or radius. Returns structured results with names, coordinates, and tags. The verification link plots each result as a pin on the map.
Param | Type | Default | Description |
| string | — | Input geometry |
| string | — | Overpass QL (e.g. |
| number | — | Search radius in metres. Use only when the user specifies an explicit distance (e.g. |
| number |
| Max elements returned |
💡 Prompt: "Find all parking within 2km of JFK airport"
💡 Prompt: "Search for hospitals in Manhattan, limit 50"
list_osm_tags
Look up the correct OpenStreetMap tags for a category before writing an Overpass query.
Param | Type | Description |
| string | Broad category (e.g. |
💡 Prompt: "What are the correct OSM tags for supermarkets?"
aggregate_overpass_h3
Run an Overpass query and bin results into H3 hexagons for spatial density analysis. Returns counts per cell and GeoJSON hex boundaries.
Param | Type | Default | Description |
| string | — | Input geometry |
| string | — | Overpass QL core query |
| number |
| H3 resolution for binning |
💡 Prompt: "Aggregate all hospitals in Seattle into H3 bins at resolution 7"
generate_share_url
Generate a shareable link to visualize a bounding box on the interactive map at vibhorsingh.com/boundingbox.
Param | Type | Description |
| string | Input geometry |
💡 Prompt: "Generate a share link for bbox 40.7128,-74.0060,40.7580,-73.9855"
Supported Input Formats
All tools auto-detect the input format. No need to specify which one you're using.
Format | Example |
Raw coordinates |
|
WKT |
|
GeoJSON |
|
GeoJSON bbox |
|
ogrinfo extent |
|
Space-separated |
|
🤖 For AI Agent Developers
Response structure
Every tool returns two content blocks:
Human-readable text — formatted output with the map verification link
Structured JSON — all computed data, machine-parseable
Example get_bounds JSON response:
{
"original_wgs84": { "lat1": 40.7128, "lng1": -74.006, "lat2": 40.758, "lng2": -73.9855 },
"projected": { "xmin": -8238310.23, "ymin": 4970241.32, "xmax": -8235527.11, "ymax": 4976491.56 },
"center": { "lat": 40.7354, "lng": -73.99575 },
"tile_indices": { "z": 15, "x": 9660, "y": 12284 },
"epsg": "3857",
"coord_order": "lng,lat",
"area_km2": 8.681,
"dimensions": { "width_km": 1.714, "height_km": 5.066 },
"share_url": "https://vibhorsingh.com/boundingbox/#40.712800,-74.006000,40.758000,-73.985500"
}Error handling
All errors return isError: true with a descriptive message. Invalid coordinates, unknown EPSG codes, and oversized H3 requests all return clean errors — the server never crashes on bad input.
Logging
Structured JSON logs go to stderr (stdout is reserved for MCP protocol). Each entry includes timestamp, level, and context.
Acknowledgments & Fair Use
OpenStreetMap
This tool is built on OpenStreetMap: A global dataset created and maintained by millions of volunteers. Every query you run returns data that someone walked, mapped, or verified by hand. If you find this useful, consider contributing to OSM.
Responsible Usage
The public Overpass and Nominatim API instances are free community resources with limited capacity. Avoid tight loops, excessive polling, or bulk-scraping. If hosting this as a shared/remote MCP server, point NOMINATIM_API_URL and OVERPASS_API_URL at your own instance or a commercial provider (see Overpass API installation and Nominatim installation). The default server rotation for Overpass helps spread load, but it's not a substitute for responsible usage.
License
MIT
Available Tools
6 toolsaggregate_overpass_h3B
Executes an Overpass query and bins the results into H3 hexagons at a specified resolution to analyze spatial density.
| Name | Required | Description | Default |
|---|---|---|---|
| location | No | A text location to search for (e.g. 'Seattle'). | |
| bbox | No | The bounding box geometry to parse. | |
| query | Yes | The Overpass QL core query (e.g. `nwr["amenity"="cafe"]`). | |
| resolution | Yes | The H3 resolution level (0-15) for binning. Default is 8. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full burden but only states 'executes and bins'. It does not disclose if the query is read-only, any side effects, rate limits, or the structure of the output (e.g., hexagon counts). This omission significantly reduces transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence of 18 words efficiently conveys the core action. It is front-loaded with the main verb and resource, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite low complexity (4 params, oneOf), the description fails to explain the mutual exclusivity of location/bbox, the output format, or how the H3 binning works. An agent cannot fully understand the tool's behavior without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description adds limited value. It relates 'resolution' to binning but adds no new meaning for location, bbox, or query beyond their schema descriptions. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool executes an Overpass query and bins results into H3 hexagons, a specific verb and resource. It distinguishes from siblings like search_overpass (raw results) and get_h3_indices (just indices) by emphasizing spatial density analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. It does not mention prerequisites, when-not-to-use, or that location and bbox are mutually exclusive (only implied by schema).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_boundsA
Get converted coordinates for a bounding box or text location search. Supports parsing WKT, GeoJSON, ogrinfo extent, and raw coordinate strings. If MAPBOX_ACCESS_TOKEN is not set, you MUST provide explicit coordinates via 'bbox'.
| Name | Required | Description | Default |
|---|---|---|---|
| location | No | A text location to search for (e.g. 'New York City'). Requires MAPBOX_ACCESS_TOKEN env var. Either 'location' or 'bbox' MUST be provided. | |
| bbox | No | The geometry to parse. Can be a raw bounding box string ('lat1,lng1,lat2,lng2'), a WKT polygon/linestring/point, a GeoJSON payload, or an `ogrinfo` extent block. The Minimum Bounding Rectangle (MBR) encapsulating the geometry will be extracted. Either 'location' or 'bbox' MUST be provided. | |
| epsg | No | The projected EPSG code (e.g. '3857'). Defaults to '4326' (WGS84). Over 3,900 bundled projections; unknown codes are auto-fetched from epsg.io. | |
| format | No | Format of the output. Options: wkt, geojson-bbox, leaflet, overpass, ogc-bbox, kml, geojson-polygon, csv, stac-bbox. Default: csv. | |
| coord_order | No | Toggle between 'lng,lat' (default) and 'lat,lng' coordinate ordering in the formatted output. Useful for APIs that expect swapped coordinate orders. | |
| zoom | No | The map zoom level (0-22) used to calculate the map tile coordinates for the centroid. Defaults to 15. | |
| precision | No | The number of decimal places to output coordinate strings as (defaults to 6). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must cover behavioral aspects. It explains input formats, default EPSG, and that MBR is extracted. However, it does not explicitly state that the tool is read-only or non-destructive, nor does it mention any side effects or limitations beyond the environment variable dependency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is only three sentences, all dense with information: purpose, supported formats, and a critical usage condition. No redundant words. Front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the schema's 100% description coverage and absence of output schema, the description adequately covers the main use cases and constraints. It explains the two required parameter groups, format options, and EPSG handling. Minor gap: no mention of what happens if both 'location' and 'bbox' are provided (though schema enforces oneOf).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds valuable context beyond schema: for 'location', it mentions the MAPBOX_ACCESS_TOKEN requirement; for 'bbox', it explains MBR extraction; for 'epsg', it notes over 3,900 bundled projections and auto-fetching. This enriches parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get converted coordinates for a bounding box or text location search.' It specifies the core functionality (coordinate conversion) and distinguishes it from sibling tools that deal with Overpass, H3 indices, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use 'bbox' vs 'location': if MAPBOX_ACCESS_TOKEN is not set, must provide explicit coordinates via 'bbox'. This helps agents decide which parameter to use. However, it does not explicitly mention when not to use this tool or compare to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_h3_indicesA
Get Uber H3 cell indices for a bounding box area at a target resolution. Input supports WKT, GeoJSON, ogrinfo extent, and raw coordinate strings.
| Name | Required | Description | Default |
|---|---|---|---|
| location | No | A text location to search for (e.g. 'San Francisco'). Requires MAPBOX_ACCESS_TOKEN env var. Either 'location' or 'bbox' MUST be provided. | |
| bbox | No | The geometry to parse. Can be a raw bounding box string ('lat1,lng1,lat2,lng2'), WKT, GeoJSON, or ogrinfo extent. Either 'location' or 'bbox' MUST be provided. | |
| resolution | Yes | The H3 resolution level, from 0 to 15. (e.g. 7) | |
| compact | No | Whether to return a compacted list of cells (mixing resolutions) to minimize response size. Defaults to false. | |
| return_geometry | No | If true, return GeoJSON FeatureCollection with hex boundary polygons in addition to cell IDs. Defaults to false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits. It mentions input format support and the required MAPBOX_ACCESS_TOKEN env var for location, but does not detail side effects, rate limits, or output behavior beyond basic geometry options.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two efficient sentences that front-load the core purpose without extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers input parameters and options but does not explain the default return format (a list of H3 cell IDs) or provide any output schema, leaving the agent somewhat uncertain about what to expect when return_geometry is false.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Since schema description coverage is 100%, the baseline is 3. The description adds minimal value beyond the schema, mainly summarizing input formats already detailed in the bbox parameter and reiterating the oneOf constraint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Get Uber H3 cell indices') and specifies the spatial context ('bounding box area at a target resolution') and input formats, distinguishing it from sibling tools that focus on aggregation, searching, or sharing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives among sibling tools. It only states what the tool does, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_osm_tagsA
Discovery tool to look up the correct OpenStreetMap tags for a given category. Helps prevent hallucinating incorrect tags before writing an Overpass query.
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes | Broad category to look up (e.g. 'food', 'health', 'transport', 'leisure', 'retail'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It describes the tool as a 'discovery tool' and 'look up,' implying a safe read operation, but does not disclose additional traits like idempotence, rate limits, or whether it accesses external data. For a simple lookup, this is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise sentences that front-load the core purpose. Every sentence adds value, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers the main use case and rationale. It lacks detail about the return format or behavior, but given the tool's simplicity, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the input schema already includes a clear description of the 'category' parameter with examples. The tool description does not add meaningful parameter information beyond what the schema provides, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'look up the correct OpenStreetMap tags for a given category.' It uses a specific verb ('look up') and resource ('OSM tags'), and distinguishes from sibling tools that focus on Overpass queries, bounds, and H3 indices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage context: 'Helps prevent hallucinating incorrect tags before writing an Overpass query.' This implies appropriate use before querying. However, it does not explicitly state when not to use it or compare with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_overpassA
Execute an Overpass QL query to find POIs, roads, or other OSM features within a bounding box or radius. The server wraps your query in the appropriate spatial filter and returns structured JSON with a map link.
SEARCH MODES:
Bounding box (default): searches a rectangular area. Use for region/area queries ('hospitals in Manhattan', 'parks in downtown Seattle').
Circle: searches within an exact radius. Use ONLY when the user specifies an explicit distance ('within 2km of JFK', '500 metres from the Eiffel Tower', '1 mile from Times Square'). Omit radius_meters for vague terms like 'near' or 'close to'.
COMMON TAG EXAMPLES:
Restaurants:
nwr["amenity"="restaurant"]Pizza:
nwr["amenity"="fast_food"]["cuisine"="pizza"]Supermarkets:
nwr["shop"="supermarket"]Parks:
nwr["leisure"="park"]Hospitals:
nwr["amenity"="hospital"]Schools:
nwr["amenity"="school"]Parking:
nwr["amenity"="parking"]Highways/Roads:
way["highway"]
| Name | Required | Description | Default |
|---|---|---|---|
| location | No | A text location to search for (e.g. 'San Francisco', 'JFK Airport'). Requires MAPBOX_ACCESS_TOKEN env var. Either 'location' or 'bbox' MUST be provided. | |
| bbox | No | The geometry to parse. Can be a raw bounding box string ('lat1,lng1,lat2,lng2'), WKT, GeoJSON, or ogrinfo extent. Either 'location' or 'bbox' MUST be provided. | |
| query | Yes | The Overpass QL core query. Example: `node["amenity"="cafe"]` or `nwr["leisure"="park"]`. DO NOT include spatial filters, bounding box, or output directives — the server handles those automatically. | |
| radius_meters | No | Search radius in metres. Enables circle mode — use ONLY when the user specifies an explicit distance (e.g. '2km' → 2000, '500 metres' → 500, '1 mile' → 1609). Omit entirely for area/region queries or vague terms like 'near'. | |
| limit | No | Maximum number of elements to return. Default is 100. Increase if you need more results. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses that the server wraps queries in spatial filters, requires MAPBOX_ACCESS_TOKEN for location, and returns structured JSON with a map link. Does not mention error behavior or rate limits, but those are less critical.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections (SEARCH MODES, COMMON TAG EXAMPLES) and front-loaded purpose. Could be slightly shorter, but the readability is high and each sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains return format ('structured JSON with a map link') briefly. It covers the main functionality and constraints, but could elaborate on error cases or pagination. Still, it's sufficient for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 5 parameters are described in schema (100% coverage). Description adds value with search mode rules, examples, and contextual hints (e.g., radius only for explicit distances). Exceeds schema detail significantly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool executes an Overpass QL query to find OSM features, specifying the return format and spatial filtering. It distinguishes from siblings like aggregate_overpass_h3 or list_osm_tags by focusing on raw query execution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use bounding box vs radius, and when to include radius_meters (only with explicit distances). Lacks explicit mention of when not to use the tool overall, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
1 tool update
v1.2.5- Changed
search_overpass4 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum number of elements to return. Helps prevent enormous JSON responses. Default is 100. Set to a higher number if you need more results."New value: +"Maximum number of elements to return. Default is 100. Increase if you need more results." - changed
Input schema / properties / location / descriptionPrevious value: -"A text location to search for (e.g. 'San Francisco'). Requires MAPBOX_ACCESS_TOKEN env var. Either 'location' or 'bbox' MUST be provided."New value: +"A text location to search for (e.g. 'San Francisco', 'JFK Airport'). Requires MAPBOX_ACCESS_TOKEN env var. Either 'location' or 'bbox' MUST be provided." - changed
Input schema / properties / query / descriptionPrevious value: -"The Overpass QL core query. Example: `node[\"amenity\"=\"cafe\"]` or `nwr[\"leisure\"=\"park\"]`. DO NOT include the bounding box `(S,W,N,E)` or output format (`out json`), the server handles that automatically."New value: +"The Overpass QL core query. Example: `node[\"amenity\"=\"cafe\"]` or `nwr[\"leisure\"=\"park\"]`. DO NOT include spatial filters, bounding box, or output directives — the server handles those automatically." - added
Input schema / properties / radius_metersAdded value: +{ + "description": "Search radius in metres. Enables circle mode — use ONLY when the user specifies an explicit distance (e.g. '2km' → 2000, '500 metres' → 500, '1 mile' → 1609). Omit entirely for area/region queries or vague terms like 'near'.", + "type": "number" +}
6 tool updates
v1.2.4- First observed
aggregate_overpass_h3 - First observed
generate_share_url - First observed
get_bounds - First observed
get_h3_indices - First observed
list_osm_tags - First observed
search_overpass
TDQS
Each tool has a clearly distinct purpose: coordinate conversion, Overpass querying, H3 indexing, URL generation, and tag discovery. There is no ambiguity between tools like aggregate_overpass_h3 and search_overpass due to detailed descriptions.
All tool names follow the verb_noun pattern in snake_case (e.g., get_bounds, list_osm_tags, search_overpass). The naming is perfectly consistent across all six tools.
With 6 tools, the server covers core spatial operations without being too heavy or too light. Each tool serves a necessary function for bounding box-based OSM queries and H3 analysis.
The tool set covers essential workflows: coordinate parsing, Overpass query execution, H3 analysis, tag discovery, and URL generation. Minor gaps exist, such as no tool for reverse geocoding or listing OSM categories beyond tag lookup, but the surface is largely complete for the domain.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
GIS tools for AI agents: 65 free tools + 8 paid (hazard/site-scouting/GeoJSON export)
Address validation & geocoding for AI agents: 240+ countries, UK PAF, free US/CA enrichment
Geolocate Me turns your phone into location context for any AI assistant. Install the iOS or Android app, connect once with OAuth, and your GPS is queryable in natural language. Ask where you are, where you parked, where you were yesterday at 3pm, or how long you were at the office — the assistant calls the tool and answers with a real street address. https://geolocateme.app
- GoroOAuthai.usegoro
62 real-world tools for agents: search, scraping, social, enrichment, image, video, voice.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAI agents hallucinate math. Euclid fixes that. Connect once and give your agent 10 deterministic tools: arithmetic, unit conversion, statistics, datetime, finance, regex, color, encoding, validation, and geospatial. Same input, same output, every time.2-

Mapbox MCP Serverofficial
AlicenseAqualityAmaintenanceProvides geospatial intelligence to AI agents through Mapbox APIs, enabling geocoding, routing, POI search, map images, and offline spatial calculations.281,082353MIT- AlicenseAqualityDmaintenanceGeospatial 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.1816MIT

Magic Lane MCP Serverofficial
AlicenseBqualityBmaintenanceEnables AI agents to become geospatially intelligent assistants with tools for location search, smart routing, round trip planning, reverse geocoding, isochrone analysis, route visualization, geofence management, and interactive map display.8297Apache 2.0
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/iamvibhorsingh/bbox-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server