OpenDataMCP

OpenDataMCP

Turns the AWS Registry of Open Data and public STAC catalogs into agent-callable tools for dataset search, STAC queries, and NDVI/NDBI/land-cover analysis on Sentinel-2 imagery.

Category
访问服务器

README

Geospatial MCP Build — Open Data MCP, Drought Analysis & FloodGuard Agent

A hands-on exploration of geospatial AI built with Kiro. This repo brings together three things that build on each other:

  1. OpenDataMCP — a custom FastMCP server that turns the AWS Registry of Open Data (RODA) and public STAC catalogs into agent-callable tools (dataset search, STAC queries, and NDVI/NDBI/land-cover analysis on Sentinel-2 imagery).
  2. A drought analysis script — a standalone NDVI comparison of Shasta Lake, CA between a recovery year (2017) and an extreme drought year (2021).
  3. FloodGuard — a geospatially-aware flood-insurance claims agent built on the Strands Agents SDK and deployed to Amazon Bedrock AgentCore, plus the Geospatial Kiro Power Pack used to give Kiro itself geospatial superpowers.

If you want the story of how this was built — the prompts, the tools added, the agent powers wired up — see INTERACTIONS.md. For the verbatim lab instructions and prompts, see GEOSPATIAL_MCP_BUILD_LABS.md.


Repository layout

.
├── open_data_mcp.py              # FastMCP server: RODA + STAC + NDVI/NDBI tools
├── drought_analysis.py           # Shasta Lake NDVI drought comparison (2017 vs 2021)
├── ndvi_shasta_*.tif             # NDVI rasters + difference GeoTIFFs (outputs)
├── shasta_*_ndvi_classified.*    # Land-cover classification outputs (PNG + GeoTIFF)
├── shasta_drought_ndvi_comparison.png
│
├── floodguard/                   # Flood-claims agent on Amazon Bedrock AgentCore
│   ├── app/floodguard/           # Strands agent + self-contained flood tools
│   ├── agentcore/                # AgentCore config + CDK deployment
│   ├── DEPLOYMENT.md             # Full, reproducible build + deploy record
│   └── maui_demo_prompt.txt      # Demo scenario (Maui 2026 flooding)
│
└── sample-geospatial-kiro-power-pack/   # The Geospatial Kiro Power (MCP servers + skills)

1. OpenDataMCP server

open_data_mcp.py is a single-file MCP server. It fetches the RODA NDJSON index once (cached for an hour), then exposes discovery and analysis tools over stdio. Imagery is read cloud-natively via COG byte-range reads — no bulk downloads.

Tools

Tool What it does
search_datasets Search RODA datasets by name
search_datasets_by_tags Filter RODA datasets by tags (match all/any)
get_dataset_info Full record for a specific dataset
search_stac_endpoints Discover STAC endpoints referenced in RODA datasets
query_stac_items Query a STAC collection by bbox / datetime / cloud cover
get_scene_thumbnail Thumbnail + true-color URL for a specific scene
calculate_ndvi NDVI (vegetation) for a Sentinel-2 scene → GeoTIFF + stats
calculate_ndbi NDBI (built-up) for a Sentinel-2 scene → GeoTIFF + stats
compare_ndvi_sidebyside Two-scene NDVI comparison figure + difference raster
compare_ndbi_sidebyside Two-scene NDBI comparison figure + difference raster
classify_ndvi Threshold an NDVI raster into 5 land-cover classes + map

Run it

# Dependencies: fastmcp, httpx, numpy, rasterio, pyproj, scipy, matplotlib
uv run python open_data_mcp.py     # serves over stdio

Register it with Kiro (MCP)

Add it to your workspace MCP config at .kiro/settings/mcp.json:

{
  "mcpServers": {
    "OpenDataMCP": {
      "command": "uv",
      "args": ["run", "--directory", "/absolute/path/to/repo", "open_data_mcp.py"],
      "disabled": false,
      "autoApprove": ["search_datasets", "search_datasets_by_tags", "get_dataset_info"]
    }
  }
}

2. Drought analysis (Shasta Lake)

drought_analysis.py loads two pre-computed NDVI rasters (2017 recovery vs 2021 extreme drought), computes per-class vegetation statistics, writes a difference raster, and renders a three-panel comparison figure.

uv run python drought_analysis.py
# → shasta_drought_ndvi_comparison.png
# → ndvi_shasta_diff_2021_vs_2017.tif

