Metabase AI助手连接服务

高性能Metabase模型上下文协议(MCP)服务器,使AI助手能够无缝连接Metabase实例进行数据库查询、SQL执行和仪表板管理。

  • by hluaguo
  • Python
  • 本地部署
  • 73 星标
  • 更新于
在 GitHub 查看 cheukyin175/metabase-mcp

使用说明

元数据库MCP服务器-将AI助手连接到元数据库分析

高性能 模型上下文协议(MCP)服务器 为了 元数据库,使AI助手能够像 克劳德, 光标,以及其他MCP客户端,以便与您的Metabase实例无缝交互。通过人工智能驱动的数据库操作,使用自然语言查询数据库、执行SQL、管理仪表板和自动化分析工作流程。

非常适合: 数据分析师、开发人员和团队希望将AI助手与其Metabase商业智能平台集成,以实现自动化SQL查询、仪表板管理和数据探索。

主要特点

数据库操作

  • 列出数据库:浏览所有已配置的元数据库
  • 表发现:使用元数据和描述浏览表
  • 现场检查:通过智能分页获取详细的字段/列信息

查询和分析

  • SQL执行:使用参数支持和模板运行本机SQL查询
  • MongoDB支持:为聚合管道执行带有自动JSON转换的原生MongoDB查询
  • 卡片管理:执行、创建和管理元数据库问题/卡片(SQL和MongoDB)
  • 馆藏组织:创建和管理收藏,以更好地组织
  • 自然语言查询:让AI助手将问题转换为SQL或MongoDB查询

身份验证和安全

  • API关键支持:通过Metabase API密钥进行安全身份验证(推荐)
  • 基于会话的身份验证:替代电子邮件/密码身份验证
  • 环境变量:通过以下方式进行安全的凭据管理 .env 文件

AI助手集成

  • 克劳德桌面版:与Anthropic的Claude AI的原生集成
  • 光标IDE:无缝集成人工智能辅助开发
  • 任何MCP客户端:与所有模型上下文协议客户端兼容

增强的性能和可靠性

  • 上下文感知日志记录:实时日志记录,调试、信息、警告和错误级别对AI客户端可见
  • 正确的错误处理:FastMCP ToolError 用于更好的错误消息和调试的异常
  • 中间件堆栈:内置错误处理和日志中间件,提高生产可靠性
  • 最佳实践:遵循最新的FastMCP模式,具有防重复和干净的配置
  • 现代Python:使用Python 3.12+类型提示(| 语法)以提高类型安全性

快速开始

先决条件

  • Python 3.12+
  • 具有API访问权限的元数据库实例
  • uvx 或 uv 包管理器

安装

选项1:使用uvx(最简单-无需安装)

# Run directly without installing (like npx for Python)
uvx metabase-mcp

# With environment variables
METABASE_URL=https://your-instance.com METABASE_API_KEY=your-key uvx metabase-mcp

选项2:从PyPI安装

# Install globally
uv tool install metabase-mcp

# Or with pip
pip install metabase-mcp

# Then run
metabase-mcp

选项3:开发设置(来源)

# Clone the repository
git clone https://github.com/cheukyin175/metabase-mcp.git
cd metabase-mcp

# Install dependencies
uv sync

# Run the server
uv run python server.py

配置

创建一个 .env 包含元数据库凭据的文件:

cp .env.example .env

配置选项

选项1:API密钥验证(推荐)

METABASE_URL=https://your-metabase-instance.com
METABASE_API_KEY=your-api-key-here

选项2:电子邮件/密码验证

METABASE_URL=https://your-metabase-instance.com
METABASE_USER_EMAIL=your-email@example.com
METABASE_PASSWORD=your-password

可选:元数据库API HTTP超时

METABASE_HTTP_TIMEOUT=30.0  # Default: 30.0 seconds

可选:SSE/HTTP的自定义主机/端口

HOST=localhost  # Default: 0.0.0.0
PORT=9000      # Default: 8000

用法

运行服务器

快速启动(无需设置)

# Run directly with uvx
uvx metabase-mcp

# With custom Metabase instance
METABASE_URL=https://your-instance.com METABASE_API_KEY=your-key uvx metabase-mcp

来源(发展)

# STDIO transport (default)
uv run python server.py

# SSE transport (uses HOST=0.0.0.0, PORT=8000 by default)
uv run python server.py --sse

# HTTP transport (uses HOST=0.0.0.0, PORT=8000 by default)
uv run python server.py --http

# Custom host and port via environment variables
HOST=localhost PORT=9000 uv run python server.py --sse
HOST=192.168.1.100 PORT=8080 uv run python server.py --http

光标集成

您可以通过编辑光标设置手动配置光标。

对于SSE运输:在使用Cursor之前,必须启动服务器:

uv run python server.py --sse

Claude桌面集成

选项1:使用uvx(推荐)

将此添加到 ~/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"
            }
        }
    }
}

选项2:使用本地安装

如果您已经克隆了存储库:

{
    "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"
            }
        }
    }
}

选项3:使用FastMCP CLI

fastmcp install server.py -n "Metabase MCP"

可用工具

数据库操作

工具 说明
list_databases 在元数据库中列出所有已配置的数据库
list_tables 使用元数据获取特定数据库中的所有表
get_table_fields 检索表的字段/列信息

查询操作

工具 说明
execute_query 使用参数支持执行本机SQL查询
execute_mongodb_query 使用聚合管道的自动JSON转换执行本机MongoDB查询
execute_card 运行已保存的元数据库问题/卡片

卡片管理

工具 说明
list_cards 列出所有已保存的问题/卡片
create_card 使用SQL查询创建新问题/卡片
create_mongodb_card 使用本机查询支持创建新的MongoDB问题/卡片

收集管理

工具 说明
list_collections 浏览所有收藏
create_collection 为组织创建新集合

运输方式

服务器支持多种传输方式:

  • 工作室 (默认):用于IDE集成(光标、克劳德桌面)
  • 上海证券交易所:web应用程序的服务器发送事件
  • 超文本传输协议:API访问的标准HTTP
uv run python server.py                        # STDIO (default)
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   # Custom host/port

发展

设置开发环境

# Install with dev dependencies
uv sync --group dev

# Or with pip
pip install -r requirements-dev.txt

代码质量

# Run linting
uv run ruff check .

# Format code
uv run ruff format .

# Type checking
uv run mypy server.py

使用示例

查询示例

# List all databases
databases = await list_databases()

# Execute a SQL query
result = await execute_query(
    database_id=1,
    query="SELECT * FROM users LIMIT 10"
)

# Create and run a card
card = await create_card(
    name="Active Users Report",
    database_id=1,
    query="SELECT COUNT(*) FROM users WHERE active = true",
    collection_id=2
)

项目结构

metabase-mcp/
├── server.py                 # Main MCP server implementation
├── pyproject.toml           # Project configuration and dependencies
└── .env.example             # Environment variables template

贡献

欢迎投稿!请随时提交拉取请求。

许可证

MIT许可证-有关详细信息,请参阅许可证文件

资源

关键词和主题

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

明星历史

如果你觉得这个项目有用,请考虑给它一颗星!它帮助其他人发现这个工具。

用例

  • 自然语言数据库查询:让克劳德用简单的英语查询你的元数据库
  • 自动生成报告:使用AI创建和管理元数据库卡和集合
  • 数据探索:让AI助手帮助您从数据中发现见解
  • SQL查询辅助:通过AI获取编写和优化SQL查询的帮助
  • 仪表板管理:自动创建和组织元数据库仪表板
  • 数据分析工作流:将AI驱动的分析集成到您的开发工作流程中