Metabase AI Assistant是一款由人工智能驱动的助手,它通过模型上下文协议(MCP) 直接连接到Metabase和PostgreSQL数据库,适用于Claude Desktop和Claude Code。该助手能够利用Metabase API和直接数据库连接来创建模型、SQL查询、指标和仪表板。
🚀 适用于Claude Desktop和Claude Code的MCP服务器 - 支持Metabase和直接数据库访问
⭐ 如果您觉得这个项目有用,请给它点个星! ⭐
本项目可通过以下简单步骤快速启动。首先,按照安装指南完成项目的安装和依赖配置;接着,根据配置说明设置好环境变量;然后,依据Claude Desktop和Claude Code集成步骤完成与这两个工具的集成;最后,根据不同的使用场景选择交互式CLI或者编程式使用方式来使用本项目。
# 克隆仓库
git clone https://github.com/onmartech/metabase-ai-assistant.git
cd metabase-ai-assistant
# 安装依赖
npm install
# 创建环境文件
cp .env.example .env
编辑 .env 文件:
# Metabase配置
METABASE_URL=http://your-metabase-instance.com
METABASE_USERNAME=your_username
METABASE_PASSWORD=your_password
METABASE_API_KEY=your_metabase_api_key
# AI提供商(至少需要一个)
ANTHROPIC_API_KEY=your_anthropic_key
# 或者
OPENAI_API_KEY=your_openai_key
# 应用设置
LOG_LEVEL=info
⚠️ 重要提示
切勿将
.env文件提交到版本控制中,该文件已包含在.gitignore中。
npm start
import { MetabaseClient } from './src/metabase/client.js';
import { MetabaseAIAssistant } from './src/ai/assistant.js';
// 创建客户端
const client = new MetabaseClient({
url: 'http://your-metabase.com',
username: 'user',
password: 'pass'
});
// 启动AI助手
const assistant = new MetabaseAIAssistant({
metabaseClient: client,
aiProvider: 'anthropic',
anthropicApiKey: 'your-key'
});
// 创建模型
const model = await assistant.createModel(
'客户细分模型',
databaseId
);
// 生成SQL查询
const sql = await assistant.generateSQL(
'最近30天的销售总额',
schema
);
// 创建销售模型
await assistant.createModel(
'每日销售摘要 - 产品、类别、金额',
databaseId
);
// 定义指标
await assistant.createMetric(
'平均订单价值',
tableId
);
// 创建仪表板
await assistant.createDashboard(
'电子商务管理面板',
questions
);
// 客户细分查询
const sql = await assistant.generateSQL(
'通过RFM分析进行客户细分',
schema
);
// 客户流失预测模型
await assistant.createModel(
'客户流失预测模型',
databaseId
);
// 收支分析
await assistant.createQuestion(
'月度损益表',
databaseId
);
// 预算对比仪表板
await assistant.createDashboard(
'预算与实际情况对比',
budgetQuestions
);
在交互式CLI中可用的命令如下:
metabase-ai-assistant/
├── src/
│ ├── mcp/
│ │ └── server.js # MCP服务器(Claude Desktop集成)
│ ├── metabase/
│ │ └── client.js # Metabase API客户端
│ ├── database/
│ │ ├── direct-client.js # 直接PostgreSQL客户端
│ │ └── connection-manager.js # 混合连接管理器
│ ├── ai/
│ │ └── assistant.js # AI辅助函数
│ ├── cli/
│ │ └── interactive.js # 交互式CLI(独立运行)
│ ├── utils/
│ │ └── logger.js # 日志记录工具
│ └── index.js # 主入口点(CLI模式)
├── tests/ # 测试文件
├── .env.example # 环境模板
├── package.json
└── README.md
// 数据库
getDatabases()
getDatabase(id)
getDatabaseSchemas(databaseId)
getDatabaseTables(databaseId)
// 模型
getModels()
createModel(modelData)
// 查询
getQuestions(collectionId)
createQuestion(questionData)
executeNativeQuery(databaseId, sql)
// 指标
getMetrics()
createMetric(metricData)
// 仪表板
getDashboards()
createDashboard(dashboardData)
addCardToDashboard(dashboardId, cardId, options)
// AI操作
analyzeRequest(userRequest)
generateSQL(description, schema)
suggestVisualization(data, questionType)
optimizeQuery(sql)
explainQuery(sql)
// 创建操作
createModel(description, databaseId)
createQuestion(description, databaseId, collectionId)
createMetric(description, tableId)
createDashboard(description, questions)
# 运行所有测试
npm test
# 连接测试
npm run test:connection
# 覆盖率报告
npm run test:coverage
本项目通过模型上下文协议(MCP)与Claude Desktop和Claude Code集成。
~/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"
}
}
}
}
Claude Code可以通过全局安装直接使用此MCP服务器。
# 全局安装MCP服务器
npm link
# 验证安装
which metabase-ai-mcp
npm list -g | grep metabase-ai-assistant
确保您的 .env 文件已正确配置Metabase凭证:
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
# 直接测试MCP服务器
node src/mcp/server.js
# 使用环境变量进行测试
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
在Claude Code中,询问:"您有哪些可用的MCP工具?"
您应该会看到 27个Metabase AI Assistant工具 可用: 📊 数据库工具:
db_list - 列出所有Metabase数据库db_schemas - 获取模式信息db_tables - 列出带有详细信息的表sql_execute - 运行SQL查询🎯 Metabase工具:
mb_question_create - 创建问题/图表mb_dashboard_create - 创建仪表板mb_dashboard_template_executive - 自动生成执行仪表板mb_question_create_parametric - 创建参数化问题🔍 人工智能驱动的工具:
ai_sql_generate - 根据自然语言生成SQLai_sql_optimize - 优化SQL性能ai_sql_explain - 解释SQL查询📚 文档工具:
web_explore_metabase_docs - 爬取Metabase文档web_search_metabase_docs - 搜索文档该服务器提供了全面的Metabase和PostgreSQL集成,拥有 27个工具,可用于:
.env 文件中.env 文件被排除在版本控制之外claude_ai_ 前缀以确保安全npm link 已成功运行which metabase-ai-mcpecho $METABASE_URLnode src/mcp/server.js.env 文件提交到版本控制中# 全局安装PM2
npm install -g pm2
# 使用PM2启动MCP服务器
npm run pm2:start
# 监控和管理
npm run pm2:logs
npm run pm2:restart
npm run pm2:stop
# 系统重启时自动重启
pm2 startup
pm2 save
# 使用Docker Compose构建和运行
npm run docker:run
# 监控日志
npm run docker:logs
# 停止容器
npm run docker:stop
railway.json 进行一键部署deploy/heroku-deploy.md)# 复制服务文件
sudo cp metabase-ai-mcp.service /etc/systemd/system/
# 启用并启动服务
sudo systemctl enable metabase-ai-mcp
sudo systemctl start metabase-ai-mcp
# 监控服务
sudo systemctl status metabase-ai-mcp
sudo journalctl -u metabase-ai-mcp -f
npm run mcp:prod # 生产模式
npm run test:connection # 健康检查
npm run lint # 代码质量检查
如果您喜欢这个项目并希望为其发展做出贡献,可以参考以下内容:
git checkout -b feature/new-feature)git commit -m 'feat: 添加新功能')git push origin feature/new-feature)本项目采用MIT许可证,详情请参阅 LICENSE 文件。 版权所有 (c) 2024 ONMARTECH LLC
ONMARTECH LLC提供专业的支持和定制服务。
感谢所有使这个项目成为可能的人:
做出重要贡献的开发者将在此列出。
如果您觉得这个项目有用,请不要忘记点个 ⭐ 星并 🔄 分享!