The report quantifies the drought signal: lower mean NDVI in 2021, a rise in the water/bare-soil class as the lake receded, and dense-vegetation loss on the surrounding hillsides.


3. FloodGuard agent (Amazon Bedrock AgentCore)

floodguard/ is a demo AI support chatbot for a fictional flood-insurance agency. It is geospatially aware, understands Sentinel-2 (optical, NDWI) and Sentinel-1 (SAR VV backscatter) imagery, and triages flood claims from a before/after scene pair.

Highlights:

  • Built with the Strands Agents SDK, wrapped by BedrockAgentCoreApp.
  • Seven self-contained tools (geocode_place, search_flood_scenes, analyze_flood_change, analyze_sar_flood, assess_flood_claim, …) so the agent behaves identically locally and in the cloud.
  • Optional OpenDataMCP integration over stdio in local dev (set OPEN_DATA_MCP_PATH).
  • Deployed via AWS CDK to AgentCore Runtime (CodeZip, ARM64, Python 3.12).

Full, reproducible build and deploy steps — including the Maui 2026 flooding demo — are in floodguard/DEPLOYMENT.md.

Security note: the reference deployment uses networkMode: PUBLIC. Access is still gated by IAM SigV4 (no unauthenticated calls), but for production you should scope invoke permissions to specific principals and consider a JWT authorizer or VPC networking.


4. Geospatial Kiro Power Pack

sample-geospatial-kiro-power-pack/ is a modular Kiro Power that gives Kiro unified access to the fragmented geospatial landscape. It is organized around a dual-fragmentation framing:

  • Pillar A — data access: geo-stac, geo-vector, geo-geocode-route, geo-terrain, geo-weather-climate, geo-biodiversity, geo-ogc.
  • Pillar B — processing/compute: geo-ops, geo-formats, geo-query, geo-raster, geo-pointcloud, geo-index, geo-3d, geo-warehouse.
  • Pillar C — GeoAI: geo-foundation-models (Clay, Prithvi, SatCLIP, SAMGeo), geo-embedding-search.
  • Plus a hub (kiro-geospatial), a shared base (geo-common), commercial imagery, and an aws-geo-compute peer power.

It also ships skills (COG/GeoParquet guidance, CRS handling, tool selection, spatial SQL) and steering workflows (COG conversion, zonal statistics, STAC discover→analyze, embedding change detection). See its own bundle-manifest.json and examples/ for details.

Install it as a Kiro Power

Kiro Powers can be installed straight from GitHub repos. To add the geospatial power on the remote machine where you are running Kiro:

  1. Copy this link and paste it into your browser on the remote machine (where Kiro runs): https://github.com/aws-samples/sample-geospatial-kiro-power-pack

  2. Open a new terminal in the workshop folder, clone the repository, and change into it:

    git clone https://github.com/aws-samples/sample-geospatial-kiro-power-pack.git
    cd ./sample-geospatial-kiro-power-pack/
    
  3. Follow the Installation instructions from the repository and install all of the MCP servers listed, then configure them. You do not need to create a new uv environment — you are already in one that is activated.

Your existing MCP servers are left untouched. Once installation completes, you should have the full set of geospatial powers (the hub, data-access, processing, and GeoAI servers listed above) available in Kiro.


Key takeaways

  • MCP turns open geospatial data into agent tools. A single small server (open_data_mcp.py) makes 1,000+ RODA datasets and public STAC catalogs directly callable by an AI agent.
  • Cloud-native reads beat downloads. Every raster operation here uses COG byte-range reads over HTTPS against public, credential-free buckets — fast enough to run inside an AgentCore microVM.
  • Portability by design. FloodGuard's tools are self-contained so the agent behaves the same in local dev and when deployed; the MCP server is an optional local enhancement, not a runtime dependency.
  • Same science, two indices, two sensors. NDVI/NDWI/NDBI are simple band-ratio indices; swapping bands (and using SAR when it's cloudy) covers vegetation, water, and built-up analysis with one mental model.
  • Powers scale Kiro's reach. The Geospatial Power Pack packages dozens of specialized MCP servers behind one credential surface, with skills and steering that teach Kiro when to use each one.

Prerequisites

  • Python 3.10+ (3.12 recommended) and uv
  • Node.js 20+ (for the AgentCore CDK deploy path)
  • AWS credentials + Bedrock model access (only for deploying FloodGuard)

License

See the individual subprojects for their licenses (the Power Pack includes its own LICENSE and NOTICE).

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选