MCP Data Analyst Server
Allows importing data from Google Sheets via shareable links for analysis.
Click on "Install 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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/rico007/MCP-Analyst'
If you have feedback or need assistance with the MCP directory API, please join our Discord server