一个高性能的模型上下文协议(MCP)服务器,用于Metabase,使像Claude、Cursor和其他MCP客户端能够无缝地与您的Metabase实例交互。通过AI驱动的数据库操作查询数据库、执行SQL、管理仪表板并自动化分析工作流程。
适用于: 数据分析师、开发者和团队,他们希望将AI助手集成到他们的Metabase商业智能平台中,以实现自动化的SQL查询、仪表板管理和数据探索。
.env文件进行安全凭证管理ToolError 异常,提供更好的错误消息和调试| 语法),提高类型安全性uvx 或 uv 包管理器# 直接运行而不安装(类似于npx对Python)
uvx metabase-mcp
# 使用环境变量
METABASE_URL=https://your-instance.com METABASE_API_KEY=your-key uvx metabase-mcp
# 全局安装
uv tool install metabase-mcp
# 或者使用pip
pip install metabase-mcp
# 然后运行
metabase-mcp
# 克隆仓库
git clone https://github.com/cheukyin175/metabase-mcp.git
cd metabase-mcp
# 安装依赖
uv sync
# 运行服务器
uv run python server.py
创建一个.env文件来存储您的Metabase凭据:
cp .env.example .env
METABASE_URL=https://your-metabase-instance.com
METABASE_API_KEY=your-api-key-here
METABASE_URL=https://your-metabase-instance.com
METABASE_USER_EMAIL=your-email@example.com
METABASE_PASSWORD=your-password
HOST=localhost # 默认:0.0.0.0
PORT=9000 # 默认:8000
# 直接使用uvx运行
uvx metabase-mcp
# 使用自定义Metabase实例
METABASE_URL=https://your-instance.com METABASE_API_KEY=your-key uvx metabase-mcp
# STDIO传输(默认)
uv run python server.py
# SSE传输(默认使用HOST=0.0.0.0, PORT=8000)
uv run python server.py --sse
# HTTP传输(默认使用HOST=0.0.0.0, PORT=10000)
uv run python server.py --http
# 通过环境变量使用自定义主机和端口
HOST=localhost PORT=9000 uv run python server.py --sse
HOST=192.168.1.100 PORT=8080 uv run python server.py --http
您可以手动配置Cursor,编辑您的Cursor设置。
对于SSE传输:您必须在使用Cursor之前启动服务器:
uv run python server.py --sse
在~/Library/Application Support/Claude/claude_desktop_config.json中添加以下内容:
{
"mcpServers": {
"metabase-mcp": {
"command": "uvx",
"args": ["metabase-mcp"],
"env": {
"METABASE_URL": "https://your-metabase-instance.com",
"METABASE_API_KEY": "your-api-key-here"
}
}
}
}
如果您已经克隆了仓库:
{
"mcpServers": {
"metabase-mcp": {
"command": "uv",
"args": [
"run",
"--directory",
"/absolute/path/to/metabase-mcp",
"python",
"server.py"
],
"env": {
"METABASE_URL": "https://your-metabase-instance.com",
"METABASE_API_KEY": "your-api-key-here"
}
}
}
}
fastmcp install server.py -n "Metabase MCP"
| 工具 | 描述 |
|---|---|
list_databases | 列出Metabase中所有已配置的数据库 |
list_tables | 获取特定数据库中的所有表及其元数据 |
get_table_fields | 检索表的字段/列信息 |
| 工具 | 描述 |
|---|---|
execute_query | 执行原生SQL查询,支持参数 |
execute_card | 运行保存的Metabase问题/卡片 |
| 工具 | 描述 |
|---|---|
list_cards | 列出所有保存的问题/卡片 |
create_card | 创建新的问题/卡片,使用SQL查询 |
| 工具 | 描述 |
|---|---|
list_collections | 浏览所有集合 |
create_collection | 创建新的集合以进行组织 |
服务器支持多种传输方法:
uv run python server.py # STDIO(默认)
uv run python server.py --sse # SSE(HOST=0.0.0.0, PORT=8000)
uv run python server.py --http # HTTP(HOST=0.0.0.0, PORT=8000)
HOST=localhost PORT=9000 uv run python server.py --sse # 自定义主机/端口
# 安装开发依赖
uv sync --group dev
# 或者使用pip
pip install -r requirements-dev.txt
# 运行代码检查
uv run ruff check .
# 格式化代码
uv run ruff format .
# 类型检查
uv run mypy server.py
# 列出所有数据库
databases = await list_databases()
# 执行SQL查询
result = await execute_query(
database_id=1,
query="SELECT * FROM users LIMIT 10"
)
# 创建并运行卡片
card = await create_card(
name="活跃用户报告",
database_id=1,
query="SELECT COUNT(*) FROM users WHERE active = true",
collection_id=2
)
metabase-mcp/
├── server.py # 主MCP服务器实现
├── pyproject.toml # 项目配置和依赖项
└── .env.example # 环境变量模板
欢迎贡献!请随时提交Pull Request。
MIT许可证 - 详情见LICENSE文件
metabase mcp model-context-protocol claude cursor ai-assistant fastmcp sql database analytics business-intelligence bi data-analysis anthropic llm python automation api data-science query-builder natural-language-sql
如果您觉得这个项目有用,请考虑给它一个星标!这有助于其他人发现这个工具。