返回市场
MCP元数据库服务器

MCP元数据库服务器

作者:easecloudio22 星标更新:2025-09-01

项目介绍

Metabase MCP 服务器

MIT 许可证 GitHub

这是一个全面的模型上下文协议(MCP)服务器,用于与 Metabase 集成,专为企业和开发者设计,旨在通过实时分析和商业智能来增强他们的AI助手。

EaseCloud 技术开发和维护——您值得信赖的云原生、AI驱动和数据基础设施解决方案合作伙伴。

这是一个基于TypeScript的MCP服务器,实现了与Metabase API的完全集成。它允许AI助手与Metabase进行交互,提供对以下内容的全面访问:

  • 完整的CRUD操作:管理所有Metabase实体的整个生命周期
  • 高级仪表板管理:卡片定位、参数、订阅和警报
  • 用户及权限管理:控制用户的整个生命周期和权限系统
  • 数据库管理:连接管理、模式同步和元数据探索
  • 分析与监控:使用统计、活动跟踪和系统健康状况监控
  • 高级查询功能:导出、书签、公共分享和复杂查询执行
  • 搜索与发现:全局搜索、热门项目和内容推荐
  • 设置与配置:系统设置和实例配置管理

超过70种工具覆盖了企业使用的所有主要Metabase功能。

支持的Metabase版本

此MCP服务器兼容:

  • Metabase v0.46.x及以上版本(建议使用v0.48.x或更高版本)
  • Metabase Cloud(完全支持)
  • 自托管的Metabase实例(Docker、JAR或云部署)

注意:某些高级功能可能需要更新的Metabase版本。为了最佳兼容性,我们建议使用Metabase v0.48.0或更高版本。

我们为什么构建这个

在EaseCloud,我们帮助公司现代化其数据平台并解锁AI的力量。 Metabase是一款领先的开源BI工具——但将其与像Claude、Cursor和Windsurf这样的AI助手连接起来需要复杂的API工作。

这个MCP服务器消除了这一障碍,提供了超过70种现成的工具,涵盖了从仪表板到查询、权限到监控的一切。

我们的目标是使企业分析能够在自然语言中访问,同时展示我们在集成、自动化和云解决方案方面的专业知识。

功能

资源

  • 通过metabase://URI访问Metabase资源
  • 仪表板metabase://dashboard/{id} - 访问仪表板详情
  • 卡片/问题metabase://card/{id} - 访问问题/卡片详情
  • 数据库metabase://database/{id} - 访问数据库信息
  • 集合metabase://collection/{id} - 访问集合详情
  • 用户metabase://user/{id} - 访问用户信息
  • metabase://table/{id} - 访问表元数据
  • 字段metabase://field/{id} - 访问字段信息
  • 使用JSON内容类型访问结构化数据

核心数据管理工具

仪表板管理

  • list_dashboards - 列出Metabase中的所有仪表板
  • create_dashboard - 创建新的仪表板
  • update_dashboard - 更新现有的仪表板
  • delete_dashboard - 删除/归档仪表板
  • get_dashboard_cards - 获取仪表板中的所有卡片

卡片/问题管理

  • list_cards - 列出Metabase中的所有问题/卡片
  • create_card - 创建新的问题/卡片
  • update_card- 更新现有问题/卡片
  • delete_card - 删除/归档问题/卡片
  • execute_card - 执行卡片并获取结果

数据库操作

  • list_databases - 列出Metabase中的所有数据库
  • execute_query - 对数据库执行SQL查询

集合管理

  • list_collections - 列出所有集合
  • create_collection - 创建新的集合
  • update_collection - 更新现有的集合
  • delete_collection - 删除集合
  • get_collection_items - 获取集合中的所有项目
  • move_to_collection - 在集合之间移动项目

用户及权限管理

  • list_users - 列出所有用户
  • create_user - 创建新用户
  • update_user - 更新用户详情
  • delete_user - 停用用户
  • list_permissions - 列出权限组和权限
  • list_permission_groups - 列出所有权限组
  • create_permission_group - 创建新的权限组
  • update_permission_group - 更新权限组
  • delete_permission_group - 删除权限组
  • add_user_to_group - 将用户添加到权限组
  • remove_user_from_group - 从权限组移除用户

高级查询功能

  • export_card_results - 将卡片结果导出为CSV/JSON/Excel
  • export_dashboard_data - 将仪表板数据导出为各种格式
  • bookmark_card - 书签卡片
  • unbookmark_card - 移除卡片书签
  • bookmark_dashboard - 书签仪表板
  • unbookmark_dashboard - 移除仪表板书签
  • list_bookmarked_items - 列出所有已书签的项目
  • create_public_link - 创建公共分享链接
  • disable_public_link - 禁用公共分享
  • get_public_link - 获取公共链接信息

数据库模式操作

  • get_database_schema - 获取数据库模式信息
  • get_database_tables - 获取数据库中的所有表
  • get_table_metadata - 获取表元数据
  • get_table_fields - 获取表中的所有字段
  • get_field_values - 获取字段值
  • get_field_summary - 获取字段汇总统计
  • analyze_field_values - 分析字段值

