Skip to main content
Glama
tharlestsa

OpenLandMap MCP Server

by tharlestsa

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
catalog_info

Return metadata about the OpenLandMap STAC root catalog.

Returns the catalog identifier, description, STAC version, total number of collections, and conformance classes.

Example return: {"id": "openlandmap", "stac_version": "1.0.0", "total_collections": 104, ...}

list_collections

List available data collections in the OpenLandMap catalog.

Supports filtering by thematic category and keyword search in title/description. Returns lightweight summaries for browsing.

Args: theme: Filter by theme alias ('soil', 'vegetation', 'climate', 'land_cover', 'terrain', 'water', 'atmosphere', 'population') or native theme name. Case-insensitive. keyword: Text search across title, description, and keywords. Case-insensitive. limit: Maximum number of results (1-200, default: 50).

Returns: List of CollectionSummary dicts with id, title, theme, temporal extent, item count, etc.

Example: list_collections(theme="soil", limit=10) list_collections(keyword="organic carbon")

get_collection_schema

Return the full schema of a collection including asset definitions.

Provides complete metadata: asset types with MIME types and roles, STAC extensions, spatial/temporal extent, contact info, style URLs, related links (DOI, documentation, thumbnail).

Args: collection_id: Collection identifier (e.g. 'organic.carbon_usda.6a1c'). Use list_collections() to discover available IDs.

Returns: CollectionSchema dict with all metadata fields.

Example: get_collection_schema("organic.carbon_usda.6a1c")

compare_collections

Compare multiple collections side by side.

Shows temporal coverage, resolution, variable/layer info, theme, and keyword overlap for each collection. Useful for deciding which dataset best fits an analysis.

Args: collection_ids: List of collection IDs to compare (2-10). Use list_collections() to discover IDs.

Returns: CollectionComparison with one entry per collection.

Example: compare_collections(["organic.carbon_usda.6a1c", "ph.h2o_usda.6a1c"])

get_collection_temporal_stats

Get temporal statistics for a collection.

Returns earliest/latest dates, total item count, distribution by year, and estimated update frequency (median interval between items).

Args: collection_id: Collection identifier.

Returns: TemporalStats dict with dates, counts, and year distribution.

Example: get_collection_temporal_stats("evi_mod13q1.tmwm.inpaint")

find_related_collections

Find collections related by theme or temporal overlap.

Useful for discovering complementary datasets (e.g., finding climate data to correlate with vegetation indices).

Args: collection_id: Collection identifier to find relations for.

Returns: List of RelatedCollection dicts with relation type.

Example: find_related_collections("evi_mod13q1.tmwm.inpaint")

get_soil_collections

List all soil-related collections with depth information.

Shortcut for soil analysis. Returns collections about bulk density, organic carbon, pH, sand/clay/silt content, texture, water content, and soil taxonomy.

Returns: List of CollectionSummary dicts for soil collections.

get_vegetation_collections

List all vegetation-related collections.

Returns collections about EVI, FAPAR, forest cover, potential vegetation, and plant functional types.

Returns: List of CollectionSummary dicts for vegetation collections.

get_land_cover_collections

List all land cover and land use collections.

Returns collections about land cover classification, cropland, pasture, urban areas, and land use change.

Returns: List of CollectionSummary dicts for land cover collections.

search_items

Search items in a STAC collection with spatial and temporal filters.

Items represent temporal snapshots of the collection's data. Each item contains one or more assets (Cloud-Optimized GeoTIFFs).

Args: collection_id: Collection ID (e.g. 'organic.carbon_usda.6a1c'). bbox: Bounding box in WGS84 [min_lon, min_lat, max_lon, max_lat]. Example: [-54.0, -18.0, -45.0, -12.0] (part of Cerrado). datetime_range: ISO 8601 interval. Examples: '2010-01-01/2020-12-31', '2015-06-01/..', '../2020-01-01' limit: Max items to return (1-200, default: 20). offset: Number of results to skip for pagination.

Returns: ItemCollection with total_matched, returned, items, next_offset.

Example: search_items("organic.carbon_usda.6a1c", bbox=[-54,-18,-45,-12], limit=5)

get_item_detail

Get full details for a specific STAC item including all assets.

Returns complete metadata, bounding box, geometry, temporal range, and all available assets with resolved URLs, MIME types, roles, and file sizes.

Args: collection_id: Collection identifier. item_id: Item identifier within the collection.

Returns: ItemDetail dict with geometry, properties, and assets list.

Example: get_item_detail("organic.carbon_usda.6a1c", "organic.carbon_usda.6a1c_20180101_20181231")

list_items_temporal

List all items in a collection organized chronologically.

