关于 Metabase MCP Server
Metabase MCP Server 是一个 TypeScript 编写的 MCP 服务,将 AI 助手连接到 Metabase 分析平台。它面向希望用自然语言访问仪表盘、问题和数据库的团队,并支持账号密码与 API Key 两种认证方式。
主要功能
- 01通过 metabase:// URI 访问资源
- 02支持账号密码和 API Key 认证
- 03以 JSON 格式返回结构化数据
- 04可配置日志级别的日志记录
- 05统一的错误处理与提示
适用场景
- 01让 AI 助手列出并查询 Metabase 仪表盘与问题
- 02通过 SQL 查询已连接的数据库
MCP 相关
该项目是 MCP 服务,向 MCP 客户端暴露 list_dashboards、list_cards、list_databases、execute_card、get_dashboard_cards 和 execute_query 等工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Metabase MCP 服务
作者:Hyeongjun Yu (@hyeongjun-dev)
一个将 AI 助手与 Metabase 分析平台集成的 Model Context Protocol 服务。
概述
这个基于 TypeScript 的 MCP 服务可与 Metabase API 无缝集成,让 AI 助手能够直接与分析数据交互。该服务面向 Claude 和其他兼容 MCP 的 AI 助手,充当分析平台与对话式 AI 之间的桥梁。
主要功能
- 资源访问:通过直观的
metabase://URI 浏览 Metabase 资源 - 两种身份验证方式:支持基于会话和 API 密钥的身份验证
- 结构化数据访问:以 JSON 格式返回响应,便于 AI 助手使用
- 全面的日志记录:提供详细日志,便于调试和监控
- 错误处理:提供稳健的错误处理机制和清晰的错误消息
可用工具
该服务向 AI 助手提供以下工具:
list_dashboards:获取 Metabase 实例中所有可用的仪表板list_cards:获取 Metabase 中所有已保存的问题/卡片list_databases:查看所有已连接的数据库源execute_card:运行已保存的问题,并根据可选参数获取结果get_dashboard_cards:从指定仪表板中提取所有卡片execute_query:对任意已连接的数据库执行自定义 SQL 查询
配置
该服务支持两种身份验证方式:
选项 1:用户名和密码身份验证
# Required
METABASE_URL=https://your-metabase-instance.com
[email protected]
METABASE_PASSWORD=your_password
# Optional
LOG_LEVEL=info # Options: debug, info, warn, error, fatal
选项 2:API 密钥身份验证(生产环境推荐)
# Required
METABASE_URL=https://your-metabase-instance.com
METABASE_API_KEY=your_api_key
# Optional
LOG_LEVEL=info # Options: debug, info, warn, error, fatal
你可以直接设置这些环境变量,也可以使用 dotenv 配合 .env 文件。
安装
前置条件
- Node.js 18.0.0 或更高版本
- 正在运行且具有适当凭据的 Metabase 实例
开发环境设置
# Install dependencies
npm install
# Build the project
npm run build
# Start the server
npm start
# For development with auto-rebuild
npm run watch
Claude Desktop 集成
若要与 Claude Desktop 配合使用,请添加以下服务配置:
MacOS:编辑 ~/Library/Application Support/Claude/claude_desktop_config.json
Windows:编辑 %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"metabase-mcp-server": {
"command": "/absolute/path/to/metabase-mcp-server/build/index.js",
"env": {
"METABASE_URL": "https://your-metabase-instance.com",
"METABASE_USER_EMAIL": "[email protected]",
"METABASE_PASSWORD": "your_password"
// Or alternatively, use API key authentication
// "METABASE_API_KEY": "your_api_key"
}
}
}
}
或者,你也可以通过 npx 使用 Smithery 托管版本,并采用 JSON 配置:
API 密钥身份验证:
{
"mcpServers": {
"metabase-mcp-server": {
"command": "npx",
"args": [
"-y",
"@smithery/cli@latest",
"run",
"@hyeongjun-dev/metabase-mcp-server",
"--config",
"{\"metabaseUrl\":\"https://your-metabase-instance.com\",\"metabaseApiKey\":\"your_api_key\",\"metabasePassword\":\"\",\"metabaseUserEmail\":\"\"}"
]
}
}
}
用户名和密码身份验证:
{
"mcpServers": {
"metabase-mcp-server": {
"command": "npx",
"args": [
"-y",
"@smithery/cli@latest",
"run",
"@hyeongjun-dev/metabase-mcp-server",
"--config",
"{\"metabaseUrl\":\"https://your-metabase-instance.com\",\"metabaseApiKey\":\"\",\"metabasePassword\":\"your_password\",\"metabaseUserEmail\":\"[email protected]\"}"
]
}
}
}
调试
由于 MCP 服务通过 stdio 通信,请使用 MCP Inspector 进行调试:
npm run inspector
Inspector 将提供基于浏览器的界面,用于监控请求和响应。
Docker 支持
提供了 Docker 镜像,可用于容器化部署:
# Build the Docker image
docker build -t metabase-mcp-server .
# Run the container with environment variables
docker run -e METABASE_URL=https://your-metabase.com \
-e METABASE_API_KEY=your_api_key \
metabase-mcp-server
安全注意事项
- 建议在生产环境中使用 API 密钥身份验证
- 妥善保管 API 密钥和凭据
- 考虑使用 Docker secrets 或环境变量,而不是将凭据硬编码
- 采取适当的网络安全措施,限制对 Metabase 实例的访问
贡献
欢迎贡献!请随时提交 Pull Request。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。