搜索与发现

  • search_content - 搜索所有Metabase内容
  • get_recent_items - 获取最近查看的项目
  • get_popular_items - 获取最受欢迎的卡片和仪表板

高级仪表板功能

  • add_card_to_dashboard - 添加卡片到仪表板并定位
  • remove_card_from_dashboard - 从仪表板移除卡片
  • update_dashboard_card - 更新卡片位置、大小和设置
  • get_dashboard_parameters - 获取仪表板参数
  • update_dashboard_parameters - 更新仪表板参数
  • create_dashboard_subscription - 创建仪表板订阅/警报
  • list_dashboard_subscriptions - 列出所有仪表板订阅
  • update_dashboard_subscription - 更新订阅设置
  • delete_dashboard_subscription - 删除仪表板订阅

分析与监控

  • get_user_activity - 获取用户活动和使用统计
  • get_content_usage - 获取卡片和仪表板的使用统计
  • get_system_usage_stats - 获取系统范围内的使用统计
  • get_system_health - 获取系统健康状态

数据库连接管理

  • create_database_connection - 创建新的数据库连接
  • test_database_connection - 测试数据库连接
  • sync_database_schema - 同步数据库模式元数据
  • get_database_sync_status - 获取数据库模式同步状态

设置与配置

  • get_metabase_settings - 获取Metabase实例设置
  • update_metabase_settings - 更新实例设置

配置

