项目简介

Talk-to-Metabase 是一个基于 Model Context Protocol (MCP) 构建的服务器应用,旨在连接大型语言模型(如 Claude)与 Metabase 商业智能平台。它通过 MCP 提供的标准化接口,允许 LLM 客户端与 Metabase 实例进行交互,实现自动化地浏览、查询、分析 Metabase 中的数据和资源。

主要功能点

  • 资源访问与管理: 允许 LLM 浏览 Metabase 中的仪表盘 (Dashboards)、图表 (Cards)、集合 (Collections) 和数据库 (Databases)。可以获取资源的基本信息和结构。
  • 数据查询: 能够通过执行原生 SQL 或 Metabase 查询语言 (MBQL) 来获取数据库中的数据。
  • 图表与仪表盘操作: 可以创建新的图表(问题)或仪表盘,并能更新现有图表的定义(例如修改 SQL 查询)。
  • 资源搜索: 提供强大的搜索能力,帮助 LLM 根据关键词和多种过滤条件查找 Metabase 中的各类资源。
  • 上下文指南: 提供工具获取关于连接的 Metabase 实例的特定指南、重要集合、数据库信息和最佳实践,帮助 LLM 更好地理解和使用 Metabase。

安装步骤

本项目需要 Python 3.8+ 环境。

  1. 克隆仓库到本地:
    git clone https://github.com/VincentGefflaut/Talk-to-Metabase.git
    cd Talk-to-Metabase
  2. 使用 pip 安装项目及其依赖:
    pip install -e .
    这会安装项目所需的 'httpx', 'pydantic', 'python-dotenv' 等依赖库。

服务器配置

Talk-to-Metabase 作为 MCP 服务器,需要由支持 MCP 协议的客户端(如 Claude Desktop)进行配置。配置信息通常在一个 JSON 文件中定义。客户端需要知道如何启动这个 MCP 服务器进程以及必要的连接参数。

以下是配置客户端连接 Talk-to-Metabase 服务器的示例 JSON 结构和参数说明:

{
  "mcpServers": {
    "metabase": { // 服务器的标识名称,客户端会使用
      "command": "path-to-metabase-mcp-server", // 启动 Talk-to-Metabase 服务器的命令路径
      "args": ["--config", "stdio"], // 启动参数,通常指定传输协议
      "env": { // 传递给 Talk-to-Metabase 服务器的环境变量
        "METABASE_URL": "https://your-metabase-instance.company.com", // **必填**: Metabase 实例的 URL
        "METABASE_USERNAME": "[email protected]", // **必填**: 登录 Metabase 的用户名 (通常是邮箱)
        "METABASE_PASSWORD": "your-password", // **必填**: 登录 Metabase 的密码
        "RESPONSE_SIZE_LIMIT": "100000", // 可选: MCP 服务器响应的最大字符数限制 (默认 100000)
        "METABASE_CONTEXT_AUTO_INJECT": "true", // 可选: 是否自动加载上下文指南工具 (默认 true)
        "MCP_TRANSPORT": "stdio", // 可选: MCP 服务器的传输协议 (stdio, sse, streamable-http, 默认 stdio)
        "LOG_LEVEL": "INFO" // 可选: 服务器日志级别 (DEBUG, INFO, WARNING, ERROR, CRITICAL, 默认 INFO)
      }
    }
    // 可以在这里配置其他 MCP 服务器
  }
}
  • 'command': 指向您系统中 'metabase_mcp.py' 脚本的路径,或者在安装后可以通过 'python -m talk_to_metabase.metabase_mcp' 或通过 'pip install -e .' 创建的可执行脚本来启动。
  • 'args': 根据 'MCP_TRANSPORT' 环境变量自动设置,或者可以直接指定。对于 'stdio' 协议,通常不需要额外的命令行参数。
  • 'env': 这是一个对象,其中的键值对会被设置为启动 Talk-to-Metabase 进程的环境变量。'METABASE_URL', 'METABASE_USERNAME', 'METABASE_PASSWORD' 是连接 Metabase 实例所必需的。其他参数可根据需要调整。

完成安装并配置好客户端的 JSON 文件后,启动客户端即可。

基本使用方法

成功安装和配置后,您的 MCP 客户端(如 Claude Desktop)将在启动时自动发现并连接到 Talk-to-Metabase 服务器。

客户端(即您使用的 LLM)将能够通过 MCP 协议调用 Talk-to-Metabase 服务器暴露的工具,与您的 Metabase 实例进行交互。例如:

  1. LLM 可以调用 'list_databases' 工具来获取 Metabase 中的数据库列表。
  2. LLM 可以调用 'search_resources' 工具来查找特定的仪表盘或图表。
  3. LLM 可以调用 'get_table_query_metadata' 来理解某个表格的结构。
  4. LLM 可以调用 'run_dataset_query' 或 'execute_card_query' 来获取数据。
  5. 建议在开始与 Metabase 相关的对话时,让 LLM 调用 'GET_METABASE_GUIDELINES' 工具,以获取关于当前 Metabase 实例的重要上下文信息和使用建议。

用户只需向 LLM 提出与 Metabase 相关的需求(例如“帮我分析一下最近一个月的销售数据在 Metabase 的哪个报表里?”或“列出 Metabase 中可用的数据库”),LLM 会根据其理解和可用的工具自动选择并调用 Talk-to-Metabase 的相应功能来完成任务。

信息

分类

AI与计算