mcp-resilland
Click on "Deploy 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-resilland Analyze cadastral parcel 1248 in Samarqand for drought-tolerant restoration, citing Phase 4 policy documents."
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-resilland
AI-powered spatial intelligence for landscape restoration — now in any MCP client.
Built for the World Bank's $256M RESILAND CA+ program covering Uzbekistan, Kazakhstan, Kyrgyzstan, Tajikistan, and Turkmenistan.
mcp-resilland is a Model Context Protocol
server that makes the full power of the
RESILAND Intelligence platform available to Claude
Desktop, Cursor, Continue, Windsurf, Zed, and any other MCP-capable client.
Ask your AI assistant questions like:
"Analyze cadastral parcel 1248 in Samarqand for drought-tolerant restoration, cite the Phase 4 policy documents, and generate a feasibility report in Turkish."
…and the model will call the right sequence of tools — pulling cadastral geometry, 12-month Sentinel-2 NDVI, OSM infrastructure proximity, country climate indicators, curated species fit, and pgvector-backed policy RAG — then synthesize the answer with Opus 4.7 on the RESILAND backend.
Features
🗺️ 3,563 cadastral forest parcels (Uzbekistan pilot) + all 5 RESILAND CA+ countries
🌱 Curated species catalog — 64 Central Asia tree/shrub species with climate profile, tolerances, restoration priorities, nursery availability
🛰️ Sentinel-2 NDVI history — 12-month median per parcel from local Cloud-Optimized GeoTIFFs
🌡️ Country climate indicators — ERA5 temperature, CHIRPS precipitation, GWIS FWI fire danger, SPI-3 drought, WRI water stress, Hansen tree-cover loss, MODIS dust
🛣️ OSM infrastructure proximity — nearest road / settlement / water body across ~370K features for all 5 countries
📄 Phase 4 policy RAG — pgvector semantic search across World Bank Phase 4 feasibility and nursery handbooks
🤖 Opus 4.7 feasibility reports — 10-section Phase 4-style markdown with citations and token/cost accounting
🌐 Four-language output — English · Türkçe · Русский · Oʻzbekcha
Related MCP server: Gods Eye Geospatial MCP
Install
pip install mcp-resillandOr, if your MCP client supports it (recommended for Claude Desktop):
uvx mcp-resillandConfigure
Create an API key on the RESILAND dashboard: https://resilland.com/settings/api-keys
(Keys are free with soft daily/weekly/monthly quotas — no credit card.)
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json
(macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"resilland": {
"command": "uvx",
"args": ["mcp-resilland"],
"env": {
"RESILLAND_API_KEY": "rsi_live_..."
}
}
}
}Cursor / Continue / Windsurf / Zed
Any MCP-capable client. Point the stdio transport at the
mcp-resilland binary with the same environment variable.
Self-hosted backend
If you run your own RESILAND Intelligence instance, override the upstream:
export RESILLAND_BASE_URL=http://localhost:8000
export RESILLAND_API_KEY=rsi_live_...
mcp-resillandCapabilities
Tools (16)
Tool | What it does |
| Current API key quota state + totals |
| Available models + supported locales/countries |
| Cadastral parcel search (country / viloyat / tuman / bbox) |
| Parcel detail + nearest OSM + nearest nurseries |
| Nurseries across the RESILAND region |
| Single nursery detail |
| Full spatial context: NDVI · climate · species · infrastructure · RAG |
| Opus 4.7 Phase 4-style markdown report with citations |
| EN ↔ TR ↔ RU ↔ UZ translation, markdown-preserving |
| Platform-wide KPIs (docs, chunks, NDVI, parcels, area, reports) ⭐ v0.2 |
| Viewport-scoped counts (bbox filter) ⭐ v0.2 |
| List owned feasibility reports (language / scope / status filter) ⭐ v0.2 |
| Full report detail — sections, siblings, shares, extra_metadata ⭐ v0.2 |
| Translate a report to another language (background task) ⭐ v0.2 |
| Mint a 7-day public share URL ⭐ v0.2 |
| Signed PDF URL (no binary streaming, MCP-friendly) ⭐ v0.2 |
Resources (8)
Resources are URI-addressable, read-only views the host can surface as "attach to chat" items, sidebar references, or autocomplete targets.
URI | Returns |
| Server version + runtime config |
| Parcel detail (same shape as |
| Full nursery collection |
| Curated species record (climate profile, tolerances, restoration use-cases) |
| Country-level climate indicators |
| List of reports owned by the API-key user ⭐ v0.2 |
| Full report detail (sections, siblings, shares, extra_metadata) ⭐ v0.2 |
| Live platform KPIs (same shape as the /stats dashboard) ⭐ v0.2 |
Prompts (3)
Pre-canned conversation starters the user can pick from their client's prompt picker.
Prompt | Purpose |
| Produce a structured restoration recommendation for an area |
| Pick tree species matching given site conditions |
| Generate → translate → share → summarise a full Phase 4 report in one conversation ⭐ v0.2 |
Example conversations
You: List all RESILAND-9 nurseries in Kazakhstan.
Claude: [calls list_nurseries(country="KAZ", category="RESILAND-9")]
Here are the 9 RESILAND program nurseries in Kazakhstan…
You: For parcel 1248, what are the top three drought-tolerant species?
Claude: [calls analyze_area(parcel_id=1248, query="drought tolerant")]
Based on the curated species fit and Phase 4 RAG citations,
the top three are Haloxylon ammodendron, Elaeagnus angustifolia,
and Ulmus pumila…
You: Generate a full feasibility report for the Dargom nursery in Turkish.
Claude: [calls generate_feasibility_report(nursery_id="…", locale="tr")]
I've prepared a 2,300-word Turkish feasibility report.
Estimated cost: $0.08. Sources cited: 7 Phase 4 chunks…Architecture
MCP Client (Claude Desktop / Cursor / Continue / Windsurf / Zed)
│ stdio (JSON-RPC)
▼
mcp-resilland
(FastMCP 3.x · Python 3.10+)
│ httpx async
▼
RESILAND Intelligence backend
https://resilland.com/v1/public/*
│
┌───────────────┼────────────────┐
▼ ▼ ▼
PostGIS pgvector Opus 4.7
(parcels · OSM) (Phase 4 RAG) Sonnet 4.6
Haiku 4.5The MCP server is a stateless proxy. It does not compute, store, or cache — all state lives on the RESILAND backend (PostGIS for geometry, pgvector for RAG, MinIO for tiles, Redis for the Anthropic response cache).
Development
git clone https://github.com/ilhankilic/mcp-resilland
cd mcp-resilland
pip install -e ".[dev]"
# Run against a local RESILAND backend:
RESILLAND_BASE_URL=http://localhost:8000 RESILLAND_API_KEY=rsi_live_... \
python -m mcp_resilland
# Run tests:
pytestProject layout
mcp-resilland/
├── pyproject.toml # hatchling · Apache-2.0 · Python 3.10+
├── README.md # this file
├── LICENSE # Apache 2.0
├── src/mcp_resilland/
│ ├── __init__.py # package metadata
│ ├── __main__.py # mcp-resilland console script entrypoint
│ ├── server.py # FastMCP instance + module wiring
│ ├── client.py # httpx async client (bearer auth)
│ ├── tools.py # 9 MCP tools
│ ├── resources.py # 4 MCP resources (URIs)
│ └── prompts.py # 2 MCP prompts
└── tests/ # pytest + respxAuthors
İlhan Kılıç — lead engineer, architect
Enis Kaan Keskin — spatial data, biodiversity modeling
Acknowledgments
We are grateful for the invaluable advisory support of:
İsmail Belen — President, United Nations Forum on Forests (UNFF)
Doç. Dr. Hülya Hernandez — FAO Türkiye Office (Food and Agriculture Organization of the United Nations, Türkiye Office)
Their guidance on international forest policy frameworks, landscape restoration standards, and Central Asia ecological context was instrumental in shaping this work.
We also thank the World Bank for the RESILAND CA+ Phase 4 feasibility documentation that forms the semantic-search corpus of this platform.
Links
Dashboard: resilland.com
Model Context Protocol: modelcontextprotocol.io
FastMCP: gofastmcp.com
World Bank RESILAND CA+ Program: worldbank.org
License
Licensed under the Apache License, Version 2.0. See LICENSE.
Copyright © 2026 İlhan Kılıç and Enis Kaan Keskin.
Available Tools
16 toolsanalyze_areaA
Build a structured spatial context for this area. Returns a JSON payload containing:
subject (parcel / nursery / drawn polygon)
cadastral attributes
up to 5 nearest-neighbor parcels
up to 5 nearest nurseries with distance (km)
12-month NDVI history (if cached)
country-level climate snapshot (ERA5 / CHIRPS / SPI / FWI)
OSM infrastructure proximity (road / settlement / water)
species fit scores from the curated Central Asia catalog
top-K semantic Phase 4 / handbook chunks (pgvector RAG)
Exactly one of parcel_id | cadastral_number | nursery_id | geojson
must be provided. query focuses the RAG retrieval (e.g. "drought
tolerant halophytes"). depth is shallow | standard | deep.
Locales: en | tr | ru | uz.
Inputs: depth, query, locale, geojson, +3 more. Returns: object
generate_feasibility_reportA
Generate a full Phase 4-style feasibility report with Opus 4.7.
Returns markdown body, source citations (with pgvector similarity), token usage, and cost in USD. Typical output is 1,800-2,500 words across 10 standard sections (Executive Summary, Site Context, Ecological Assessment, Species Plan, Nursery Linkages, Risks, Monitoring Plan, Timeline, Budget indication, Sources).
Exactly one area-reference parameter is required. locale:
en | tr | ru | uz.
Inputs: locale, geojson, parcel_id, nursery_id, +1 more. Returns: object
get_balanceA
Return the current API key's quota state, totals, and scopes.
Inputs: no named parameters. Returns: object
get_nurseryA
Fetch full detail for a single nursery by UUID.
Inputs: nursery_id (required). Returns: object
get_parcelA
Fetch full detail for a single parcel by integer id: cadastral attributes, geometry, centroid, nearest nurseries, and cached OSM infrastructure proximity (nearest road / settlement / water body).
Inputs: parcel_id (required). Returns: object
get_reportA
Full report detail by UUID:
body_markdown (concatenated sections)
sections[]: timeline of every section_key with versions
siblings[]: other-language variants in the same analysis group
shares[]: active / expired share links
pdf_available_langs: which languages can produce a PDF
extra_metadata.verdict + context_snapshot when present (populated on reports generated after 2026-04-24; older reports fall back to section markdowns only).
Inputs: report_id (required). Returns: object
get_report_pdf_urlA
Generate a 7-day public URL that downloads the report as PDF.
Equivalent to create_report_share_link + the public PDF route, but packaged into one call. MCP-friendly: returns a plain URL that Claude or any HTTP client can fetch — no binary streaming.
Inputs: report_id (required), lang. Returns: object
get_stats_overviewA
Live platform KPIs straight from the production DB.
Returns 8 counters (documents, pgvector chunks, avg chunk tokens, NDVI rasters, Sentinel scenes, active data sources, total area hectares, cadastral parcels, nurseries, finalised reports), plus a data-sources panel, per-country coverage (UZB/KAZ/KGZ/TJK/TKM/ TUR), and a recent ingestion activity feed.
Same payload the resilland.com /stats dashboard renders.
Inputs: no named parameters. Returns: object
get_stats_summaryA
Viewport-scoped stats — counts parcels, total area, distinct viloyats (provinces) and nurseries inside a bbox.
Pass all 4 bbox params together for a filtered read; pass none to get global totals. Tuple order: [west, south, east, north] in EPSG:4326.
Inputs: max_lat, max_lng, min_lat, min_lng. Returns: object
list_modelsA
List available LLM + embedding models and supported locales/countries.
Inputs: no named parameters. Returns: object
list_nurseriesA
List forestry nurseries across the RESILAND region.
Inputs: country, category. Returns: object
list_parcelsC
List cadastral forest parcels.
Inputs: bbox, limit, tuman, country, +1 more. Returns: object
list_reportsA
List feasibility reports owned by this API key's user.
Inputs: limit, offset, language, scope_kind, +1 more. Returns: object
translate_briefB
Translate forestry / policy text across the four supported languages (Sonnet 4.6, markdown-preserving).
Inputs: text (required), target_lang (required), source_lang, preserve_markdown. Returns: object
translate_reportA
Translate an existing report to another language — creates a
SIBLING in the same analysis_group. Runs as a background task
so this tool returns in <1 s with the sibling as status='draft'.
Poll get_report(sibling_id) until status flips to 'final'
(~30–90 s on Sonnet 4.6 depending on length).
Inputs: report_id (required), target_language (required), model. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 16 tools
Most tools have distinct purposes (get vs list, overview vs summary, brief vs report translation). Minor overlap exists between analyze_area and get_parcel, both returning parcel and nursery proximity data, but descriptions clarify scope.
All tool names follow a consistent verb_noun snake_case pattern (get_*, list_*, analyze_*, generate_*, translate_*, create_*). No mixed conventions or vague verbs.
16 tools is slightly above the typical 3–15 well-scoped range, but the server covers multiple subdomains (parcels, nurseries, reports, stats, translation, AI analysis), so each tool earns its place.
The surface provides solid coverage for the forestry analysis workflow: list/detail for parcels and nurseries, report lifecycle (list, get, generate, translate, share, PDF), and stats. Minor gaps like no update/delete for reports or parcels are not critical for the domain.
Maintenance
Related MCP Connectors
Geospatial AI MCP server — satellite imagery, embeddings, weather, GNS governance
Italian cadastre for AI agents: 88M parcels, geocoding, OMI values, risk layers.
Open registry of 1.14M+ rooftop-solar detections across France, queryable by natural language.
Verifiable Earth ground truth for AI agents: water, hazard, ground stability, resource, with proof.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProduction-ready satellite imagery analysis server that enables natural language queries for Earth observation data, including land cover classification, vegetation monitoring, water detection, change detection, and automated environmental reporting.MIT
- AlicenseBqualityCmaintenanceProvides sovereign geospatial awareness by wrapping open, non-US-dependent geospatial APIs for AI-agent situational awareness, environmental compliance, and disaster response.546 PyPIMIT
- AlicenseNot gradedqualityCmaintenanceBridges AI models with 24 years of Global Forest Watch data across 165+ countries, enabling natural language queries for deforestation and carbon emission insights.Apache 2.0
- AlicenseAqualityBmaintenanceEnables AI agents to query Earth observation data, satellite imagery, active fires, and weather via natural language, returning interactive maps and briefs.12MIT