Shows the temporal coverage of the dataset — useful for understanding data availability and update frequency.

Args: collection_id: Collection identifier.

Returns: List of TemporalSlice dicts sorted by start date.

Example: list_items_temporal("evi_mod13q1.tmwm.inpaint")

find_items_by_point

Find items that cover a specific geographic point.

Searches across one or more collections for items whose bounding box contains the given coordinate. Filters collections by spatial extent before fetching items.

Args: lon: Longitude in WGS84 (-180 to 180). lat: Latitude in WGS84 (-90 to 90). collection_ids: Collections to search. If None, searches all (filtered by spatial extent first, max 50).

Returns: List of ItemMatch dicts with collection_id, item_id, temporal info.

Example: find_items_by_point(-47.9, -15.8) # Brasília find_items_by_point(-47.9, -15.8, ["organic.carbon_usda.6a1c"])

get_asset_url

Resolve the full URL and metadata for a specific asset.

Returns the direct S3 URL, MIME type, roles, COG status, and S3 bucket/key for programmatic access.

Args: collection_id: Collection identifier. item_id: Item identifier. asset_key: Asset key within the item (e.g. the layer name).

Returns: AssetInfo dict with url, type, roles, is_cog, s3_bucket, s3_key.

Example: get_asset_url("organic.carbon_usda.6a1c", "organic.carbon_usda.6a1c_20180101_20181231", "organic.carbon_usda.6a1c_m_1km_b30cm_s")

list_assets_for_item

List all assets of a specific item with complete metadata.

Returns every asset including data layers, thumbnails, style files (SLD/QML), with URLs, MIME types, file sizes, and roles.

Args: collection_id: Collection identifier. item_id: Item identifier.

Returns: Dict mapping asset keys to AssetInfo dicts.

Example: list_assets_for_item("organic.carbon_usda.6a1c", "organic.carbon_usda.6a1c_20180101_20181231")

get_all_data_assets

Get only data assets (excluding thumbnails, styles).

Filters assets by role='data', returning only actual raster data layers (Cloud-Optimized GeoTIFFs). Useful when you need download URLs.

Args: collection_id: Collection identifier. item_id: Item identifier.

Returns: List of AssetInfo dicts with role 'data'.

Example: get_all_data_assets("organic.carbon_usda.6a1c", "organic.carbon_usda.6a1c_20180101_20181231")

get_asset_download_info

Get download instructions for an asset in multiple formats.

Returns the direct S3 URL plus ready-to-use commands and code snippets for curl, wget, Python (rasterio), and R (terra).

Args: collection_id: Collection identifier. item_id: Item identifier. asset_key: Asset key to get download info for.

Returns: DownloadInfo dict with url and code snippets.

Example: get_asset_download_info("organic.carbon_usda.6a1c", "organic.carbon_usda.6a1c_20180101_20181231", "organic.carbon_usda.6a1c_m_1km_b30cm_s")

get_visualization_assets

Get visualization-related assets: thumbnails, QML, SLD styles.

Returns assets useful for previewing and styling the data in GIS applications like QGIS (QML) or WMS services (SLD).

Args: collection_id: Collection identifier. item_id: Item identifier.

Returns: List of AssetInfo dicts with visualization roles.

Example: get_visualization_assets("organic.carbon_usda.6a1c", "organic.carbon_usda.6a1c_20180101_20181231")

get_bbox_for_region

Get the WGS84 bounding box for a named region.

Supports countries, Brazilian states, Brazilian biomes, continents, and macro-regions. Useful for building spatial queries.

Args: region_name: Region name (case-insensitive, underscores for spaces). Examples: 'brazil', 'goias', 'cerrado', 'europe', 'south_america', 'amazonia_legal', 'global'.

Returns: Dict with bbox [west, south, east, north] and region name. If not found, returns error with list of available regions.

Example: get_bbox_for_region("cerrado") # → {"region": "cerrado", "bbox": [-60.47, -24.68, -41.28, -2.33]}

find_collections_for_bbox

Find collections whose spatial extent intersects a bounding box.

Searches all collections for spatial overlap with the given area. Optionally filters by theme.

Args: bbox: Bounding box in WGS84 [min_lon, min_lat, max_lon, max_lat]. theme: Optional theme filter ('soil', 'vegetation', etc.).

Returns: List of CollectionMatch dicts with id, title, theme, extents.

Example: find_collections_for_bbox([-54, -18, -45, -12], theme="soil")

get_collection_spatial_coverage

Get the full spatial coverage details of a collection.

Returns the bounding box, a GeoJSON polygon of the extent, the native ground sample distance (resolution in meters), and the coordinate reference system.

