eo-processor-mcp
An MCP server for Earth Observation processing, exposing Rust-accelerated EO computation tools like spectral indices, change detection, and classification for AI agents.
README
eo-processor-mcp
An MCP (Model Context Protocol) server for Earth Observation processing, powered by eo-processor.
Similar to stac-mcp for STAC catalog operations, this server exposes eo-processor's high-performance Rust-accelerated EO computation functions as MCP tools that AI agents can invoke.
Features
- 15 MCP tools covering spectral indices, change detection, temporal statistics, masking, morphology, distances, trend analysis, classification, texture features, zonal statistics, and more
- Rust-accelerated computation via eo-processor's PyO3 bindings (GIL-released, multi-core parallel)
- stdio and HTTP transport support
- Observability built in (structured logging, metrics, correlation IDs, latency histograms)
- Prompts to guide AI agents in using the tools effectively
Tools
| Tool | Description |
|---|---|
compute_spectral_index |
Compute spectral indices (NDVI, NDWI, EVI, SAVI, etc.) from band .npy files |
compute_change_index |
Change detection (delta_ndvi, delta_nbr, dnbr, rbr) from pre/post imagery |
temporal_statistics |
Median, mean, std, sum along the time axis |
temporal_composite |
Weighted temporal composite of 4D arrays |
moving_average |
Moving average with optional stride/downsampling |
apply_mask |
Unified masking (by values, range, SCL, NaN replacement) |
morphological_operation |
Binary dilation, erosion, opening, closing |
compute_distances |
Pairwise distances (euclidean, manhattan, chebyshev, minkowski) |
analyze_trends |
Linear regression and trend analysis with break detection |
bfast_monitor |
BFAST Monitor change detection on time series |
classify |
Random Forest train/predict, complex multi-band classification |
texture_features |
Haralick/GLCM texture features |
zonal_statistics |
Zonal statistics (count, sum, mean, min, max, std per zone) |
pixelwise_transform |
Linear transform with optional clamping |
list_capabilities |
List all available indices, operations, and tools |
Installation
pip install -e .
# or with uv
uv pip install -e .
Usage
stdio (default)
eo-processor-mcp
# or
python -m eo_processor_mcp
HTTP/SSE
EO_PROCESSOR_MCP_TRANSPORT=http python -m eo_processor_mcp
MCP Client Configuration
{
"eo-processor": {
"command": "uvx",
"args": ["--from", "git+https://github.com/BnJam/eo-processor-mcp", "eo-processor-mcp"],
"transport": "stdio"
}
}
Container (GHCR)
A pre-built image is published to GitHub Container Registry on every merge to main:
docker pull ghcr.io/bnjam/eo-processor-mcp:latest
docker run --rm ghcr.io/bnjam/eo-processor-mcp:latest
Available tags:
latest— most recentmainbuildsha-<short-sha>— immutable build for a specific commit<X.Y.Z>,<X>.<Y>,<X>— semver tags (only when a version bump occurs)
To use the container with an MCP client:
{
"eo-processor": {
"command": "docker",
"args": ["run", "--rm", "ghcr.io/bnjam/eo-processor-mcp:latest"],
"transport": "stdio"
}
}
Data Format
All tools accept NumPy .npy file paths as input and write results to .npy files. Tool responses include:
output_path: Path to the result .npy filestats: Summary statistics (shape, dtype, min, max, mean, std, NaN count)
Environment Variables
| Variable | Default | Purpose |
|---|---|---|
EO_PROCESSOR_MCP_TRANSPORT |
stdio |
Transport mode (stdio, http, streamable-http, sse) |
EO_PROCESSOR_MCP_HOST |
127.0.0.1 |
HTTP host |
EO_PROCESSOR_MCP_PORT |
8000 |
HTTP port |
EO_PROCESSOR_MCP_LOG_LEVEL |
WARNING |
Logging level |
EO_PROCESSOR_MCP_LOG_FORMAT |
text |
Log format (text or json) |
EO_PROCESSOR_MCP_ENABLE_METRICS |
true |
Enable in-process metrics |
EO_PROCESSOR_MCP_ENABLE_TRACE |
false |
Enable trace span logging |
Development
make install-dev # Install with dev dependencies
make test # Run tests
make lint # Run ruff
make format # Auto-format
make coverage # Coverage report
License
Apache-2.0
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Neon Database
MCP server for interacting with Neon Management API and databases
E2B
Using MCP to run code via e2b.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.