Leverages OpenAI's GPT models to transform natural language into SQL queries, provide analysis of query results, suggest query optimizations, explain queries in plain English, and generate insights about table data.
Enables querying and managing Snowflake databases through natural language, providing tools for executing SQL, listing databases/schemas/tables, retrieving table samples, managing warehouses, and generating AI-powered insights from Snowflake data.
DataPilot MCP Server
Navigate your data with AI guidance. A comprehensive Model Context Protocol (MCP) server for interacting with Snowflake using natural language and AI. Built with FastMCP 2.0 and OpenAI integration.
Features
šļø Core Database Operations
execute_sql - Execute SQL queries with results
list_databases - List all accessible databases
list_schemas - List schemas in a database
list_tables - List tables in a database/schema
describe_table - Get detailed table column information
get_table_sample - Retrieve sample data from tables
š Warehouse Management
list_warehouses - List all available warehouses
get_warehouse_status - Get current warehouse, database, and schema status
š¤ AI-Powered Features
natural_language_to_sql - Convert natural language questions to SQL queries
analyze_query_results - AI-powered analysis of query results
suggest_query_optimizations - Get optimization suggestions for SQL queries
explain_query - Plain English explanations of SQL queries
generate_table_insights - AI-generated insights about table data
š Resources (Data Access)
snowflake://databases- Access database listsnowflake://schemas/{database}- Access schema listsnowflake://tables/{database}/{schema}- Access table listsnowflake://table/{database}/{schema}/{table}- Access table details
š Prompts (Templates)
sql_analysis_prompt - Templates for SQL analysis
data_exploration_prompt - Templates for data exploration
sql_optimization_prompt - Templates for query optimization
Related MCP server: Snowflake MCP Service
Installation
Clone and setup the project:
git clone <repository-url> cd datapilot python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activateInstall dependencies:
pip install -r requirements.txtConfigure environment variables:
cp env.template .env # Edit .env with your credentials
Configuration
Environment Variables
Create a .env file with the following configuration:
Snowflake Account Setup
Get your Snowflake account identifier - Multiple formats supported:
Recommended:
ACCOUNT-LOCATOR.snowflakecomputing.com(e.g.,SCGEENJ-UR66679.snowflakecomputing.com)Regional:
ACCOUNT-LOCATOR.region.cloud(e.g.,xy12345.us-east-1.aws)Legacy:
organization-account_name
Ensure your user has appropriate permissions:
USAGEon warehouses, databases, and schemasSELECTon tables for queryingSHOWprivileges for listing objects
Usage
Running the Server
Method 1: Direct execution
Method 2: Using FastMCP CLI
Method 3: Development mode with auto-reload
Connecting to MCP Clients
Claude Desktop
Add to your Claude Desktop configuration:
Using FastMCP Client
Example Usage
1. Natural Language Query
2. Execute and Analyze
3. Table Insights
4. Query Optimization
Architecture
Project Structure
Development
Adding New Tools
Define your tool function in
src/main.py:
Add appropriate error handling and logging
Test with FastMCP dev mode:
fastmcp dev src/main.py
Adding New Resources
Troubleshooting
Common Issues
Connection Errors
Verify Snowflake credentials in
.envCheck network connectivity
Ensure user has required permissions
OpenAI Errors
Verify
OPENAI_API_KEYis set correctlyCheck API quota and billing
Ensure model name is correct
Import Errors
Activate virtual environment
Install all requirements:
pip install -r requirements.txtRun from project root directory
Logging
Enable debug logging:
Contributing
Fork the repository
Create a feature branch
Make your changes
Add tests if applicable
Submit a pull request
License
This project is licensed under the MIT License.
Support
For issues and questions:
Check the troubleshooting section
Review FastMCP documentation: https://gofastmcp.com/
Open an issue in the repository