Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
MCP server for GDAL geospatial tools
gdal-mcp exposes raster and vector geospatial operations through an MCP server. Agents can discover workspace catalogs, inspect metadata, and run tools for conversion, reprojection, clipping, buffering, querying, and raster statistics. It also includes reflection prompts and middleware that require a structured justification before certain operations run, so the agent has to explain choices like CRS and resampling method before acting.
Builders who want their agent to work with raster and vector geospatial data from a local workspace.
You can let your agent inspect and process geospatial files without hand-driving GDAL workflows, while keeping important method choices documented.
What it does
Raster tools
`raster_info`, `raster_convert`, `raster_reproject`, `raster_stats`, and `raster_query` for common raster workflows.
Vector tools
`vector_info`, `vector_convert`, `vector_reproject`, `vector_clip`, `vector_buffer`, `vector_simplify`, and `vector_query` for vector data work.
Workspace and metadata resources
Resources for catalog browsing, metadata lookup, reference material, and saved query results through `workspace://`, `metadata://`, `reference://`, and `query://result/{id}`.
Reflection middleware
Structured justification is required for methodology-sensitive tools, with cached rationale reused across later calls.
Prompt set
Prompts such as `justify_crs_selection`, `justify_resampling_method`, and `justify_query_extent` guide the agent through the reflection step.
Workspace scoping
`GDAL_MCP_WORKSPACES` limits which directories the server may access, with optional `RASTER=true` and `VECTOR=true` tool-surface flags.
How to get it
- 1Run
uvx --from gdal-mcp gdal --transport stdio
- 2Run
docker build -t gdal-mcp . docker run -i gdal-mcp gdal --transport stdio
- 3Run
git clone https://github.com/Wayfinder-Foundry/gdal-mcp.git cd gdal-mcp uv sync uv run gdal --transport stdio
README
gdal-mcp
MCP server exposing GDAL/Rasterio operations to AI agents, with a reflection middleware that requires structured justification before executing operations whose methodology matters (CRS choice, resampling method, query extent).
Install
Via uvx (recommended)
uvx --from gdal-mcp gdal --transport stdio
Via Docker
docker build -t gdal-mcp .
docker run -i gdal-mcp gdal --transport stdio
Local development
git clone https://github.com/Wayfinder-Foundry/gdal-mcp.git
cd gdal-mcp
uv sync
uv run gdal --transport stdio
Configure your MCP client
Claude Desktop
Add to claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/,
Windows: %APPDATA%\Claude\, Linux: ~/.config/Claude/):
{
"mcpServers": {
"gdal-mcp": {
"command": "uvx",
"args": ["--from", "gdal-mcp", "gdal", "--transport", "stdio"],
"env": {
"GDAL_MCP_WORKSPACES": "/path/to/your/geospatial/data"
}
}
}
}
Restart Claude Desktop. The MCP server indicator should appear, and the
raster_* and vector_* tools become available.
Workspace scoping
GDAL_MCP_WORKSPACES is a colon-separated list of directories the server
is allowed to touch. If unset, all paths are allowed and a warning is logged.
Optional tool-surface flags: RASTER=true, VECTOR=true. See
docs/ENVIRONMENT_VARIABLES.md for the full set.
Tools
- Raster:
raster_info,raster_convert,raster_reproject,raster_stats,raster_query - Vector:
vector_info,vector_convert,vector_reproject,vector_clip,vector_buffer,vector_simplify,vector_query - Resources: catalog (
workspace://...), metadata (metadata://...), reference (reference://...), query results (query://result/{id}) - Prompts:
justify_crs_selection,justify_resampling_method,justify_query_extent(and more undersrc/prompts/)
See TOOLS.md for parameters, return shapes, and worked examples.
The reflection middleware
Tools whose methodology matters refuse to execute until the calling agent produces a structured justification. The flow is:
- Agent calls e.g.
raster_reproject(dst_crs="EPSG:3857", resampling="cubic", ...). - Middleware checks
.preflight/justifications/{domain}/for a matching hash. - On miss, the call raises
ToolErrorwith a hint pointing at the relevant prompt (e.g.justify_crs_selection). - Agent calls the prompt, fills out the
Justificationschema (intent, alternatives considered, choice, tradeoffs, confidence), and re-invokes the tool with a__reflectionpayload. - The justification is cached domain-keyed, so a CRS rationale for
EPSG:3857 satisfies both
raster_reprojectandvector_reprojecton subsequent calls.
See docs/REFLECTION.md for the schema and cache layout, and docs/PHILOSOPHY.md for why this exists.
Documentation
- TOOLS.md — tool reference
- docs/ENVIRONMENT_VARIABLES.md — runtime config
- docs/REFLECTION.md — reflection middleware internals
- docs/PHILOSOPHY.md — design philosophy and direction
- docs/ROADMAP.md — release history and direction
- CHANGELOG.md — versioned changelog
- CONTRIBUTING.md — contribution guide
Troubleshooting
Access denied: path outside allowed workspaces — set GDAL_MCP_WORKSPACES
to include the directory in question (see "Workspace scoping").
MCP client doesn't see the server — verify uvx --from gdal-mcp gdal --help
runs on its own, then restart the client after editing its config file.
License
MIT — see LICENSE.
Files in the repo
- .devcontainer
- .github
- docs
- src
- test
- .dockerignore
- .fastmcp.json.example
- .gitignore
- .pre-commit-config.yaml
- .ruff.toml
- CHANGELOG.md
- CODE_OF_CONDUCT.md
- CONTRIBUTING.md
- Dockerfile
- fastmcp.json
- LICENSE
- mypy.ini
- pyproject.toml
- README.md
- TOOLS.md
- uv.lock
Discussion (0)
Ask about usage, or say what you built with itSign in to join the discussion.
No comments yet. Be the first to say what this is good for.
More connectors
High-performance code intelligence MCP server. Indexes codebases into a persistent knowledge graph — average repo in milliseconds. 158 languages, sub-ms queries, 99% fewer tokens. Single static binary, zero dependencies.

Universal provider proxy for OpenAI Codex & Claude Code — use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, SDK, and Claude Code
Git-native persistent memory for AI coding agents. Implements Google OKF v0.2 with sub-300µs in-memory BM25 search, embedded MCP server, and progressive disclosure. Slashes token bloat by 80% with zero external databases or dependencies. Built in pure Go.
Local-first code intelligence graph for MCP and CLI. Builds a persistent map of your codebase so AI coding tools read only what matters, with benchmarked context reductions on reviews and large-repo workflows.
Stop your AI from making things up — it proposes, deterministic tools decide, every claim checked against ground truth with evidence. Grounded facts and context survive resets. Reverse engineering is the proving ground. MCP server + CLI.