项目介绍
Metabase MCP 服务器
一个模型控制协议(MCP)服务器,使AI助手能够与Metabase数据库和动作进行交互。
![Metabase MCP 服务器]
概述
Metabase MCP 服务器在AI助手和Metabase之间提供了一个桥梁,使得AI模型可以:
- 列出并探索配置在Metabase中的数据库
- 获取关于数据库模式、表和字段的详细元数据
- 可视化数据库中表之间的关系
- 列出并执行Metabase动作
- 通过安全API对Metabase数据执行操作
该服务器实现了[模型控制协议(MCP)]规范,使其与支持MCP工具的AI助手兼容。
特性
- 数据库探索:列出所有数据库并探索其模式
- 元数据检索:获取关于表、字段和关系的详细信息
- 关系可视化:生成数据库关系的可视化表示
- 动作管理:列出、查看详细信息并执行Metabase动作
- 安全API密钥处理:加密存储API密钥并防止暴露
- Web界面:通过用户友好的Web界面测试和调试功能
- Docker支持:使用Docker和Docker Compose轻松部署
预备条件
- Metabase实例(推荐版本v0.46.0或更高)
- 具有适当权限的Metabase API密钥
- Docker(用于容器化部署)
- Python 3.10+(用于本地开发)
安装
使用Docker(推荐)
-
克隆此仓库:
git clone https://github.com/yourusername/metabase-mcp.git
cd metabase-mcp
-
构建并运行Docker容器:
docker-compose up -d
-
在http://localhost:5001访问配置界面
手动安装
-
克隆此仓库:
git clone https://github.com/yourusername/metabase-mcp.git
cd metabase-mcp
-
安装依赖项:
pip install -r requirements.txt
-
运行配置界面:
python -m src.server.web_interface
-
在http://localhost:5000访问配置界面
配置
- 在浏览器中打开Web界面
- 输入您的Metabase URL(例如,http://localhost:3000)
- 输入您的Metabase API密钥
- 点击“保存配置”并测试连接
获取Metabase API密钥
- 以管理员身份登录到您的Metabase实例
- 转到设置 > 管理员设置 > API密钥
- 创建具有适当权限的新API密钥
- 复制生成的密钥以在MCP服务器中使用
使用
运行MCP服务器
配置完成后,您可以运行MCP服务器:
# 使用Docker
docker run -p 5001:5000 metabase-mcp
# 手动
python -m src.server.mcp_server
可用工具
MCP服务器向AI助手提供了以下工具:
- list_databases:列出配置在Metabase中的所有数据库
- get_database_metadata:获取特定数据库的详细元数据
- db_overview:获取数据库中所有表的高层次概述
- table_detail:获取特定表的详细信息
- visualize_database_relationships:生成数据库关系的可视化表示
- run_database_query:针对数据库执行SQL查询
- list_actions:列出配置在Metabase中的所有动作
- get_action_details:获取特定动作的详细信息
- execute_action:执行带有参数的Metabase动作
通过Web界面测试工具
Web界面为每个工具提供了一个测试区域:
- List Databases:查看配置在Metabase中的所有数据库
- Get Database Metadata:查看数据库的详细模式信息
- DB Overview:查看数据库中所有表的简洁列表
- Table Detail:查看特定表的详细信息
- Visualize Database Relationships:生成表关系的可视化表示
- Run Query:针对数据库执行SQL查询
- List Actions:查看配置在Metabase中的所有动作
- Get Action Details:查看特定动作的详细信息
- Execute Action:测试执行带有参数的动作
安全注意事项
- API密钥在静止状态下被加密存储
- Web界面从不以明文形式显示API密钥
- 当配置了安全的Metabase URL时,所有API请求都使用HTTPS
- 在生产环境中,服务器应部署在安全代理之后
开发
项目结构
metabase-mcp/
├── src/
│ ├── api/ # Metabase API客户端
│ ├── config/ # 配置管理
│ ├── server/ # MCP和Web服务器
│ └── tools/ # 工具实现
├── templates/ # Web界面模板
├── docker-compose.yml # Docker Compose配置
├── Dockerfile # Docker构建配置
├── requirements.txt # Python依赖项
└── README.md # 文档
添加新工具
要添加新工具:
- 在
src/tools/中实现工具函数
- 在
src/server/mcp_server.py中注册工具
- 在
templates/config.html中添加测试界面(可选)
- 在
src/server/web_interface.py中添加路由(如果添加了测试界面)
故障排除
常见问题
- 连接失败:确保您的Metabase URL正确且可访问
- 认证错误:验证您的API密钥具有必要的权限
- Docker网络问题:当使用Docker时,请确保正确的网络配置
日志
检查日志以获取详细的错误信息:
# Docker日志
docker logs metabase-mcp
# 手动执行日志
# 日志打印到控制台
贡献
欢迎贡献!请随时提交Pull Request。