A Model Context Protocol (MCP) server that provides access to SkyFi's satellite imagery API through Claude Desktop, Cursor, and other MCP-compatible clients.
A comprehensive toolkit for satellite imagery search, ordering, tasking, monitoring, and geographic operations.
- 🛰️ Satellite Image Search - Search for satellite imagery with natural language dates
- 💰 Cost Controls - Built-in spending limits and cost tracking
- 📊 Order Management - Track and download your satellite image orders
- 🌍 Multi-Location Search - Search multiple areas simultaneously
- 📈 Order History Export - Export orders to CSV, JSON, HTML, or Markdown
- 🎯 Satellite Tasking - Request new satellite captures for specific areas
- 📡 Area Monitoring - Set up webhooks to monitor areas for new imagery
- 🗺️ OpenStreetMap Integration - Convert locations to polygons for searches
- 🐳 Docker Support - Easy deployment with Docker containers
- 🌤️ Weather Integration - Get weather data for capture planning
- Python 3.10+
- SkyFi Pro account and API key (get it at app.skyfi.com)
- Clone the repository:
git clone https://github.com/NoaheCampbell/SkyFi-MCP.git
cd SkyFi-MCP
- Install the package:
pip install -e .
- Set up your environment:
cp .env.example .env
# Edit .env and add your API keys:
# - SKYFI_API_KEY: Your SkyFi API key (required)
# - WEATHER_API_KEY: Your OpenWeatherMap API key (optional, for weather features)
Run the server directly to test:
python -m mcp_skyfi
Add this to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"skyfi": {
"command": "python3",
"args": ["-m", "mcp_skyfi"],
"env": {
"SKYFI_API_KEY": "YOUR_SKYFI_API_KEY_HERE",
"WEATHER_API_KEY": "YOUR_OPENWEATHERMAP_API_KEY_HERE",
"SKYFI_COST_LIMIT": "40.0",
"SKYFI_FORCE_LOWEST_COST": "true"
}
}
}
}
Note: If you get a "spawn python ENOENT" error, try using the full path to python:
{
"mcpServers": {
"skyfi": {
"command": "/usr/bin/python3",
"args": ["-m", "mcp_skyfi"],
"env": {
"SKYFI_API_KEY": "YOUR_SKYFI_API_KEY_HERE",
"WEATHER_API_KEY": "YOUR_OPENWEATHERMAP_API_KEY_HERE",
"SKYFI_COST_LIMIT": "40.0",
"SKYFI_FORCE_LOWEST_COST": "true"
}
}
}
}
Restart Claude Desktop after updating the configuration.
You can also run the MCP server using Docker:
- Build the Docker image:
docker build -t skyfi-mcp .
- Run the container:
docker run -d \
--name skyfi-mcp \
-e SKYFI_API_KEY="YOUR_SKYFI_API_KEY" \
-e WEATHER_API_KEY="YOUR_OPENWEATHERMAP_API_KEY" \
-p 8765:8765 \
skyfi-mcp
- Update Claude Desktop config for Docker:
{
"mcpServers": {
"skyfi-mcp-docker": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"--name", "skyfi-mcp-test",
"-e", "SKYFI_API_KEY=YOUR_API_KEY",
"-e", "WEATHER_API_KEY=YOUR_WEATHER_KEY",
"skyfi-mcp",
"python", "-m", "mcp_skyfi"
]
}
}
}
Search for satellite imagery in a specific area and time range.
Example:
Search for satellite images of Central Park from the last month
Two-step ordering process with safety checks:
- Prepare an order to get pricing and confirmation token
- Confirm the order with the token to complete purchase
List your recent satellite image orders.
Download a completed order.
Export your order history to various formats.
Get your account information and available credits.
Note: Weather tools require an OpenWeatherMap API key. Get one free at openweathermap.org.
Get current weather conditions for any location.
Example:
What's the weather in San Francisco?
Get weather forecast for the next few days.
Example:
What's the weather forecast for New York for the next 3 days?
Get a quote for tasking a satellite to capture new imagery.
Place an order for new satellite imagery capture.
Analyze the feasibility of capturing imagery for an area.
Predict when satellites will pass over an area.
Set up webhooks to monitor for new imagery.
Monitor specific areas for new satellite captures.
Check the status of your monitoring subscriptions.
Convert addresses to coordinates.
Example:
Get coordinates for the Eiffel Tower
Convert coordinates to addresses.
Example:
What address is at latitude 40.7484, longitude -73.9857?
Generate area of interest polygons (circles, squares, etc.) around a point.
Example:
Create a 2km square around coordinates 40.7580, -73.9855
Calculate distances between geographic points.
Example:
Calculate distance from NYC (40.7128, -74.0060) to Boston (42.3601, -71.0589)
-
Use
osm_geocode
to get coordinates:Get coordinates for San Francisco
-
Use
osm_generate_aoi
to create a search area:Create a 10km square around San Francisco
-
Use
skyfi_search_archives
with the polygon:Search for satellite images of that area from January 2024
-
Check weather conditions:
What's been the weather in Miami for the past week?
-
Search for clear-day images:
Find satellite images of Miami from days with low cloud cover
SKYFI_API_KEY
(required): Your SkyFi API keySKYFI_API_URL
: Override the API endpoint (default: https://app.skyfi.com/platform-api)SKYFI_COST_LIMIT
: Maximum spending limit (default: 40.0)SKYFI_FORCE_LOWEST_COST
: Always select lowest cost option (default: true)WEATHER_API_KEY
: OpenWeatherMap API key for weather featuresMCP_LOG_LEVEL
: Logging level (default: INFO)
The server supports the standard MCP protocol and can be used with any MCP-compatible client.
Try out the SkyFi MCP capabilities with our interactive web demos:
Interactive map-based demo for exploring satellite imagery:
python demos/web_demo.py
# Open http://localhost:8888
Features:
- Click anywhere on the map to analyze locations
- Search for satellite imagery with thumbnails
- Get weather data and cost estimates
- Visual feedback with markers and activity feed
Full chat interface showcasing natural language interaction:
python demos/mcp_chat_demo.py
# Open http://localhost:8889
Features:
- Natural language understanding for all 30+ tools
- Quick action buttons for common tasks
- Interactive map with polygon visualization
- Real-time tool execution feedback
See demos/README.md for more demo applications and examples.
pip install -e ".[dev]"
pytest
ruff check src/
mypy src/
- Verify your API key at app.skyfi.com
- Ensure you have a Pro account
- Check that
SKYFI_API_KEY
is set correctly in your environment
- Verify the date range includes available imagery
- Try a larger area or different location
- Check if open data is enabled (some areas may only have commercial imagery)
- Check your internet connection
- Verify the API URL is accessible
- Try increasing the timeout in the configuration
See docs/INTEGRATIONS.md for detailed guides on using SkyFi MCP with:
- Claude Desktop & Cursor
- Langchain, Vercel AI SDK, ADK
- OpenAI, Anthropic, Google Gemini
- Multi-user cloud deployments
pip install git+https://github.com/NoaheCampbell/SkyFi-MCP.git
- Docker support for containerized deployments
- WebSocket bridge for remote access
- Built-in AWS Secrets Manager and Parameter Store integration
MIT License - see LICENSE file for details.
- Authentication Guide - API keys and authentication methods
- Deployment Guide - Docker, cloud, and production deployment
- User Guide - End-user documentation
- Integration Guide - Framework integrations
- Troubleshooting Guide - Common issues and solutions
- Migration Guide - Upgrading from previous versions
- Technical Specification - Detailed API specification
- SkyFi API Documentation: docs.skyfi.com
- Issues: GitHub Issues