Content
# Iceberg MCP
An [MCP](https://modelcontextprotocol.io/introduction) server for [Apache Iceberg](https://iceberg.apache.org/) catalogs with async and logging.
[Iceberg MCP DEMO](https://github.com/user-attachments/assets/13c22d3c-c0a1-4767-acfa-1ffdd1941afd)
### Supported Catalogs
| Catalog Type | Supported |
|----------------|-----------|
| Rest Catalogs | ✅ |
| AWS Glue | ✅ |
| Hive Metastore | ❌ |
| S3 Table | ❌ |
### Supported Tools
| Tools | Description |
|--------------------|------------------------------------------------|
| `namespaces` | Get all namespaces in the Iceberg catalog |
| `tables` | Get all tables for a given namespace |
| `table_schema` | Return the schema for a given table |
| `table_properties` | Return table properties for a given table |
## Installation
### Option 1: Download the Release Binary
Download the latest pre-built binary from the [Releases page](https://github.com/morristai/iceberg-mcp/releases).
### Option 2: Build from Source
To build the project manually, ensure you have [Rust](https://www.rust-lang.org/tools/install) installed, then run:
```shell
cargo build --release
```
The compiled binary will be located at: `./target/release/iceberg-mcp`
## Client Configuration
### Claude Desktop
To integrate Iceberg MCP with Claude Desktop:
1. Open `Settings` > `Developer` > `Edit Config`.
2. Update `claude_desktop_config.json` with the appropriate configuration:
- Rest Catalogs
```json
{
"mcpServers": {
"iceberg-mcp": {
"command": "PATH-TO-BINARY/iceberg-mcp",
"env": {
"CATALOG_KIND": "rest",
"REST_URI": "http://localhost:8080",
"LOG_LEVEL": "info"
}
}
}
}
```
- AWS Glue Catalogs
```json
// use PROFILE_NAME
{
"mcpServers": {
"iceberg-mcp": {
"command": "PATH-TO-BINARY/iceberg-mcp",
"env": {
"CATALOG_KIND": "glue",
"AWS_CONFIG_FILE": "/Users/{your_username}/.aws/config",
"AWS_SHARED_CREDENTIALS_FILE": "/Users/{your_username}/.aws/credentials",
"PROFILE_NAME": "default",
"GLUE_WAREHOUSE": "s3://{bucket_name}",
"GLUE_ENDPOINT": "http://localhost:9000", // Glue service endpoint, optional
"LOG_LEVEL": "info"
}
}
}
}
// or use ACCESS_KEY and SECRET_KEY
{
"mcpServers": {
"iceberg-mcp": {
"command": "PATH-TO-BINARY/iceberg-mcp",
"env": {
"CATALOG_KIND": "glue",
"GLUE_WAREHOUSE": "s3a://{bucket_name}",
"GLUE_ENDPOINT": "http://localhost:9000", // Optional
"AWS_ACCESS_KEY_ID": "my_access_id",
"AWS_SECRET_ACCESS_KEY": "my_secret_key",
"AWS_REGION_NAME": "us-east-1",
"S3_ENDPOINT": "http://localhost:9000",
"S3_ACCESS_KEY_ID": "admin",
"S3_SECRET_ACCESS_KEY": "password",
"S3_REGION": "us-east-1",
"LOG_LEVEL": "info"
}
}
}
}
```
## Debugging
### Claude Desktop
View logs for troubleshooting with:
```shell
tail -n 20 -F ~/Library/Logs/Claude/mcp-server-iceberg-mcp.log
```
Connection Info
You Might Also Like
markitdown
MarkItDown-MCP is a lightweight server for converting URIs to Markdown.
markitdown
Python tool for converting files and office documents to Markdown.
firecrawl
Firecrawl MCP Server enables web scraping, crawling, and content extraction.
Filesystem
Node.js MCP Server for filesystem operations with dynamic access control.
TrendRadar
TrendRadar: Your hotspot assistant for real news in just 30 seconds.
mempalace
The highest-scoring AI memory system ever benchmarked. And it's free.