mcp-server-gis-helper
OfficialClick on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-server-gis-helperdraw a polygon on the map for the flood zone screening"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-server-gis-helper
An MCP server that lets a user draw GIS geometry on an interactive map and returns clean, validated GeoJSON — ready to hand off to other GIS MCP servers such as FEMA NFHL flood screening or USGS National Map hydrography.
It solves the "how do I generate a complex shape and pass it to the geometry-based tools?" problem: instead of hand-typing coordinates, the user sketches a polygon, line, or point on a Leaflet map and gets back a compact GeoJSON string.
This server does not query flood/waterway services itself. It only produces and validates geometry; the agent passes that geometry to the downstream tools.
Tools
Tool | Purpose |
| Interactive entry point. Returns a Prefab MCP App with a link to a browser drawing map and a "Load drawn geometry" button. Optional |
| Retrieves the shape the user drew and saved on the map for a given |
| Validates/normalizes an arbitrary GeoJSON string you already have (no map needed). Closes polygon rings, checks WGS84 ranges, unwraps Feature/FeatureCollection. |
All geometry is WGS84 decimal degrees in GeoJSON [lon, lat] order. Supported
types: Point, MultiPoint, LineString, MultiLineString, Polygon,
MultiPolygon, plus the BoundingBox shorthand
({"type": "BoundingBox", "bbox": [minLon, minLat, maxLon, maxLat]}) — exactly what
the FEMA/USGS tools accept.
Related MCP server: lunar
How it works (the map bridge)
Prefab's Embed renders a sandboxed iframe whose content cannot write back into
Prefab state, so the drawing map cannot live purely inside the MCP app. Instead a
small companion HTTP "map bridge" (Starlette) serves the Leaflet + Leaflet.draw
page:
gis_open_mapcreates a draw session and returns a Prefab app with a link to<public_url>/map?session=<id>.The user opens that link in a browser, draws one shape, and clicks Save. The page
POSTs the GeoJSON to<public_url>/session/<id>/geometry, where it's validated and stored in an in-memory session store.gis_get_drawn_geometryreads the stored geometry out of the shared store and returns it as a compact GeoJSON string.The agent passes that string to
nfhl_screen_flood_zone,hydro_find_waterways, etc.
Transports (mirrors the sibling GIS servers)
stdio (local MCP clients like Claude Desktop/Code): MCP runs over stdio and the map bridge is started on a
localhostdaemon thread (default127.0.0.1:8765).HTTP (deployed / containerized): when
PORT(orDATABRICKS_APP_PORT) is set, MCP is served at/mcpand the bridge routes (/map,/session/{id}/geometry,/health) are mounted onto the same port.
Configuration (all optional)
Env var | Default | Purpose |
|
| Bridge bind host (stdio mode) |
|
| Bridge port (stdio mode) |
|
| Origin the browser uses to reach the bridge (set behind a proxy/container) |
| OpenStreetMap | Leaflet basemap tile URL template |
| OSM | Tile attribution string |
| — | If set, selects HTTP transport for MCP |
Copy .env.example to .env for local overrides.
Running
uv sync
# stdio (local MCP client)
uv run python main.py
# HTTP (deployed)
PORT=8080 uv run python main.pyExample workflow
User: I want to screen a project area for FEMA flood zones.
Agent: (calls gis_open_map centered on the site)
User: (draws a polygon on the map, clicks Save, clicks "Load drawn geometry")
Agent: (gis_get_drawn_geometry -> geometry string)
Agent: (passes geometry to nfhl_screen_flood_zone)If the user already has coordinates, skip the map and use gis_validate_geometry
to clean them up before querying downstream.
Project layout
src/gis_helper_mcp/
├── app.py # FastMCP init, instructions, transport, bridge startup
├── models.py # dataclasses (DrawSession, GeometrySummary) + constants
├── utils.py # GeoJSON validation/normalization, summaries, session store, config
├── bridge.py # Starlette map-bridge routes + runners
├── static/
│ └── map.html # Leaflet + Leaflet.draw drawing page (CDN assets)
└── tools/
├── __init__.py # register_tools(mcp)
├── open_map.py # gis_open_map (Prefab app)
├── get_drawn_geometry.py # gis_get_drawn_geometry
└── validate_geometry.py # gis_validate_geometryMaintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityDmaintenanceMachine-native GIS processing API for AI agents and developers. Convert, reproject, validate, repair, buffer, clip, dissolve, and tile vector geodata across 25 endpoints. Pay-per-use USDC on Solana Mainnet ($0.01/op). No accounts, no API keys. Remote MCP SSE.
- Alicense-qualityBmaintenanceBrowser-based geometry processing server that enables AI agents to create geometry, run analysis and operators, inspect results, and take screenshots via MCP.274MIT
- Flicense-qualityDmaintenanceContainerized MCP server with 15 geospatial data tools exposed via HTTP API for Intercom integration.
- Alicense-qualityCmaintenanceEnables searching and querying City of Pittsburgh GIS open geospatial data (parcels, zoning, public works) through ArcGIS feature services via MCP tools.8MIT
Related MCP Connectors
MCP server for Mireye Earth — federal-source-cited geospatial data for any MCP-aware agent.
Hosted weather data MCP for discovery, validation, and OAuth-protected GribStream queries.
Geospatial MCP server for earthquake, tsunami, volcano, disaster, and FX data queries.
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/GSA-TTS/mcp-server-gis-helper'
If you have feedback or need assistance with the MCP directory API, please join our Discord server