Iceberg REST Catalog MCP 服务器
项目简介
Iceberg REST Catalog MCP 服务器是一个实现了 Model Context Protocol (MCP) 的后端服务,专门用于为大型语言模型 (LLM) 客户端提供访问 Apache Iceberg REST Catalog 数据目录的能力。通过标准化的 MCP 协议,LLM 可以安全、便捷地获取 Iceberg 数据目录的元数据信息,例如命名空间、表、表结构和表属性等,从而增强 LLM 在数据分析和处理方面的能力。
主要功能点
- 支持 Iceberg REST Catalog: 目前主要支持通过 REST 接口访问 Iceberg 数据目录。
- 提供元数据查询工具: 内置了一系列工具,允许 LLM 客户端查询 Iceberg 数据目录的各种元数据信息:
- 'namespaces': 获取 Iceberg catalog 中的所有命名空间。
- 'tables': 获取指定命名空间下的所有表。
- 'table_schema': 获取指定表的 Schema 信息。
- 'table_properties': 获取指定表的属性信息,例如总大小和记录数。
- 'table_partitions': 获取指定表的所有分区信息。
- 标准 MCP 协议: 采用 JSON-RPC over Stdio 通信,符合 MCP 协议规范,易于与各种 MCP 客户端集成。
- 易于部署和配置: 提供预编译的二进制版本和源码构建方式,配置简单,可以通过环境变量指定 REST Catalog 的 URI。
安装步骤
-
下载预编译二进制文件 (推荐): 访问 https://github.com/morristai/iceberg-mcp/releases 下载适用于您操作系统的 'iceberg-mcp-rest' 二进制文件。
-
从源码构建:
- 确保您已安装 Rust 和 Cargo 构建工具。
- 克隆仓库到本地: 'git clone https://github.com/morristai/iceberg-mcp.git'
- 进入项目目录: 'cd iceberg-mcp'
- 使用 Cargo 构建 Release 版本: 'cargo build --release --bin iceberg-mcp-rest'
- 构建成功后,可执行文件位于 'target/release/iceberg-mcp-rest'。
服务器配置
MCP 服务器需要配置在 MCP 客户端中,例如 Claude Desktop。以下是在 'claude_desktop_config.json' 中配置 'iceberg-mcp-rest' 服务器的示例:
{ "mcpServers": { "iceberg-mcp-rest": { "command": "PATH-TO-BINARY/iceberg-mcp-rest", "env": { "REST_URI": "http://localhost:8080" } } } }
配置参数说明:
- '"iceberg-mcp-rest"': 服务器名称,您可以自定义,用于在客户端中标识该服务器。
- '"command"': 请替换 'PATH-TO-BINARY/iceberg-mcp-rest' 为您实际的 'iceberg-mcp-rest' 可执行文件的路径。 如果您下载的是预编译版本,请指定下载文件存放的路径。如果您是从源码构建的,请指定 'target/release/iceberg-mcp-rest' 的路径。
- '"env"': 环境变量配置。
- '"REST_URI"': 请替换 'http://localhost:8080' 为您的 Apache Iceberg REST Catalog 服务的 URI。 例如,如果您的 REST Catalog 服务运行在 'http://your-iceberg-rest-catalog:8080',则应配置为 '"REST_URI": "http://your-iceberg-rest-catalog:8080"'。
重要提示:
- 确保您的 Apache Iceberg REST Catalog 服务已启动并可访问。
- MCP 客户端 (如 Claude Desktop) 需要能够访问 'iceberg-mcp-rest' 可执行文件。
基本使用方法
-
启动 MCP 服务器: 当 MCP 客户端 (如 Claude Desktop) 启动并加载配置后,'iceberg-mcp-rest' 服务器将自动启动。您可以在终端中查看服务器的日志输出,确认服务器是否成功启动并连接到 REST Catalog。
-
在 LLM 中使用工具: 在支持 MCP 协议的 LLM 应用中,您可以指示 LLM 使用 'iceberg-mcp-rest' 服务器提供的工具来查询 Iceberg 数据目录信息。例如,您可以向 LLM 提问:
- "列出 Iceberg 中可用的命名空间" (LLM 可能会调用 'namespaces' 工具)
- "展示命名空间 'my_namespace' 下的所有表" (LLM 可能会调用 'tables' 工具并传入 'namespace' 参数)
- "获取表 'my_namespace.my_table' 的结构信息" (LLM 可能会调用 'table_schema' 工具并传入 'namespace' 和 'table_name' 参数)
- "查询表 'my_namespace.my_table' 的属性" (LLM 可能会调用 'table_properties' 工具)
LLM 将根据您的指令,自动调用相应的工具,并将结果返回给您。 您可以通过查看 MCP 客户端的日志或服务器日志来跟踪工具的调用过程和结果。