使用说明

项目简介

MCP Iceberg Catalog Service 是一个实现了 Model Context Protocol (MCP) 的服务器,它允许大型语言模型 (LLM) 客户端(如 Claude Desktop)通过标准化的 MCP 协议,以 SQL 接口的形式访问和操作 Apache Iceberg 数据湖。该服务器充当 LLM 与 Iceberg 数据湖之间的桥梁,使得 LLM 可以利用 Iceberg 中的数据进行上下文学习和知识检索。

主要功能点

  • Iceberg 数据访问: 通过 SQL 语句查询和管理 Apache Iceberg 表格数据。
  • SQL 接口: 支持常见的 SQL 操作,包括:
    • 'LIST TABLES': 列出 Iceberg catalog 中的所有表。
    • 'DESCRIBE TABLE': 查看表的 Schema、分区信息、排序规则和属性。
    • 'SELECT': 从 Iceberg 表中检索数据。
    • 'INSERT': 向 Iceberg 表中插入新数据。
    • 'CREATE TABLE': 创建新的 Iceberg 表。
  • MCP 协议: 遵循 MCP 协议标准,与 LLM 客户端通过 JSON-RPC over Stdio 进行通信。
  • 工具注册: 注册 'execute_query' 工具,允许 LLM 客户端调用执行 SQL 查询。

安装步骤

本服务主要设计用于与 Claude Desktop 等 MCP 客户端配合使用。以下是在 Claude Desktop 中安装和配置 MCP Iceberg Catalog Service 的步骤:

  1. 环境准备:

    • 确保已安装 Python 3.10 或更高版本。
    • 推荐使用 UV 包管理器,或者 pip。
    • 确保可以访问 Iceberg REST catalog 和兼容 S3 的存储服务。
  2. 获取代码:

    • 从 GitHub 克隆仓库代码到本地:
      git clone https://github.com/ahodroj/mcp-iceberg-service.git
      cd mcp-iceberg-service
    • 或者下载仓库的 ZIP 文件并解压。
  3. 配置 Claude Desktop:

    • 打开 Claude Desktop 的配置文件 'claude_desktop_config.json'。
    • 在 'mcpServers' 字段下添加 'iceberg' 服务器的配置信息。

服务器配置

在 'claude_desktop_config.json' 中,'mcpServers' 字段用于配置 MCP 服务器。您需要添加如下 'iceberg' 服务器的配置:

{
  "mcpServers": {
    "iceberg": {
      "command": "uv",
      "args": [
        "--directory",
        "PATH_TO_/mcp-iceberg-service", //  **[请替换为实际的 mcp-iceberg-service 仓库路径]**
        "run",
        "mcp-server-iceberg"
      ],
      "env": {
        "ICEBERG_CATALOG_URI" : "http://localhost:8181", // **[请替换为您的 Iceberg Catalog URI]** 例如: "http://localhost:8181"
        "ICEBERG_WAREHOUSE" : "YOUR ICEBERG WAREHOUSE NAME", // **[请替换为您的 Iceberg Warehouse 名称]** 例如: "my_warehouse"
        "S3_ENDPOINT" : "OPTIONAL IF USING S3", // **[可选,如果使用 S3,请配置 S3 Endpoint]** 例如: "s3.amazonaws.com"
        "AWS_ACCESS_KEY_ID" : "YOUR S3 ACCESS KEY", // **[您的 S3 Access Key ID]**
        "AWS_SECRET_ACCESS_KEY" : "YOUR S3 Secret Key" // **[您的 S3 Secret Access Key]**
      }
    }
  }
}

配置参数说明:

  • '"server name"': '"iceberg"' - 服务器名称,在 Claude Desktop 中用于标识和调用此服务器。
  • '"command"': '"uv"' - 启动服务器的命令,这里使用 'uv' (需提前安装 uv 包管理器,或者替换为 'python' 并调整 'args' 中的启动脚本路径)。
  • '"args"': 启动命令的参数列表:
    • '"PATH_TO_/mcp-iceberg-service"': 请务必替换为 您本地 'mcp-iceberg-service' 仓库的绝对路径
    • '"run"': 使用 uv 运行 Python 脚本的子命令。
    • '"mcp-server-iceberg"': 要运行的 Python 脚本入口点(在 'pyproject.toml' 中定义)。
  • '"env"': 服务器运行所需的环境变量:
    • '"ICEBERG_CATALOG_URI"': 必须配置,Iceberg Catalog 的 URI 地址,例如 'http://localhost:8181'。
    • '"ICEBERG_WAREHOUSE"': 必须配置,Iceberg Warehouse 的名称。
    • '"S3_ENDPOINT"': 可选,如果 Iceberg Catalog 使用 S3 存储,则需要配置 S3 Endpoint。
    • '"AWS_ACCESS_KEY_ID"': 必须配置 (如果 Iceberg Catalog 使用 S3 存储),S3 Access Key ID。
    • '"AWS_SECRET_ACCESS_KEY"': 必须配置 (如果 Iceberg Catalog 使用 S3 存储),S3 Secret Access Key。

注意: 请根据您的 Iceberg 环境和 S3 配置,准确填写 'claude_desktop_config.json' 中的路径和环境变量。 特别是 'PATH_TO_/mcp-iceberg-service' 需要替换为实际的本地仓库路径。 敏感信息如 'AWS_ACCESS_KEY_ID' 和 'AWS_SECRET_ACCESS_KEY' 请妥善保管。

基本使用方法

  1. 启动 Claude Desktop: 确保 Claude Desktop 客户端已启动并正确加载了配置文件。
  2. 在 Claude Desktop 中调用: 在 Claude Desktop 中,您可以使用 '@tool_code' 或其他方式调用 'iceberg' 服务器的 'execute_query' 工具,并提供 SQL 查询语句作为参数。

示例 (在 Claude Desktop 中可能的使用方式):

@tool_code iceberg.execute_query
{
  "query": "LIST TABLES"
}

或者查询特定表的数据:

@tool_code iceberg.execute_query
{
  "query": "SELECT * FROM my_table LIMIT 10"
}

Claude Desktop 将会将 SQL 查询发送到 MCP Iceberg Catalog Service,服务器执行查询后会将结果返回给 Claude Desktop。

请注意: 具体的工具调用方式和界面操作请参考 Claude Desktop 的文档。

信息

分类

数据库与文件