在运行服务器之前,您需要设置身份验证的环境变量。服务器支持两种方法:

  1. API密钥(首选):

    • METABASE_URL:您的Metabase实例的URL(例如,https://your-metabase-instance.com)。
    • METABASE_API_KEY:您的Metabase API密钥。
  2. 用户名/密码(备用):

    • METABASE_URL:您的Metabase实例的URL。
    • METABASE_USERNAME:您的Metabase用户名。
    • METABASE_PASSWORD:您的Metabase密码。

服务器会首先检查METABASE_API_KEY。如果设置了,则使用API密钥认证。如果未设置METABASE_API_KEY,则服务器会回退到使用METABASE_USERNAMEMETABASE_PASSWORD。您必须至少提供一种方法的凭据。

示例设置:

使用API密钥:

# 必需的环境变量
export METABASE_URL=https://your-metabase-instance.com
export METABASE_API_KEY=your_metabase_api_key

或者,使用用户名/密码:

# 必需的环境变量
export METABASE_URL=https://your-metabase-instance.com
export METABASE_USERNAME=your_username
export METABASE_PASSWORD=your_password

您可以将这些环境变量设置在您的shell配置文件中,或使用dotenv之类的包使用.env文件。

开发

安装依赖项:

npm install

构建服务器:

npm run build

开发时自动重建:

npm run watch

安装与使用

方法1:使用npx(推荐)

最简单的方法是使用npx运行服务器:

# 设置环境变量
export METABASE_URL=https://your-metabase-instance.com
export METABASE_API_KEY=your_metabase_api_key

# 运行服务器
npx @easecloudio/mcp-metabase-server

方法2:直接使用Node.js

如果您本地或全局安装了该包:

# 全局安装
npm install -g @easecloudio/mcp-metabase-server

# 设置环境变量
export METABASE_URL=https://your-metabase-instance.com
export METABASE_API_KEY=your_metabase_api_key

# 运行服务器
mcp-metabase-server

或者从构建的项目运行:

# 克隆并构建项目
git clone https://github.com/easecloudio/mcp-metabase-server.git
cd mcp-metabase-server
npm install
npm run build

# 设置环境变量
export METABASE_URL=https://your-metabase-instance.com
export METABASE_API_KEY=your_metabase_api_key

# 运行服务器
node dist/index.js

方法3:使用Docker

您可以使用Docker运行服务器:

# 构建Docker镜像
docker build -t mcp-metabase-server .

# 运行容器
docker run -it --rm \
  -e METABASE_URL=https://your-metabase-instance.com \
  -e METABASE_API_KEY=your_metabase_api_key \
  mcp-metabase-server

或者使用docker-compose:

# docker-compose.yml
version: "3.8"
services:
  mcp-metabase-server:
    build: .
    environment:
      - METABASE_URL=https://your-metabase-instance.com
      - METABASE_API_KEY=your_metabase_api_key
    stdin_open: true
    tty: true

然后运行:

docker-compose up

与Claude Desktop集成

要与Claude Desktop一起使用,请添加服务器配置:

在MacOS上:~/Library/Application Support/Claude/claude_desktop_config.json 在Windows上:%APPDATA%/Claude/claude_desktop_config.json

使用npx:

{
  "mcpServers": {
    "metabase-server": {
      "command": "npx",
      "args": ["@easecloudio/mcp-metabase-server"],
      "env": {
        "METABASE_URL": "https://your-metabase-instance.com",
        "METABASE_API_KEY": "your_metabase_api_key"
      }
    }
  }
}

直接使用Node.js:

{
  "mcpServers": {
    "metabase-server": {
      "command": "node",
      "args": ["/path/to/metabase-server/dist/index.js"],
      "env": {
        "METABASE_URL": "https://your-metabase-instance.com",
       
"METABASE_API_KEY": "your_metabase_api_key"
      }
    }
  }
}

备选认证(用户名/密码):

{
  "mcpServers": {
    "metabase-server": {
      "command": "npx",
      "args": ["@easecloudio/mcp-metabase-server"],
      "env": {
        "METABASE_URL": "https://your-metabase-instance.com",
        "METABASE_USERNAME": "your_username",
        "METABASE_PASSWORD": "your_password"
      }
    }
  }
}

环境变量

服务器支持以下环境变量:

  • METABASE_URL(必需):您的Metabase实例的URL
  • METABASE_API_KEY(首选):您的Metabase API密钥
  • METABASE_USERNAME:您的Metabase用户名(如果未提供API密钥则作为备用)
  • METABASE_PASSWORD:您的Metabase密码(如果未提供API密钥则作为备用)

调试

由于MCP服务器通过stdio通信,调试可能会很困难。我们建议使用MCP Inspector,它作为一个包脚本可用:

npm run inspector

Inspector将提供一个URL以在浏览器中访问调试工具。

测试

按照“配置”部分所述设置环境变量后,您可以手动测试服务器的身份验证。MCP Inspector(npm run inspector)是一个有用的工具,用于向服务器发送请求。

1. 使用API密钥认证测试

  1. 设置METABASE_URLMETABASE_API_KEY环境变量,使用您的Metabase实例URL和有效的API密钥。
  2. 确保METABASE_USERNAMEMETABASE_PASSWORD未设置或留空,因为API密钥应优先。
  3. 启动服务器:npm run build && node build/index.js(或使用您选择的方法运行服务器,如通过Claude Desktop配置)。
  4. 检查服务器日志。您应该看到一条消息,表明它正在使用API密钥进行认证(例如,“使用Metabase API密钥进行认证。”)。
  5. 使用MCP客户端或MCP Inspector,尝试调用一个工具,例如tools/call,传递{"name": "list_dashboards"}
  6. 验证工具调用成功,并收到预期的数据。

2. 使用用户名/密码认证测试(备用)

  1. 确保METABASE_API_KEY环境变量未设置。
  2. 设置METABASE_URLMETABASE_USERNAMEMETABASE_PASSWORD,使用您的Metabase实例的有效凭据。
  3. 启动服务器。
  4. 检查服务器日志。您应该看到一条消息,表明它正在使用用户名/密码进行认证(例如,“使用Metabase用户名/密码进行认证。”,随后是“使用用户名/密码与Metabase进行认证...”)。
  5. 使用MCP客户端或MCP Inspector,尝试调用list_dashboards工具。
  6. 验证工具调用成功。

3. 测试认证失败

  • 无效API密钥:
    1. 设置METABASE_URL和一个无效的METABASE_API_KEY。确保METABASE_USERNAMEMETABASE_PASSWORD变量未设置。
    2. 启动服务器。
    3. 尝试调用一个工具(例如list_dashboards)。工具调用应失败,服务器日志可能显示来自Metabase的认证错误(例如,“Metabase API错误:无效X-API-Key”)。
  • 无效用户名/密码:
    1. 确保METABASE_API_KEY未设置。设置METABASE_URL和无效的METABASE_USERNAME/METABASE_PASSWORD
    2. 启动服务器。
    3. 尝试调用一个工具。由于会话认证失败,工具调用应失败。服务器日志可能显示“认证失败”或“无法与Metabase进行认证”。
  • 缺少凭据:
    1. 清除METABASE_API_KEYMETABASE_USERNAMEMETABASE_PASSWORD。仅设置METABASE_URL
    2. 尝试启动服务器。
    3. 服务器应无法启动,并记录一条错误消息,指出需要身份验证凭据(API密钥或用户名/密码)(例如,“需要(METABASE_URL和METABASE_API_KEY)或(METABASE_URL、METABASE_USERNAME和METABASE_PASSWORD)环境变量”)。

关于EaseCloud Technologies

EaseCloud是一家专注于云咨询和解决方案的公司,专门从事:

  • 云原生应用程序开发
  • AI与自动化集成
  • DevOps和基础设施管理
  • 数据分析和BI平台咨询

我们构建这个项目是为了贡献到开放源码的MCP生态系统,同时展示我们在数据驱动决策系统方面的深厚专业知识。

👉 如果您的团队正在大规模采用Metabase或希望将AI与BI堆栈集成,请联系我们——我们为企业提供咨询服务、定制化和托管支持


💡 与EaseCloud合作 需要帮助部署、定制或扩展生产中的Metabase? 我们为BI、AI和云基础设施提供端到端支持。

📧 联系我们:support@easecloud.io 🌐 了解更多:https://easecloud.io


许可证

该项目根据MIT许可证发布——请参阅