loading…
Search for a command to run...
loading…
Integrates SkyFi satellite imagery and OpenStreetMap services with AI applications to enable high-resolution image searching, ordering, and area monitoring. It
Integrates SkyFi satellite imagery and OpenStreetMap services with AI applications to enable high-resolution image searching, ordering, and area monitoring. It provides 21 tools for geospatial tasks, including geocoding, tasking quotes, and satellite pass prediction.

A Model Context Protocol (MCP) server for integrating SkyFi satellite imagery capabilities with AI applications.
This MCP server provides AI applications with access to SkyFi's satellite imagery platform, enabling:
# Clone the repository
git clone https://github.com/PSkinnerTech/SkyFi-MCP.git
cd SkyFi-MCP
# Install dependencies
pip install -e .
Configure the SkyFi MCP server with your preferred AI development environment:
Add to your configuration file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):
{
"mcpServers": {
"skyfi": {
"command": "/path/to/your/project/venv/bin/python",
"args": ["-m", "mcp_skyfi"],
"env": {
"SKYFI_API_KEY": "[email protected]:your-api-key-hash",
"SKYFI_URL": "https://app.skyfi.com/platform-api/pricing"
},
"cwd": "/path/to/your/project"
}
}
}
Cmd/Ctrl + , → Extensions → MCP):{
"mcp.servers": {
"skyfi": {
"command": "/path/to/your/project/venv/bin/python",
"args": ["-m", "mcp_skyfi"],
"cwd": "/path/to/your/project",
"env": {
"SKYFI_API_KEY": "[email protected]:your-api-key-hash",
"SKYFI_URL": "https://app.skyfi.com/platform-api/pricing"
}
}
}
}
{
"mcp_servers": {
"skyfi": {
"command": "python",
"args": ["-m", "mcp_skyfi"],
"env": {
"SKYFI_API_KEY": "[email protected]:your-api-key-hash",
"SKYFI_URL": "https://app.skyfi.com/platform-api/pricing"
}
}
}
}
Ctrl/Cmd + ,){
"name": "skyfi",
"command": "/path/to/your/project/venv/bin/python",
"args": ["-m", "mcp_skyfi"],
"working_directory": "/path/to/your/project",
"environment": {
"SKYFI_API_KEY": "[email protected]:your-api-key-hash",
"SKYFI_URL": "https://app.skyfi.com/platform-api/pricing"
}
}
Alternative: Project-level configuration (.windsurf/mcp.json):
{
"servers": {
"skyfi": {
"command": "python",
"args": ["-m", "mcp_skyfi"],
"env": {
"SKYFI_API_KEY": "[email protected]:your-api-key-hash",
"SKYFI_URL": "https://app.skyfi.com/platform-api/pricing"
}
}
}
}
Ctrl/Cmd + , → Search "mcp"):{
"mcp.servers": {
"skyfi": {
"command": "/path/to/your/project/venv/bin/python",
"args": ["-m", "mcp_skyfi"],
"cwd": "/path/to/your/project",
"env": {
"SKYFI_API_KEY": "[email protected]:your-api-key-hash",
"SKYFI_URL": "https://app.skyfi.com/platform-api/pricing"
}
}
}
}
.vscode/settings.json):{
"mcp.servers": {
"skyfi": {
"command": "python",
"args": ["-m", "mcp_skyfi"],
"env": {
"SKYFI_API_KEY": "[email protected]:your-api-key-hash",
"SKYFI_URL": "https://app.skyfi.com/platform-api/pricing"
}
}
}
}
🚨 Important Path Requirements:
which python or where python)mcp_skyfi module is locatedemail:hash format from your SkyFi account🔍 Finding Your Python Path:
# On macOS/Linux
which python
# Or for virtual environments
which python3
# On Windows
where python
# Or
python -c "import sys; print(sys.executable)"
📦 Virtual Environment Paths:
~/miniconda3/envs/your-env/bin/python./venv/bin/python (macOS/Linux) or .\venv\Scripts\python.exe (Windows)~/.cache/pypoetry/virtualenvs/your-project-*/bin/pythonAfter configuration, test with any of these commands in your AI assistant:
Use the osm_forward_geocode tool to find coordinates for "Empire State Building, New York"
Search for recent satellite images of Central Park using skyfi_archive_search
Get a pricing quote for satellite tasking over downtown Austin, Texas
Expected Result: You should see 21 tools available (13 SkyFi + 8 OSM tools)
The server supports these environment variables:
| Variable | Required | Description | Example |
|---|---|---|---|
SKYFI_API_KEY |
Yes | Your SkyFi API credentials | [email protected]:api-key-hash |
SKYFI_URL |
Yes | SkyFi API endpoint | https://app.skyfi.com/platform-api/pricing |
OPENWEATHER_API_KEY |
No | OpenWeatherMap API key | your-openweather-key |
MCP_LOG_LEVEL |
No | Logging level | INFO, DEBUG, WARNING |
MCP_LOG_FORMAT |
No | Log format | console, json, simple |
These are set in your MCP client configuration (Claude Desktop, etc.) or as system environment variables.
python -m mcp_skyfi --transport http --port 8000
The MCP server provides 21 tools across three categories:
skyfi_archive_search - Search satellite imagery archive with geospatial, temporal, and quality filtersskyfi_archive_details - Get detailed information about a specific archive image including metadata and download optionsskyfi_get_tasking_quote - Get detailed pricing quote and feasibility analysis for satellite tasking request (REQUIRED before ordering)skyfi_create_archive_order - Create an order for existing archive satellite imagery with delivery optionsskyfi_create_tasking_order - Confirm and create a tasking order using a previously generated quote (requires quote confirmation)skyfi_get_order_status - Get current status and progress information for an existing orderskyfi_create_webhook_subscription - Create a webhook subscription for SkyFi notifications and alertsskyfi_setup_area_monitoring - Set up automated monitoring for new imagery in a specific areaskyfi_get_notification_status - Check the status and delivery history of webhook notificationsskyfi_calculate_archive_pricing - Calculate pricing for archive satellite imagery ordersskyfi_estimate_tasking_cost - Estimate costs for new satellite imagery tasking ordersskyfi_analyze_capture_feasibility - Analyze the feasibility of satellite imagery capture for a specific area and time periodskyfi_predict_satellite_passes - Predict satellite passes and optimal capture windows for a specific areaosm_forward_geocode - Convert address or place name to coordinates using OpenStreetMap geocodingosm_reverse_geocode - Convert coordinates to address and location information using OpenStreetMaposm_batch_geocode - Geocode multiple addresses or place names in a single requestosm_search_nearby_pois - Search for Points of Interest (POIs) near a specific locationosm_search_businesses - Search for specific businesses by name or type in a given areaosm_generate_aoi - Generate an Area of Interest (AOI) around a location for satellite imagery searchosm_create_bounding_box - Create a bounding box geometry from a set of coordinate pointsosm_calculate_distance - Calculate distance between two geographic points using various methods# Use osm_forward_geocode to get coordinates
geocode_result = osm_forward_geocode(query="Central Park, New York")
# Use skyfi_archive_search to find satellite images
images = skyfi_archive_search(
geometry=geocode_result.geometry,
start_date="2024-01-01",
end_date="2024-12-31",
cloud_cover_max=20,
limit=10
)
# Create an AOI around a location
aoi = osm_generate_aoi(
center_point=[40.7829, -73.9654], # Central Park coordinates
radius_meters=5000
)
# Set up monitoring for the area
monitor = skyfi_setup_area_monitoring(
geometry=aoi.geometry,
monitor_name="Central Park Monitoring",
notification_settings={
"email": "[email protected]",
"webhook_url": "https://your-app.com/webhook"
},
frequency="daily"
)
# Calculate pricing for archive images
pricing = skyfi_calculate_archive_pricing(
image_ids=["img_123", "img_456"],
processing_level="L1C",
output_format="GeoTIFF"
)
# Create an order if pricing is acceptable
if pricing.total_cost < 1000:
order = skyfi_create_archive_order(
image_ids=["img_123", "img_456"],
delivery_method="download",
output_format="GeoTIFF"
)
# Step 1: Get detailed pricing quote (MANDATORY)
quote = skyfi_get_tasking_quote(
geometry='{"type":"Polygon","coordinates":[[[-97.75,30.25],[-97.73,30.25],[-97.73,30.27],[-97.75,30.27],[-97.75,30.25]]]}',
start_date="2025-02-01",
end_date="2025-02-15",
max_cloud_cover=15.0,
priority="standard"
)
# Review the quote details:
# - Total cost: $120.50 USD
# - Capture probability: 75%
# - Quote expires in 24 hours
# Step 2: Confirm the order (required for security)
if quote.pricing_breakdown.total_cost_usd <= 150:
order = skyfi_create_tasking_order(
quote_id=quote.quote_id,
confirm="yes" # Explicit confirmation required
)
# Order created and payment processed
Supports multiple authentication methods:
The server follows a layered architecture pattern:
src/mcp_skyfi/
├── __init__.py # CLI entry point
├── exceptions.py # Custom exceptions
├── servers/ # Main server implementation
├── skyfi/ # SkyFi service integration
├── models/ # Data models
├── middleware/ # Authentication middleware
└── utils/ # Utility functions
# Run all tests
python -m pytest tests/
# Run specific test categories
python -m pytest tests/unit/
python -m pytest tests/integration/
python -m pytest tests/mcp_protocol/
# Build container
docker build -t skyfi-mcp .
# Run with STDIO
docker run -it skyfi-mcp
# Run with HTTP
docker run -p 8000:8000 skyfi-mcp --transport http
Problem: Claude Desktop can't find the Python executable.
Solution: Use the full path to your Python executable in the configuration:
{
"command": "/Users/your-username/path/to/project/venv/bin/python",
"cwd": "/Users/your-username/path/to/project"
}
Problem: Console output interfering with MCP protocol.
Solution: The server automatically suppresses visual output for STDIO transport. If you still see issues, ensure you're using the latest version.
Problem: Server startup issues or missing dependencies.
Solution:
python -m mcp_skyfi --config-checkpip install -e .Problem: Invalid API key format or credentials.
Solution:
email:hash)You can test your MCP server configuration:
# Validate configuration
python -m mcp_skyfi --config-check
# Test STDIO transport
echo '{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {"protocolVersion": "2024-11-05", "capabilities": {}, "clientInfo": {"name": "test", "version": "1.0"}}}' | python -m mcp_skyfi
# Test tool listing
python -c "import asyncio; from mcp_skyfi.servers.main import main_mcp; print('Tools available:', len(main_mcp.list_tools()))"
Enable debug logging for troubleshooting:
python -m mcp_skyfi --log-level DEBUG --transport stdio
To verify your MCP server is working correctly:
Test server startup:
python -m mcp_skyfi --config-check
Should show: ✅ Configuration is valid
Test in Claude Desktop: After adding the server to Claude Desktop, try this command in Claude:
Use the osm_forward_geocode tool to find the coordinates of "Empire State Building, New York"
Verify tool count: You should see 21 tools available (13 SkyFi + 8 OSM tools)
This project is licensed under the MIT License - see the LICENSE file for details.
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"skyfi-mcp-server": {
"command": "npx",
"args": []
}
}
}