Skip to main content
Glama

🌍 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.

Node.js License: MIT


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 confignpx -y bbox-mcp-server and 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."

list_osm_tags returns curated tag combos. No more hallucinated amenity=grocery.

"How many hospitals are in this district?"

aggregate_overpass_h3 queries Overpass and bins results into H3 hexagons server-side.

"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

get_bounds

Convert and project a bbox across formats and coordinate systems

bbox, epsg, format, coord_order, zoom

get_h3_indices

Generate H3 hex cell indices covering a bbox

bbox, resolution, compact

generate_share_url

Create a shareable map link for a bbox

bbox

search_overpass

Query OpenStreetMap via Overpass QL within a bbox or radius

bbox, query, limit, radius_meters

list_osm_tags

Look up correct OSM tags for a category

category

aggregate_overpass_h3

Run an Overpass query and bin results into H3 hexagons

bbox, query, resolution

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

MAPBOX_ACCESS_TOKEN

Enables natural language location search (e.g. "San Francisco")

OVERPASS_API_URL

auto

Custom Overpass endpoint. By default, rotates between overpass-api.de and kumi.systems.

NOMINATIM_API_URL

https://nominatim.openstreetmap.org

Custom Nominatim endpoint. Set this if hosting as a shared/remote MCP server or using a commercial provider.

MAX_H3_CELLS

50000

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

bbox

string

Input geometry (coordinates, WKT, GeoJSON, ogrinfo extent)

epsg

string

"4326"

Target projection. Unknown codes auto-fetched from epsg.io.

format

string

"csv"

Output: csv, wkt, geojson-bbox, geojson-polygon, leaflet, overpass, ogc-bbox, kml, stac-bbox

coord_order

string

"lng,lat"

Swap to "lat,lng" for APIs that expect latitude first

zoom

number

15

Zoom level for tile coordinate calculation

precision

number

6

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

bbox

string

Input geometry

resolution

number

H3 resolution (0–15)

compact

boolean

false

Merge cells into coarser parents where possible

return_geometry

boolean

false

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

bbox

string

Input geometry

query

string

Overpass QL (e.g. nwr["amenity"="cafe"]). The server wraps it in the appropriate spatial filter automatically.

radius_meters

number

Search radius in metres. Use only when the user specifies an explicit distance (e.g. 2000 for "within 2km"). Omit for area/region queries.

limit

number

100

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

category

string

Broad category (e.g. "food", "health", "transport")

💡 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

bbox

string

Input geometry

query

string

Overpass QL core query

resolution

number

8

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

bbox

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

40.7128,-74.0060,40.7580,-73.9855

WKT

POLYGON((-74.006 40.712, -73.985 40.712, ...))

GeoJSON

{"type":"Feature","geometry":{...}}

GeoJSON bbox

{"bbox":[-74.006,40.712,-73.985,40.758]}

ogrinfo extent

Extent: (-74.006, 40.712) - (-73.985, 40.758)

Space-separated

40.7128 -74.0060 40.7580 -73.9855


🤖 For AI Agent Developers

Response structure

Every tool returns two content blocks:

  1. Human-readable text — formatted output with the map verification link

  2. 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

MCP Badge

Available Tools

6 tools
aggregate_overpass_h3B

Executes an Overpass query and bins the results into H3 hexagons at a specified resolution to analyze spatial density.

ParametersJSON Schema
NameRequiredDescriptionDefault
locationNoA text location to search for (e.g. 'Seattle').
bboxNoThe bounding box geometry to parse.
queryYesThe Overpass QL core query (e.g. `nwr["amenity"="cafe"]`).
resolutionYesThe H3 resolution level (0-15) for binning. Default is 8.

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

generate_share_urlA

Generates a URL that links to the visual Bounding Box tool to display these coordinates on a map. Supports WKT, GeoJSON, ogrinfo extent, and raw coordinate strings as input.

