Skip to main content

An MCP for retrieving land use data for a given location

Project description

landuse-mcp

A Model Context Protocol (MCP) server for retrieving land use data for given geographical locations using the National Land Cover Database (NLCD) and other geospatial datasets.

Features

  • Land Cover Data: Retrieve detailed land cover classifications for any coordinate
  • Soil Type Information: Get FAO soil type classifications for geographical points
  • Temporal Data: Access available dates for land use data at specific locations
  • MCP Integration: Full Model Context Protocol support for AI agents
  • Geospatial Processing: Built on robust geospatial libraries for accurate data retrieval

Quick Start

# Install dependencies and set up development environment
make dev

# Run the MCP server
make server

# Run tests
make test-coverage

# Demo functionality
make demo

Installation

From PyPI (Recommended)

# Install with uvx
uvx landuse-mcp

From Source

# Clone the repository
git clone https://github.com/justaddcoffee/landuse-mcp.git
cd landuse-mcp

# Install in development mode
make dev

Usage

Command Line Interface

# Run the MCP server
landuse-mcp

# Or using uv
uv run landuse-mcp

Python API

from landuse_mcp.main import get_land_cover, get_soil_type, get_landuse_dates

# Get land cover data for Death Valley
land_cover = get_land_cover(36.5322649, -116.9325408, "2001-01-01", "2002-01-01")
print(land_cover)

# Get soil type for a location
soil_type = get_soil_type(32.95047, -87.393259)
print(soil_type)  # e.g., "Cambisols"

# Get available dates for land use data
dates = get_landuse_dates(36.5322649, -116.9325408)
print(dates)  # List of available dates

Testing MCP Protocol

# Test MCP handshake
make test-mcp

# Extended MCP testing
make test-mcp-extended

Integration with AI Tools

Claude Desktop

Add this to your Claude Desktop configuration file (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "landuse-mcp": {
      "command": "uvx",
      "args": ["landuse-mcp"],
      "cwd": "/path/to/landuse-mcp"
    }
  }
}

Claude Code

claude mcp add -s project landuse-mcp uvx landuse-mcp

Goose

goose session --with-extension "uvx landuse-mcp"

Available Tools

The MCP server provides three main tools:

  1. get_land_cover: Retrieve land cover data for coordinates with temporal range
  2. get_soil_type: Get FAO soil classification for a location
  3. get_landuse_dates: List available dates for land use data at coordinates

Data Sources

  • National Land Cover Database (NLCD): Primary source for US land cover data
  • FAO Soil Types: Global soil classification system
  • nmdc-geoloc-tools: Underlying geospatial processing library

Development

Development Setup

# Full development setup
make dev

# Install production dependencies only
make install

# Run tests with coverage
make test-coverage

# Code quality checks
make format lint mypy

# Check for unused dependencies
make deptry

# Clean build artifacts
make clean

Build and Release

# Build package
make build

# Upload to TestPyPI
make upload-test

# Upload to PyPI
make upload

# Complete release workflow
make release

Testing

# Run all tests
make test-coverage

# Run integration tests
make test-integration

# Test MCP protocol
make test-mcp test-mcp-extended

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Run tests: make test-coverage
  5. Run quality checks: make format lint mypy
  6. Submit a pull request

Requirements

  • Python 3.10+
  • uv (recommended)
  • Dependencies managed via pyproject.toml

License

MIT License - see LICENSE file for details.

Authors

  • Mark Miller
  • Justin Reese
  • Charles Parker

Citation

If you use this software in your research, please cite it as:

@software{landuse_mcp,
  title = {landuse-mcp: A Model Context Protocol server for land use data},
  author = {Miller, Mark and Reese, Justin and Parker, Charles},
  url = {https://github.com/justaddcoffee/landuse-mcp},
  version = {0.1.0},
  year = {2024}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

landuse_mcp-0.1.6.tar.gz (10.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

landuse_mcp-0.1.6-py3-none-any.whl (5.9 kB view details)

Uploaded Python 3

File details

Details for the file landuse_mcp-0.1.6.tar.gz.

File metadata

  • Download URL: landuse_mcp-0.1.6.tar.gz
  • Upload date:
  • Size: 10.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.18

File hashes

Hashes for landuse_mcp-0.1.6.tar.gz
Algorithm Hash digest
SHA256 c00363f3131a2d1370cd9c97e4b284ef16defc91cc3a7455b5e1b1ad20ed729a
MD5 8671abe2d9bd5f75600b7081b09cf2c2
BLAKE2b-256 6806c9787b36f9263ff9e12e6ed5c568f4c75ce2dc9fbc061c262fd8698d3225

See more details on using hashes here.

File details

Details for the file landuse_mcp-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: landuse_mcp-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 5.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.18

File hashes

Hashes for landuse_mcp-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 8fb3bcc847716a818d453defc1642db9bca8fca89cfc3c0aa5b753746f32e780
MD5 b5eff0e766669bd917743102e10bb1e0
BLAKE2b-256 1ebb9db2f6d52a9bd8c570ef53d471163047bb4af2262b7880abeaf9b134c800

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page