A Model Context Protocol (MCP) server implementation that enables AI agents to interact with SkyFi's geospatial data services seamlessly.
The SkyFi MCP Server provides a standardized interface for AI agents to:
- Explore and search geospatial satellite imagery data
- Place orders with price confirmation workflows
- Set up area-of-interest (AOI) monitoring with webhooks
- Access previous orders and task history
- Integrate with various AI frameworks (Claude Code, LangChain, AI SDK)
- Conversational Workflows: Natural language interaction for complex geospatial tasks
- Price Confirmation: Multi-step order placement with transparent pricing
- AOI Monitoring: Automated notifications for new data in areas of interest
- Multi-Framework Support: Works with Claude Code, LangChain, Vercel AI SDK, and more
- Type-Safe: Built with TypeScript 5+ with strict mode enabled
- Production-Ready: Comprehensive logging, error handling, and testing
- Node.js 18.0.0 or higher
- npm or pnpm package manager
- SkyFi API key (Get one here)
- Clone the repository:
git clone https://github.com/skyfi/skyfi-mcp-server.git
cd skyfi-mcp-server- Install dependencies:
npm install- Configure environment variables:
cp .env.example .env
# Edit .env and add your SKYFI_API_KEY- Build the project:
npm run build- Start the server:
npm startRun the server in development mode with hot-reload:
npm run devThe server can be configured using environment variables. Copy .env.example to .env and configure:
# Required
SKYFI_API_KEY=your_api_key_here
# Optional
NODE_ENV=development
LOG_LEVEL=info
SKYFI_API_BASE_URL=https://api.skyfi.com/v1Configure Claude Code to use the SkyFi MCP server by adding to your MCP configuration:
{
"mcpServers": {
"skyfi": {
"url": "http://localhost:3000",
"apiKey": "${SKYFI_API_KEY}"
}
}
}from skyfi_mcp_client import SkyFiMCPClient
client = SkyFiMCPClient(server_url="http://localhost:3000")import { SkyFiMCPClient } from '@skyfi/mcp-client';
const client = new SkyFiMCPClient({
serverUrl: 'http://localhost:3000'
});The MCP server exposes the following tools:
search_geospatial_data: Search for satellite imagery and geospatial datacheck_order_feasibility: Verify order feasibility and get pricingplace_order: Place an order for geospatial datasetup_monitoring: Configure AOI monitoring with webhooksget_previous_orders: Retrieve order history
See API Documentation for detailed tool specifications.
skyfi-mcp/
├── src/
│ ├── server/ # Server configuration and setup
│ ├── tools/ # MCP tool handlers
│ ├── api/ # SkyFi API client
│ ├── types/ # TypeScript type definitions
│ └── index.ts # Main entry point
├── tests/ # Test files
├── docs/ # Documentation
└── dist/ # Compiled output
npm run dev- Start development server with hot-reloadnpm run build- Build for productionnpm start- Start production servernpm test- Run test suitenpm run lint- Run ESLintnpm run format- Format code with Prettiernpm run typecheck- Run TypeScript type checking
Run the test suite:
npm testRun tests in watch mode:
npm run test:watchGenerate coverage report:
npm run test:coverageThis project uses:
- TypeScript with strict mode for type safety
- ESLint for code linting
- Prettier for code formatting
- Husky for pre-commit hooks
- Jest for testing
Code quality checks run automatically on commit via pre-commit hooks.
See Architecture Documentation for detailed system design, component architecture, and integration patterns.
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests and linting (
npm test && npm run lint) - Commit your changes (
git commit -m 'Add amazing feature') - Push to your branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Documentation: https://docs.skyfi.com/mcp
- Issues: GitHub Issues
- Email: support@skyfi.com
- Built with the Model Context Protocol SDK
- Powered by SkyFi's Geospatial Data Platform
Status: This project is in active development. See Project Roadmap for upcoming features.