metabase-ai-assistant
服务介绍
Metabase AI Assistant
AI-powered assistant that connects to Metabase and PostgreSQL databases directly via Model Context Protocol (MCP) for Claude Desktop and Claude Code. Creates models, SQL queries, metrics, and dashboards using both Metabase API and direct database connections.
MCP Server for Claude Desktop & Claude Code - Metabase + Direct DB Access
If you find this project useful, please give it a star!
Features
MCP Integration (Claude Desktop & Claude Code)
- Model Context Protocol: Native integration with Claude Desktop and Claude Code
- Direct Database Access: Direct PostgreSQL database connections
- Metabase API Integration: Full integration with Metabase instances
- Schema Discovery: Automatic database schema discovery and analysis
- Relationship Detection: Table relationship detection and suggestions
AI-Powered Features
- Natural Language SQL: Generate SQL queries from natural language descriptions
- Smart Model Building: AI-assisted Metabase model creation
- Intelligent Dashboards: Automatic dashboard layout and widget suggestions
- Query Optimization: SQL query performance optimization
- Data Insights: Data analysis and pattern detection
Developer Tools
- DDL Operations: Safe table/view/index creation (prefix-protected)
- Batch Operations: Bulk data processing operations
- Connection Management: Hybrid connection management (API + Direct)
- Security Controls: AI object prefix control and approval workflows
- Performance Monitoring: Operation timing and timeout controls
Requirements
System
- Node.js 18+
- Claude Desktop (for MCP support) OR Claude Code
- PostgreSQL Database (for direct connections)
Services
- Metabase instance (v0.48+)
- Anthropic API (included in Claude Desktop/Code)
Installation
# Clone the repository
git clone https://github.com/onmartech/metabase-ai-assistant.git
cd metabase-ai-assistant
# Install dependencies
npm install
# Create environment file
cp .env.example .env
Configuration
Edit the .env file:
# Metabase Configuration
METABASE_URL=http://your-metabase-instance.com
METABASE_USERNAME=your_username
METABASE_PASSWORD=your_password
METABASE_API_KEY=your_metabase_api_key
# AI Provider (at least one required)
ANTHROPIC_API_KEY=your_anthropic_key
# or
OPENAI_API_KEY=your_openai_key
# Application Settings
LOG_LEVEL=info
Security Warning: Never commit the .env file to version control. This file is already included in .gitignore.
Claude Desktop & Claude Code Integration (MCP)
This project integrates with Claude Desktop and Claude Code via Model Context Protocol (MCP):
For Claude Desktop:
- Edit Claude Desktop Config:
~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"metabase-ai-assistant": {
"command": "node",
"args": ["/path/to/your/metabase-ai-assistant/src/mcp/server.js"],
"env": {
"METABASE_URL": "http://your-metabase-instance.com",
"METABASE_USERNAME": "your_username",
"METABASE_PASSWORD": "your_password",
"ANTHROPIC_API_KEY": "your_anthropic_key"
}
}
}
}
- Restart Claude Desktop and MCP tools will be available.
For Claude Code:
Claude Code can use this MCP server directly via global installation:
Step 1: Global Installation
# Install the MCP server globally
npm link
# Verify installation
which metabase-ai-mcp
npm list -g | grep metabase-ai-assistant
Step 2: Environment Setup
Ensure your .env file is properly configured with your Metabase credentials:
METABASE_URL=http://your-metabase-instance.com
METABASE_USERNAME=your_username
METABASE_PASSWORD=your_password
METABASE_API_KEY=your_api_key
ANTHROPIC_API_KEY=your_anthropic_key
Step 3: Test MCP Server
# Test the MCP server directly
node src/mcp/server.js
# Test with environment variables
export METABASE_URL="http://your-instance.com"
export METABASE_USERNAME="your_username"
export METABASE_PASSWORD="your_password"
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | node src/mcp/server.js
Step 4: Verify Integration
In Claude Code, ask: "What MCP tools do you have available?"
You should see 27 Metabase AI Assistant tools available:
** Database Tools:**
db_list- List all Metabase databasesdb_schemas- Get schema informationdb_tables- List tables with detailssql_execute- Run SQL queries
** Metabase Tools:**
mb_question_create- Create questions/chartsmb_dashboard_create- Create dashboardsmb_dashboard_template_executive- Auto-generate executive dashboardsmb_question_create_parametric- Create parametric questions
** AI-Powered Tools:**
ai_sql_generate- Generate SQL from natural languageai_sql_optimize- Optimize SQL performanceai_sql_explain- Explain SQL queries
** Documentation Tools:**
web_explore_metabase_docs- Crawl Metabase documentationweb_search_metabase_docs- Search documentation
The server provides comprehensive Metabase and PostgreSQL integration with 27 tools for:
- Database schema exploration and analysis
- Natural language SQL query generation and optimization
- Executive dashboard templates and parametric questions
- Direct DDL operations with security controls
- Metabase documentation crawling and search
- Table relationship detection and mapping
Usage
Interactive CLI
npm start
Programmatic Usage
import { MetabaseClient } from './src/metabase/client.js';
import { MetabaseAIAssistant } from './src/ai/assistant.js';
// Client olutur
const client = new MetabaseClient({
url: 'http://your-metabase.com',
username: 'user',
password: 'pass'
});
// AI Assistant balat
const assistant = new MetabaseAIAssistant({
metabaseClient: client,
aiProvider: 'anthropic',
anthropicApiKey: 'your-key'
});
// Model olutur
const model = await assistant.createModel(
'Mteri segmentasyon modeli',
databaseId
);
// SQL sorgusu ret
const sql = await assistant.generateSQL(
'Son 30 gnn sat toplam',
schema
);
rnek Senaryolar
1. E-Ticaret Dashboard'u
// Sat modeli olutur
await assistant.createModel(
'Gnlk sat zeti - rn, kategori, tutar',
databaseId
);
// Metrikler tanmla
await assistant.createMetric(
'Ortalama sepet deeri',
tableId
);
// Dashboard olutur
await assistant.createDashboard(
'E-Ticaret Ynetici Paneli',
questions
);
2. Mteri Analizi
// Mteri segmentasyon sorgusu
const sql = await assistant.generateSQL(
'RFM analizi ile mteri segmentleri',
schema
);
// Churn prediction modeli
await assistant.createModel(
'Mteri kayp tahmin modeli',
databaseId
);
3. Finansal Raporlama
// Gelir-gider analizi
await assistant.createQuestion(
'Aylk kar-zarar tablosu',
databaseId
);
// Bte karlatrma dashboard'u
await assistant.createDashboard(
'Bte vs Gerekleen',
budgetQuestions
);
CLI Komutlar
Interaktif CLI'da kullanlabilir komutlar:
- ** Create Model**: AI ile model olutur
- ** Create Question**: SQL sorgusu olutur
- ** Create Metric**: Metrik tanmla
- ** Create Dashboard**: Dashboard hazrla
- ** Explore Schema**: Veritaban emasn incele
- ** Execute SQL**: SQL sorgusu altr
- ** Optimize Query**: Sorgu optimize et
- ** AI Query Builder**: Doal dilde sorgu olutur
Proje Yaps
metabase-ai-assistant/
src/
mcp/
server.js # MCP Server (Claude Desktop entegrasyonu)
metabase/
client.js # Metabase API client
database/
direct-client.js # Direct PostgreSQL client
connection-manager.js # Hybrid connection manager
ai/
assistant.js # AI helper functions
cli/
interactive.js # Interactive CLI (standalone)
utils/
logger.js # Logging utilities
index.js # Main entry point (CLI mode)
tests/ # Test files
.env.example # Environment template
package.json
README.md
API Referans
MetabaseClient
// Veritabanlar
getDatabases()
getDatabase(id)
getDatabaseSchemas(databaseId)
getDatabaseTables(databaseId)
// Modeller
getModels()
createModel(modelData)
// Sorgular
getQuestions(collectionId)
createQuestion(questionData)
executeNativeQuery(databaseId, sql)
// Metrikler
getMetrics()
createMetric(metricData)
// Dashboard'lar
getDashboards()
createDashboard(dashboardData)
addCardToDashboard(dashboardId, cardId, options)
MetabaseAIAssistant
// AI lemleri
analyzeRequest(userRequest)
generateSQL(description, schema)
suggestVisualization(data, questionType)
optimizeQuery(sql)
explainQuery(sql)
// Oluturma lemleri
createModel(description, databaseId)
createQuestion(description, databaseId, collectionId)
createMetric(description, tableId)
createDashboard(description, questions)
Test
# Tm testleri altr
npm test
# Balant testi
npm run test:connection
# Coverage raporu
npm run test:coverage
Security
Data Security
- Environment Variables: All sensitive data (API keys, passwords) stored in
.envfile - Git Ignore:
.envfile excluded from version control - SQL Injection Protection: Parameterized queries and input validation
- Rate Limiting: API request rate limiting applied
- Audit Logging: All database operations logged for security monitoring
- No Hardcoded Credentials: Security-first approach prevents credential exposure
Database Security
- AI Object Prefix: All AI-created objects marked with
claude_ai_prefix for safety - Schema Isolation: Operations limited to specified schemas only
- Read-Only Mode: Default read-only permissions with explicit approval for modifications
- DDL Approval System: Database changes require explicit confirmation
- Prefix Validation: Only AI-prefixed objects can be modified or deleted
MCP Security
- Secure Transport: MCP communication over secure channels
- Environment Isolation: Credentials passed via environment variables
- Tool Validation: All tool inputs validated before execution
- Error Handling: Sensitive information filtered from error messages
Production Deployment
- Use environment-specific configuration files
- Prefer SSL/TLS connections for all database communications
- Grant minimum required permissions to database users
- Protect API endpoints with authentication and authorization
- Regularly rotate API keys and database passwords
- Monitor and log all tool usage for security auditing
Troubleshooting
Connection Errors
- Verify Metabase URL is accessible
- Ensure API key and credentials are valid
- Check network connectivity and firewall settings
- Confirm environment variables are properly set
MCP Integration Issues
- Ensure
npm linkwas run successfully - Verify MCP server binary is in PATH:
which metabase-ai-mcp - Check environment variables are exported:
echo $METABASE_URL - Test MCP server directly:
node src/mcp/server.js - Restart Claude Code after global installation
Query Errors
- Validate SQL syntax and formatting
- Verify table and column names exist
- Check database permissions and schema access
- Ensure proper schema selection for operations
Security Warnings
- Never commit
.envfiles to version control - Avoid hardcoding credentials in source code
- Use prefix validation for AI-created objects
- Monitor database operations for security compliance
Production Deployment
Option 1: PM2 Process Manager (Recommended)
# Install PM2 globally
npm install -g pm2
# Start MCP server with PM2
npm run pm2:start
# Monitor and manage
npm run pm2:logs
npm run pm2:restart
npm run pm2:stop
# Auto-restart on system reboot
pm2 startup
pm2 save
Option 2: Docker Container
# Build and run with Docker Compose
npm run docker:run
# Monitor logs
npm run docker:logs
# Stop containers
npm run docker:stop
Option 3: Cloud Deployment
- Railway: One-click deploy with
railway.json - Heroku: Deploy with Heroku CLI (see
deploy/heroku-deploy.md) - DigitalOcean: App Platform with Docker
- AWS: ECS Fargate or EC2 with systemd service
Option 4: Systemd Service (Linux)
# Copy service file
sudo cp metabase-ai-mcp.service /etc/systemd/system/
# Enable and start service
sudo systemctl enable metabase-ai-mcp
sudo systemctl start metabase-ai-mcp
# Monitor service
sudo systemctl status metabase-ai-mcp
sudo journalctl -u metabase-ai-mcp -f
Production Scripts
npm run mcp:prod # Production mode
npm run test:connection # Health check
npm run lint # Code quality check
Roadmap
- Natural Language Processing gelitirmeleri
- Grsel sorgu builder
- Otomatik dashboard neri sistemi
- Multi-database destei
- Real-time data streaming
- Advanced ML modelleri
Katkda Bulunma
Bu projeyi beendiyseniz ve gelitirmesine katkda bulunmak istiyorsanz:
Projeyi Destekleyin
- GitHub'da Star Verin: Projeyi faydal bulduysanz star verin
- Follow Edin: Gncellemelerden haberdar olmak iin @onmartech hesabn takip edin
- Share Edin: Sosyal medyada paylan ve arkadalarnza nerin
Gelitirmeye Katln
- Fork yapn
- Feature branch oluturun (
git checkout -b feature/yeni-ozellik) - Deiikliklerinizi commit yapn (
git commit -m 'feat: Yeni zellik eklendi') - Push yapn (
git push origin feature/yeni-ozellik) - Pull Request an
Katk Fikirleri
- Yeni AI modeli entegrasyonlar
- Dashboard template'leri
- Metabase connector'lar
- Dokmantasyon iyiletirmeleri
- Bug fixes ve performans optimizasyonlar
Katk Kurallar
- Kod deiikliklerinde test yazn
- Commit mesajlarnda Conventional Commits kullann
- ESLint ve Prettier ayarlarna uyun
- Deiikliklerinizi dokmante edin
Lisans
MIT License - Detaylar iin LICENSE dosyasna bakn.
Copyright (c) 2024 ONMARTECH LLC
Destek ve letiim
Bug Reports & Feature Requests
- GitHub Issues: Issues sayfas
- Bug Template: Issue aarken template'leri kullann
- Feature Requests: Hangi zellii istediinizi detaylandrn
Topluluk
- GitHub Discussions: Soru-cevap ve fikirler iin
- Documentation: Wiki sayfalarna katk yapn
- Examples: rnek kullanm case'leri paylan
Ticari Destek
ONMARTECH LLC tarafndan profesyonel destek ve customization hizmetleri mevcuttur.
Katkda Bulunanlar
Bu projeyi mmkn klan herkese teekkrler:
- ONMARTECH LLC - Proje gelitirme ve bakm
- Metabase Team - Harika platform
- Open Source Community - Srekli ilham ve geri bildirim
Hall of Fame
nemli katklarda bulunan gelitiriciler burada listelenecektir.
Bu projeyi faydal bulduysanz star vermeyi ve share etmeyi unutmayn!