ParametersJSON Schema
NameRequiredDescriptionDefault
bboxYesThe geometry to parse. Can be a raw bounding box string ('lat1,lng1,lat2,lng2'), WKT, GeoJSON, or ogrinfo extent.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavioral traits. It describes the input formats but does not mention side effects (e.g., no modifications), required permissions, error handling, or rate limits. For a read-only URL generator, the lack of explicit safety cues is a gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loading the purpose and listing input formats without extraneous detail. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (one required parameter, no output schema, no annotations), the description covers the essential functionality and input constraints. It could optionally include an example URL or mention of the exact bounding box format, but is largely sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%—the single parameter 'bbox' is well-documented in the schema. The description adds context about supported formats, but this does not significantly exceed the schema's own description. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: generating a URL for the visual Bounding Box tool. It specifies the output (a URL) and the input formats (WKT, GeoJSON, etc.). This distinguishes it from sibling tools like 'get_bounds' or 'search_overpass', which serve different functions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for generating map URLs from coordinates, but lacks explicit guidance on when to use this tool instead of siblings. No when-not-to-use conditions or alternatives are mentioned.

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'.

ParametersJSON Schema
NameRequiredDescriptionDefault
locationNoA text location to search for (e.g. 'New York City'). Requires MAPBOX_ACCESS_TOKEN env var. Either 'location' or 'bbox' MUST be provided.
bboxNoThe 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.
epsgNoThe projected EPSG code (e.g. '3857'). Defaults to '4326' (WGS84). Over 3,900 bundled projections; unknown codes are auto-fetched from epsg.io.
formatNoFormat of the output. Options: wkt, geojson-bbox, leaflet, overpass, ogc-bbox, kml, geojson-polygon, csv, stac-bbox. Default: csv.
coord_orderNoToggle between 'lng,lat' (default) and 'lat,lng' coordinate ordering in the formatted output. Useful for APIs that expect swapped coordinate orders.
zoomNoThe map zoom level (0-22) used to calculate the map tile coordinates for the centroid. Defaults to 15.
precisionNoThe number of decimal places to output coordinate strings as (defaults to 6).

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
locationNoA text location to search for (e.g. 'San Francisco'). Requires MAPBOX_ACCESS_TOKEN env var. Either 'location' or 'bbox' MUST be provided.
bboxNoThe 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.
resolutionYesThe H3 resolution level, from 0 to 15. (e.g. 7)
compactNoWhether to return a compacted list of cells (mixing resolutions) to minimize response size. Defaults to false.
return_geometryNoIf true, return GeoJSON FeatureCollection with hex boundary polygons in addition to cell IDs. Defaults to false.

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYesBroad category to look up (e.g. 'food', 'health', 'transport', 'leisure', 'retail').

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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"]

ParametersJSON Schema
NameRequiredDescriptionDefault
locationNoA text location to search for (e.g. 'San Francisco', 'JFK Airport'). Requires MAPBOX_ACCESS_TOKEN env var. Either 'location' or 'bbox' MUST be provided.
bboxNoThe 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.
queryYesThe 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_metersNoSearch 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'.
limitNoMaximum number of elements to return. Default is 100. Increase if you need more results.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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. 1 tool updatev1.2.5
    • Changedsearch_overpass4 fields changed
      • changedInput schema / properties / limit / description
        Previous 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."
      • changedInput schema / properties / location / description
        Previous 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."
      • changedInput schema / properties / query / description
        Previous 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."
      • addedInput schema / properties / radius_meters
        Added 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"
        +}
  2. 6 tool updatesv1.2.4
    • First observedaggregate_overpass_h3
    • First observedgenerate_share_url
    • First observedget_bounds
    • First observedget_h3_indices
    • First observedlist_osm_tags
    • First observedsearch_overpass

TDQS

A4/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivitySlowing
ResponsivenessNo issues

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

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    AI 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
    -
  • A
    license
    A
    quality
    D
    maintenance
    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.
    18
    16
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables 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.
    8
    29
    7
    Apache 2.0

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/iamvibhorsingh/bbox-mcp-server'

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