Args: collection_id: Collection identifier.

Returns: SpatialCoverage dict with bbox, geometry, gsd, and CRS.

Example: get_collection_spatial_coverage("organic.carbon_usda.6a1c")

discover_data_for_topic

Discover relevant datasets for a research topic.

Given a natural language description of a topic (e.g., 'soil organic carbon', 'Amazon deforestation', 'air quality', 'snow cover'), searches across all collection titles, descriptions, and keywords to find relevant datasets ranked by relevance.

Args: topic: Research topic in natural language. Examples: 'carbono orgânico do solo', 'vegetation indices', 'land surface temperature', 'human footprint'.

Returns: TopicDiscovery dict with ranked results and total found.

Example: discover_data_for_topic("soil organic carbon") discover_data_for_topic("desmatamento na Amazônia")

get_data_timeline

Generate a structured timeline of data availability across collections.

Shows when data is available for each collection, useful for planning multi-temporal or multi-variable analyses.

Args: collection_ids: List of collection IDs (1-10).

Returns: DataTimeline dict with entries sorted chronologically.

Example: get_data_timeline(["organic.carbon_usda.6a1c", "evi_mod13q1.tmwm.inpaint"])

find_overlapping_datasets

Find datasets with temporal overlap for correlation analysis.

Given a collection and a year range, finds all other collections that have data within that period. Useful for multi-variable studies.

Args: collection_id: Reference collection identifier. start_year: Start year (inclusive). end_year: End year (inclusive).

Returns: List of OverlapInfo dicts with overlapping period details.

Example: find_overlapping_datasets("organic.carbon_usda.6a1c", 2010, 2020)

get_stac_item_as_geojson

Return a STAC item as a pure GeoJSON Feature.

Ready for use in any GIS system, web map, or geospatial tool. Strips STAC-specific fields and returns standard GeoJSON.

Args: collection_id: Collection identifier. item_id: Item identifier.

Returns: GeoJSON Feature dict with geometry, properties, and bbox.

Example: get_stac_item_as_geojson("organic.carbon_usda.6a1c", "organic.carbon_usda.6a1c_20180101_20181231")

build_python_snippet

Generate a ready-to-use Python code snippet for accessing a raster asset.

Supports multiple operations: open, info, plot, clip_bbox, stats, export_csv.

Args: collection_id: Collection identifier. item_id: Item identifier. asset_key: Asset key within the item. operation: Code operation to generate: 'open' — open the raster with rasterio 'info' — print raster metadata 'plot' — plot with matplotlib 'clip_bbox' — clip to a bounding box 'stats' — compute zonal statistics 'export_csv' — export values to CSV

Returns: Python code snippet as a string.

Example: build_python_snippet("organic.carbon_usda.6a1c", "organic.carbon_usda.6a1c_20180101_20181231", "organic.carbon_usda.6a1c_m_1km_b30cm_s", "plot")

build_r_snippet

Generate a ready-to-use R code snippet for accessing a raster asset.

Uses terra, sf, and rstac packages.

Args: collection_id: Collection identifier. item_id: Item identifier. asset_key: Asset key within the item. operation: Code operation: 'open' — open with terra::rast() 'info' — print metadata 'plot' — plot the raster 'clip_bbox' — crop to bounding box 'stats' — compute statistics 'export_csv' — export to CSV

Returns: R code snippet as a string.

Example: build_r_snippet("organic.carbon_usda.6a1c", "organic.carbon_usda.6a1c_20180101_20181231", "organic.carbon_usda.6a1c_m_1km_b30cm_s", "plot")

Prompts

Interactive templates invoked by user choice

NameDescription
explore_collectionGenerate a prompt to fully explore a STAC collection. Guides the AI agent through collection metadata, temporal coverage, available assets, and access methods. Args: collection_id: The collection to explore.
find_data_for_analysisGenerate a prompt to find data for a specific analysis. Guides the agent to discover relevant datasets, check coverage, and prepare access instructions. Args: topic: Research topic (e.g., 'soil carbon stocks'). region: Geographic region (e.g., 'cerrado', 'brazil'). period: Time period of interest (e.g., '2010-2020').
download_workflowGenerate a complete download and access workflow. Provides step-by-step instructions for accessing data from a specific item in multiple ways. Args: collection_id: Collection identifier. item_id: Item identifier.

Resources

Contextual data attached and managed by the client

NameDescription
catalog_resourceComplete metadata of the OpenLandMap STAC root catalog as JSON.
themes_resourceIndex of collections organized by thematic category.
guide_resourceUsage guide for the OpenLandMap MCP server.

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/tharlestsa/openlandmap_mcp'

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