https://github.com/talknerdytome-labs/google-sheet-analytics-mcp
Transform Google Sheets into a conversational database. Ask questions like "What are the top 10 customers by revenue?" and get instant SQL-powered insights through any MCP-compatible AI assistant.
https://github.com/talknerdytome-labs/google-sheet-analytics-mcp
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (15.2%) to scientific vocabulary
Keywords
Repository
Transform Google Sheets into a conversational database. Ask questions like "What are the top 10 customers by revenue?" and get instant SQL-powered insights through any MCP-compatible AI assistant.
Basic Info
Statistics
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
- Releases: 0
Topics
Metadata Files
README.md
TNTM Google Sheets Analytics MCP Server

A clean, practical MCP (Model Context Protocol) server for analyzing Google Sheets data with multi-tab support. Built for Claude Code and other MCP-compatible AI assistants by TNTM.
🚀 Features
- Smart Sync - Sync Google Sheets with configurable row limits to prevent timeouts
- Multi-tab Support - Query across multiple sheets with SQL JOINs
- SQL Queries - Direct SQL access to synced data
- Sheet Analysis - Get suggestions for cross-sheet queries
- Quick Preview - Preview sheets without full sync
- Performance Optimized - Row limits and result pagination for large datasets
📋 Prerequisites
- Python 3.8+
- Claude Code or another MCP-compatible client
- Google Cloud Project with Sheets API enabled
- OAuth2 credentials from Google Cloud Console
🛠️ Setup
⚡ One-Click Setup with Claude Code (Recommended)
- Drag this project folder into Claude Code
- Ask Claude Code: "Follow the README instructions to install this MCP server into Claude Code"
- Get Google OAuth credentials (Claude Code will guide you through this):
- Go to Google Cloud Console
- Create a new project or select existing one
- Enable the Google Sheets API
- Create OAuth2 credentials (Desktop Application)
- Download and save as
credentials.jsonin the project root
That's it! Claude Code will handle virtual environments, dependencies, and OAuth setup automatically.
🚀 Automated Installation (Alternative)
For non-Claude Code users or manual setup:
Option 1: Shell Script (macOS/Linux)
```bash
Download and run the automated installer
curl -sSL https://raw.githubusercontent.com/yourusername/google-sheet-analytics-mcp/main/install.sh | bash
Or clone first, then run
git clone https://github.com/yourusername/google-sheet-analytics-mcp.git cd google-sheet-analytics-mcp ./install.sh ```
Option 2: Python Script (All platforms)
```bash
Clone the repository
git clone https://github.com/yourusername/google-sheet-analytics-mcp.git cd google-sheet-analytics-mcp
Run the Python installer
python3 setup.py ```
Option 3: Manual Step-by-step
```bash
1. Create virtual environment
python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
2. Install dependencies
pip install -e .
3. Install MCP server
mcp install src/mcp_server.py --name google-sheets-analytics --with-editable .
4. Setup OAuth (after adding credentials.json)
python src/auth/oauth_setup.py ```
🔐 Getting Google Credentials
Before first use, you need OAuth2 credentials:
- Go to Google Cloud Console
- Create a new project or select existing one
- Enable the Google Sheets API
- Go to APIs & Services > Credentials
- Click Create Credentials > OAuth 2.0 Client IDs
- Choose Desktop Application
- Download the JSON file
- Save it as
credentials.jsonin the project root
🚀 First Run - OAuth Setup
After adding your credentials.json file, run the OAuth setup:
bash
python src/auth/oauth_setup.py
This will:
1. Open your browser for Google authentication
2. Create a token.json file with your access credentials
3. Verify the connection works
You only need to do this once! After setup, all MCP tools will work automatically.
🔧 Tools
smart_sync
Sync Google Sheet data with intelligent chunking for large datasets.
Use smart_sync with url "https://docs.google.com/spreadsheets/d/your_sheet_id" and max_rows 100000
- url (required): Google Sheets URL
- max_rows (optional): Max rows per sheet (default: 100000, supports up to 1M+)
- sheets (optional): Array of specific sheet names to sync
Auto-scaling behavior: - Sheets <10K rows: Single fetch - Sheets 10K-100K rows: 10K row chunks - Sheets >100K rows: 50K row chunks with sampling
query_sheets
Run SQL queries on synced data, including JOINs across tabs.
Use query_sheets with query "SELECT * FROM sheet1 JOIN sheet2 ON sheet1.id = sheet2.id LIMIT 10"
- query (required): SQL query to execute
list_synced_sheets
View all synced sheets and their table names.
Use list_synced_sheets
analyze_sheets
Get suggestions for queries across multiple sheets.
Use analyze_sheets with question "How can I combine sales data with customer data?"
- question (required): What you want to analyze
get_sheet_preview
Quick preview without syncing.
Use get_sheet_preview with url "https://docs.google.com/spreadsheets/d/your_sheet_id" and rows 20
- url (required): Google Sheets URL
- sheet_name (optional): Specific sheet to preview
- rows (optional): Number of rows to preview (default: 10)
📊 How It Works
- Authentication - Uses OAuth2 to securely access Google Sheets API
- Sync - Downloads sheet data to local SQLite database with configurable limits
- Query - Enables SQL queries across all synced sheets
- Multi-tab - Each sheet becomes a separate table, joinable via SQL
🏗️ Project Structure
google-sheet-analytics-mcp/
├── src/
│ ├── mcp_server.py # Main MCP server implementation
│ └── auth/
│ └── oauth_setup.py # OAuth authentication module
├── pyproject.toml # Modern Python package configuration
├── credentials.json.example # Example OAuth credentials format
├── README.md # This file
├── LICENSE # MIT License
├── CLAUDE.md # Claude-specific instructions
└── data/ # Runtime data (created automatically)
├── token.json # OAuth token (created during setup)
└── sheets_data.sqlite # Local database (created on first sync)
⚡ Performance
Scale & Capacity
- 1 Million Row Support: Handles sheets with up to 1M rows efficiently
- Chunked Processing: Automatically chunks large sheets (>10K rows) for optimal performance
- Bulk Operations: 50-100x faster inserts using batch processing
- Configurable Limits: Default 1000 rows, expandable to 1M+ rows per sheet
Optimizations
- Smart Caching: Skip unchanged sheets, 5-minute cache TTL
- Streaming Queries: Results streamed in batches to prevent memory overflow
- Progressive Hashing: Samples large datasets for efficient change detection
- Dynamic Indexing: Auto-creates indexes on large tables for faster queries
- Memory Management: Automatic cleanup after processing large datasets
Performance Metrics
- Sync Speed: 50,000-100,000 rows/second (vs 1,000 rows/second previously)
- Query Response: <1 second for most queries on 1M rows
- Memory Usage: Constant ~200-500MB regardless of dataset size
- 1M Row Sync Time: ~10-20 seconds
🔍 Example Use Cases
Multi-tab Analysis
sql
-- Combine sales data with customer information
SELECT
s.product_name,
s.sales_amount,
c.customer_name,
c.customer_segment
FROM sales_data s
JOIN customer_data c ON s.customer_id = c.id
WHERE s.sales_amount > 1000
Cross-sheet Aggregation
sql
-- Total revenue by region from multiple sheets
SELECT
region,
SUM(amount) as total_revenue
FROM (
SELECT region, amount FROM q1_sales
UNION ALL
SELECT region, amount FROM q2_sales
)
GROUP BY region
ORDER BY total_revenue DESC
🔒 Security
- OAuth2 authentication with Google
- Credentials stored locally (never committed to repo)
- Read-only access to Google Sheets
- Local SQLite database (no external data transmission)
🐛 Troubleshooting
Installation Issues
| Issue | Solution |
|-------|----------|
| "Failed to reconnect to google-sheets-analytics" | Run automated setup: python3 setup.py or ./install.sh |
| "ModuleNotFoundError: No module named 'google'" | Dependencies not installed - use automated installer or manual venv setup |
| "externally-managed-environment" | Use virtual environment (automated installers handle this) |
| "MCP server not appearing" | Check Claude Code config and restart app |
Common Runtime Issues
| Issue | Solution |
|-------|----------|
| "No credentials found" | Ensure credentials.json exists in project root or config/ directory |
| "Authentication failed" | Check token status with venv/bin/python src/auth/oauth_setup.py --status |
| "Token expired" | Run venv/bin/python src/auth/oauth_setup.py --test (auto-refreshes) |
| "Sync timeout" | Reduce max_rows parameter in smart_sync |
| "Tools not appearing" | Restart Claude Desktop after configuration |
| "Rate limit errors" | Wait a few minutes and try again with smaller batches |
OAuth Troubleshooting
- Check status:
venv/bin/python src/auth/oauth_setup.py --status - Test auth:
venv/bin/python src/auth/oauth_setup.py --test - Reset OAuth:
venv/bin/python src/auth/oauth_setup.py --reset - Manual setup:
venv/bin/python src/auth/oauth_setup.py --manual
MCP Server Not Appearing
- Verify config:
cat ~/.config/claude-code/config.json - Check the config includes the google-sheets-analytics server
- Ensure the virtual environment and dependencies are properly installed
- Check that the Python path in the config is correct
Database Issues
- Database location:
data/sheets_data.sqlite - Reset database: Delete the file and re-sync
- Check synced sheets: Use the
list_synced_sheetstool
🤝 Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- Built for the Model Context Protocol
- Designed for Claude Code
- Uses Google Sheets API
Need help? Open an issue on GitHub or check the troubleshooting section above.
Owner
- Name: Talk Nerdy To Me
- Login: talknerdytome-labs
- Kind: organization
- Repositories: 1
- Profile: https://github.com/talknerdytome-labs
GitHub Events
Total
- Public event: 1
- Push event: 11
- Create event: 2
Last Year
- Public event: 1
- Push event: 11
- Create event: 2
Packages
- Total packages: 2
-
Total downloads:
- npm 438 last-month
-
Total dependent packages: 0
(may contain duplicates) -
Total dependent repositories: 0
(may contain duplicates) - Total versions: 6
- Total maintainers: 1
npmjs.org: @talknerdytome/mcp-server-google-sheets
MCP (Model Context Protocol) server for analyzing Google Sheets data with natural language queries
- Homepage: https://github.com/talknerdytome-labs/google-sheet-analytics-mcp#readme
- License: MIT
-
Latest release: 1.0.5
published 7 months ago
Rankings
Maintainers (1)
npmjs.org: @talknerdytome/google-sheets-mcp
MCP server for analyzing Google Sheets data using natural language
- Homepage: https://github.com/talknerdytome-labs/google-sheet-analytics-mcp#readme
- License: MIT
-
Latest release: 1.0.1
published 7 months ago
Rankings
Maintainers (1)
Dependencies
- google-api-python-client >=2.0.0
- google-auth-httplib2 >=0.1.0
- google-auth-oauthlib >=1.0.0
- mcp >=1.0.0
- pydantic >=2.0.0