SkyFi MCP Server
Enables AI agents to search, compare pricing, and order satellite imagery from 150+ satellites across 12+ providers via natural language.
README
SkyFi MCP Server
A production-ready MCP server for SkyFi's satellite imagery Platform API. Search 150+ satellites from 12+ providers, compare pricing, and order archive or tasking imagery — all through natural language with any AI agent.
SkyFi aggregates imagery from Planet, Vantor, ICEYE, Umbra, Satellogic, and others into a single API with transparent pricing and no contracts. This MCP server makes that API accessible to Claude, GPT, Gemini, LangChain, and any MCP-compatible agent.
Architecture
graph LR
A[AI Agent] -->|MCP Protocol| B[SkyFi MCP Server]
B -->|REST API| C[SkyFi Platform API]
B -->|Nominatim| K[OpenStreetMap]
C --> D[Planet]
C --> E[Vantor]
C --> F[ICEYE]
C --> G[Umbra]
C --> H[Satellogic]
C --> I[Sentinel-1/2]
C --> J[12+ more...]
Quick Start (< 5 minutes)
1. Install
pip install skyfi-mcp
# or from source:
git clone https://github.com/jpwilson/skyfi-mcp.git
cd skyfi-mcp && pip install -e .
2. Configure
export SKYFI_API_KEY=your_api_key # Get one at https://app.skyfi.com
3. Run
# Remote server (production)
skyfi-mcp
# → Listening at http://localhost:8000/mcp
# Local stdio (development)
SKYFI_MCP_TRANSPORT=stdio skyfi-mcp
4. Connect your agent
Claude Desktop — add to claude_desktop_config.json:
{
"mcpServers": {
"skyfi": {
"url": "http://localhost:8000/mcp"
}
}
}
Claude Code:
claude mcp add skyfi http://localhost:8000/mcp
5. Try it (free)
"Find free Sentinel-2 imagery over the Amazon basin"
This uses open data ($0) — no credit card needed.
Tools (20)
| Tool | Description |
|---|---|
| SkyFi API | |
skyfi_whoami |
Check account status, budget, payment method |
skyfi_search_archives |
Search archive imagery by location, date, sensor, provider |
skyfi_get_archive |
Get full details for an archive image |
skyfi_get_pricing |
Get pricing by AOI, product type, provider |
skyfi_create_feasibility |
Create tasking feasibility check |
skyfi_get_feasibility |
Poll feasibility results and provider windows |
skyfi_predict_passes |
Satellite pass prediction for tasking timing |
skyfi_create_archive_order |
Stage an archive order (shows price, requires confirmation) |
skyfi_create_tasking_order |
Stage a tasking order (shows price, requires confirmation) |
skyfi_confirm_order |
Execute a staged order (this commits money) |
skyfi_list_orders |
List orders with status/type filters |
skyfi_get_order |
Get order details |
skyfi_redeliver_order |
Redeliver completed order to different cloud bucket |
skyfi_get_deliverables |
Get download URLs for completed orders |
skyfi_create_notification |
Set up AOI monitoring with webhook alerts |
skyfi_list_notifications |
List active monitoring notifications |
skyfi_manage_notification |
Get or delete a notification |
| OpenStreetMap | |
osm_geocode |
Convert place names to coordinates + SkyFi-ready WKT polygons |
osm_reverse_geocode |
Convert coordinates to place names and addresses |
osm_search_nearby |
Find features (airports, ports, etc.) near a location |
Ordering Safety
Orders use a two-step confirmation pattern:
- Stage —
skyfi_create_archive_orderorskyfi_create_tasking_ordercalls the API and returns a price summary - Confirm — Only
skyfi_confirm_ordermarks the order as human-approved
Order: VANTOR 30cm DAY, 12.4 sq km, $847. Deliver to S3. Confirm?
Free open-data orders ($0 Sentinel-1/2) still show confirmation but note "Free — no charge."
Tasking Workflow
1. skyfi_create_feasibility → get feasibility ID
2. skyfi_get_feasibility → poll for provider windows
3. skyfi_predict_passes → (optional) check satellite timing
4. skyfi_create_tasking_order → stage with selected provider/window
5. skyfi_confirm_order → execute after human approval
Provider-specific: Planet supports provider_window_id selection from feasibility results.
AI Provider Integration
| Provider | Method | Example |
|---|---|---|
| Claude Desktop | MCP config | Setup guide |
| Claude Code | claude mcp add |
Setup guide |
| OpenAI | Function calling | examples/openai_example.py |
| Anthropic SDK | Tool use | examples/anthropic_example.py |
| Google Gemini | Function calling | examples/gemini_example.py |
| Google ADK | MCPToolset | examples/adk_example.py |
| LangChain | MCP adapter | examples/langchain_example.py |
| Vercel AI SDK | MCP client | Setup guide |
Deployment
Railway (recommended for cloud)
railway login && railway init
railway variables set SKYFI_API_KEY=your_key
railway up
# → https://your-project.up.railway.app/mcp
Docker
docker build -t skyfi-mcp .
docker run -p 8000:8000 -e SKYFI_API_KEY=your_key skyfi-mcp
Or with docker-compose:
echo "SKYFI_API_KEY=your_key" > .env
docker-compose up
Configuration
Auth is resolved in priority order:
X-Skyfi-Api-Keyrequest header (cloud deployment)SKYFI_API_KEYenvironment variable- Config file at
~/.skyfi/config.json(orSKYFI_CONFIG_PATH)
Environment variables:
| Variable | Default | Description |
|---|---|---|
SKYFI_API_KEY |
— | SkyFi Platform API key |
SKYFI_MCP_HOST |
0.0.0.0 |
Server bind host |
SKYFI_MCP_PORT |
8000 |
Server bind port |
SKYFI_MCP_TRANSPORT |
streamable-http |
Transport: streamable-http, sse, stdio |
SKYFI_API_BASE_URL |
https://app.skyfi.com/platform-api |
API base URL override |
AOI Constraints
- Format: WKT
POLYGON(convex) - Max vertices: 500
- Max area: 500,000 sq km
- Coordinates: longitude latitude (WGS84)
Development
# Install with dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Run with coverage
pytest --cov=skyfi_mcp --cov-report=term-missing
# Lint
ruff check src/ tests/
# Type check
mypy src/
# Security scan
bandit -r src/
Documentation
Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Write tests for new functionality
- Run the full test suite (
pytest) - Run linting and type checks (
ruff check . && mypy src/) - Commit with descriptive messages
- Open a pull request
License
MIT — see LICENSE.
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.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
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.