MCP Data Analyst Server
Allows importing data from Google Sheets via shareable links for analysis.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Data Analyst ServerLoad sales.csv and show me the top 5 products by revenue"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Data Analyst Server
Transform Claude (or ChatGPT) into a powerful data analyst with SQL capabilities. Import CSVs or Google Sheets, run complex queries, and get instant insights - all through natural language.
π― What This Does
This MCP server lets AI assistants analyze your data by:
Importing CSV files and Google Sheets
Querying data with full SQL (JOINs, aggregations, window functions)
Analyzing datasets from 100 rows to billions
Exporting results to CSV
Simple Example:
You: "Load sales_2024.csv as sales and show me the top 10 products by revenue"
Claude/ChatGPT:
1. Imports your CSV into a DuckDB database
2. Writes SQL: SELECT product, SUM(revenue) FROM sales GROUP BY product ORDER BY revenue DESC LIMIT 10
3. Executes the query
4. Shows results with insights: "Your top product is Widget A with $50K revenue..."Related MCP server: mix_server
π Quick Start
Prerequisites
Python 3.8+ (or Docker Desktop)
Claude Desktop or ChatGPT Desktop
2GB+ RAM
Installation
Option 1: Docker (Recommended)
# Clone or download this repo
cd mcp-data-analyst
# Start the container
./docker-start.sh
# Falls das File nicht ausfΓΌhrbar ist. fΓΌhre im Terminal folgenden Befehl aus:
chmod +x docker-start.sh
# Danach starte es erneut:
./docker-start.sh
# Follow the instructions to configure Claude/ChatGPTOption 2: Direct Python Install
# Clone or download this repo
cd mcp-data-analyst
# Install dependencies
pip install -r requirements.txt
# Run the server
python server.pyπ Configuration
Step 1: Configure Your AI Assistant
For Claude Desktop
Edit the config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
If using Docker:
{
"mcpServers": {
"mcp-data-analyst": {
"command": "docker",
"args": ["exec", "-i", "data-analyst-mcp", "python3", "server.py"]
}
}
}If using direct install:
{
"mcpServers": {
"mcp-data-analyst": {
"command": "python3",
"args": ["/absolute/path/to/mcp-data-analyst/server.py"]
}
}
}For ChatGPT Desktop
Edit the config file:
macOS:
~/Library/Application Support/ChatGPT/config.jsonWindows:
%APPDATA%\ChatGPT\config.json
Use the same JSON format as Claude Desktop above.
Step 2: Configure Environment (Optional)
For cloud storage with MotherDuck (handles billions of rows):
# Copy the example
cp .env.example .env
# Edit .env and add your token
nano .envAdd your MotherDuck token:
MOTHERDUCK_TOKEN=your_token_here
MEMORY_LIMIT=4G
CPU_LIMIT=2.0Get a free token at motherduck.com (10GB free tier).
Without MotherDuck: Data is stored in-memory (fast, but session-only).
Step 3: Restart Your AI Assistant
Completely quit and restart Claude Desktop or ChatGPT Desktop.
Step 4: Test It!
You: "Load example_data.csv as customers and show me the data"The AI will import the file and show you the results!
π Features
6 Powerful Tools
import_csv - Load CSV files, Google Sheets, or URLs
query_data - Execute SQL queries with full DuckDB support
list_tables - Show all available tables
describe_table - Get schema and sample data
export_query_results - Save query results to CSV
get_table_stats - Get statistical summaries
Supported Data Sources
Local CSV files - Any CSV on your computer
CSV URLs - Direct HTTP/HTTPS links
Google Sheets - Automatically converts share links to CSV
Multiple files - Load multiple CSVs as separate tables
SQL Capabilities
Full SQL support including:
SELECT, WHERE, GROUP BY, ORDER BY, LIMIT
JOINs (INNER, LEFT, RIGHT, FULL OUTER)
Aggregate functions (SUM, AVG, COUNT, MIN, MAX)
Window functions (ROW_NUMBER, RANK, LAG, LEAD)
CTEs (WITH clauses)
Subqueries
Date/time functions
Data Size Limits
Rows | CSV Size | Mode | Performance |
< 1M | ~100MB | In-memory | β‘ Instant |
1-10M | ~1GB | In-memory | β Fast (seconds) |
10M+ | 1GB+ | MotherDuck | βοΈ Optimized (cloud) |
Recommendation: Use in-memory for < 10M rows, MotherDuck for larger datasets.
π‘ Usage Examples
Example 1: Basic Analysis
You: "Load my sales data from https://example.com/sales.csv as sales"
AI: β Imported 50,000 rows into 'sales' table
You: "What are the top 5 products by revenue?"
AI: [Writes and executes SQL, shows results with insights]
You: "Show me monthly revenue trends"
AI: [Creates time-series analysis with DATE_TRUNC]Example 2: Multi-Table Analysis
You: "Load sales.csv as sales and products.csv as products"
AI: β Imported both tables
You: "Join these tables and show me which product categories generate the most revenue"
AI: [Automatically identifies the relationship (product_id), performs JOIN, provides analysis]Example 3: Advanced Analytics
You: "Analyze customer behavior and create segments based on purchase patterns"
AI: [Performs multi-step analysis with CTEs, window functions, and provides business insights]Example 4: Google Sheets
You: "Load this Google Sheet: https://docs.google.com/spreadsheets/d/abc123/edit"
AI: β Converted to CSV and imported
You: "Calculate the correlation between marketing spend and sales"
AI: [Performs statistical analysis]π³ Docker Commands
# Start server
./docker-start.sh
# Stop server
./docker-stop.sh
# View logs
docker-compose logs -f
# Restart
docker-compose restart
# Stop and remove
docker-compose down
# Rebuild
docker-compose down && docker-compose up -d --buildπ§ Troubleshooting
MCP Server Not Appearing
Verify config file path is correct
Use absolute paths (not
~or relative)Ensure container is running:
docker psCheck logs:
docker-compose logsRestart AI assistant completely (quit, not just close)
Permission Denied on Scripts
chmod +x docker-start.sh docker-stop.sh setup.shImport Errors
Local files: Use absolute paths
Google Sheets: Share with "Anyone with link"
URLs: Verify URL is publicly accessible
Out of Memory
For large datasets (> 10M rows):
Option 1: Increase Docker memory in docker-compose.yml:
memory: 8G # or 16G
cpus: '4.0'Option 2: Use MotherDuck (recommended for > 10M rows):
Get token from motherduck.com
Add to
.env:MOTHERDUCK_TOKEN=your_tokenRestart:
docker-compose restart
ποΈ Architecture
βββββββββββββββββββββββββββββββββββββββ
β Claude Desktop / ChatGPT Desktop β
β (Natural Language Interface) β
βββββββββββββββββββ¬ββββββββββββββββββββ
β MCP Protocol
βΌ
βββββββββββββββββββββββββββββββββββββββ
β MCP Data Analyst Server (Python) β
β - 6 Tools (FastMCP) β
β - CSV Import & SQL Query β
βββββββββββββββββββ¬ββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββ
β DuckDB Database β
β - In-Memory (< 10M rows) β
β - MotherDuck Cloud (billions) β
βββββββββββββββββββββββββββββββββββββββπ Security & Privacy
In-memory mode: All data stays on your computer, never leaves your machine
MotherDuck mode: Data stored in your private cloud account
No external sharing: Your data is never sent to third parties
Read-only SQL: Only SELECT queries, no data modification
Container isolation: Docker provides additional security layer
π Advanced Configuration
Custom Memory Limits
Edit docker-compose.yml:
deploy:
resources:
limits:
memory: 8G # Increase for large datasets
cpus: '4.0' # More CPU for faster processingMultiple Tables
Load multiple CSVs:
You: "Load sales.csv, products.csv, and customers.csv"
AI: [Imports all three as separate tables]
You: "Show me how these tables relate to each other"
AI: [Analyzes schemas, identifies foreign keys, suggests JOINs]Export Results
You: "Export the top 100 customers to a CSV file"
AI: [Executes query and saves to /data/top_customers.csv]π οΈ Development
Adding Custom Tools
The FastMCP framework makes it easy to add new tools:
@mcp.tool()
def my_custom_tool(param: str, count: int = 10) -> dict:
"""Description that appears to the AI"""
# Your logic here
return {"result": "..."}That's it! FastMCP handles validation, errors, and protocol details.
Project Structure
mcp-data-analyst/
βββ server.py # Main MCP server (FastMCP)
βββ requirements.txt # Python dependencies
βββ Dockerfile # Container definition
βββ docker-compose.yml # Docker orchestration
βββ docker-start.sh # Easy start script
βββ docker-stop.sh # Easy stop script
βββ setup.sh # Direct install script
βββ .env.example # Environment template
βββ .gitignore # Git ignore rules
βββ example_data.csv # Sample data for testingπ€ Contributing
Contributions welcome! Please:
Fork the repository
Create a feature branch
Make your changes
Submit a pull request
π License
MIT License - Free to use, modify, and distribute.
π Credits
Built with:
FastMCP - Modern MCP framework
DuckDB - Fast analytical database
MotherDuck - Cloud data warehouse
MCP Protocol by Anthropic
π Support
Issues: Open a GitHub issue
Questions: Start a discussion
Documentation: Check this README
π Star This Repo
If you find this useful, please star the repo! β
Transform your AI assistant into a data analyst in 5 minutes! πβ¨
This server cannot be deployed
Maintenance
Related MCP Connectors
AI data analyst: ask about your Excel, CSV, GA4 or database data and get charts and dashboards back
Ask data questions in natural language. Get SQL, insights, and charts from your databases.
- OleanderOAuthdev.oleander
The all-in-one data stack for agents. Upload files, run SQL, evolve tables, and render charts.
Group, aggregate and pivot spreadsheet or CSV data from your AI chat: filters, sums, sorts.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceAI-first CSV analysis tool that enables AI agents to analyze, query, and audit large CSV files directly within conversations, turning raw data into actionable insights.2-
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with local CSV and Parquet data files through natural language queries, facilitating tasks like summarizing datasets or retrieving specific information.4-
- AlicenseNot gradedqualityDmaintenanceEnables querying Excel and CSV files using SQL via natural language, allowing AI assistants to analyze data without manual SQL writing.1MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to query tabular data (CSV/TSV) using natural language with cell-level citations, supporting multi-tenant workspaces, access control, and semantic search.27MIT