- Home
- MCP servers
- Iceberg
Iceberg
- rust
31
GitHub Stars
rust
Language
6 months ago
First Indexed
2 months ago
Catalog Refreshed
Documentation & install
Readme and setup notes from the catalogue, plus a client-ready config you can copy for your MCP host.
Iceberg MCP provides an asynchronous, log-friendly MCP server for Apache Iceberg catalogs. It lets you access catalog data through multiple MCP clients, enabling you to list namespaces, enumerate tables, and fetch table schemas and properties with consistent, observable behavior.
How to use
You run Iceberg MCP as a server and connect to it from your MCP client. You can use the Rest Catalog interface to query namespac es and tables, or switch to Glue-compatible catalogs if you have an AWS-based setup. The server exposes the following core tools you can invoke through your client: getting all namespaces, listing all tables in a namespace, retrieving a table schema, and fetching table properties. When you perform these actions, you receive structured responses that reflect the Iceberg catalog state, with asynchronous processing and logging to help you troubleshoot.
Typical usage pattern:
- Start the Iceberg MCP server with your chosen catalog kind (rest or glue).
- Point your MCP client at the server endpoint (for Rest catalogs, use the REST URI; for Glue catalogs, configure AWS credentials and the Glue warehouse).
- Use the client’s built-in commands to list namespaces, list tables within a namespace, and request a table’s schema or properties.
- Review logs if you encounter timeouts or unexpected results; logs are designed to aid troubleshooting and performance tuning.
How to install
Prerequisites you need before building or running Iceberg MCP:
- Rust toolchain installed on your system (rustup, cargo).
- Optional: a pre-built release binary if you prefer not to compile from source.
# Option 1: Download the Release Binary
# Download the latest pre-built binary from the releases page and run it with your chosen configuration.
# Option 2: Build from Source
# Ensure Rust is installed on your system, then build from source:
cargo build --release
# The compiled binary will be located at:
./target/release/iceberg-mcp
Additional configuration notes
You can configure Iceberg MCP for different catalogs by supplying environment variables and selecting the catalog kind. The following configuration examples are provided for integrating with Claude Desktop. Adapt the paths and endpoints to your environment.
{
"mcpServers": {
"iceberg-mcp": {
"command": "PATH-TO-BINARY/iceberg-mcp",
"env": {
"CATALOG_KIND": "rest",
"REST_URI": "http://localhost:8080",
"LOG_LEVEL": "info"
}
}
}
}
{
"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",
"LOG_LEVEL": "info"
}
}
}
}
{
"mcpServers": {
"iceberg-mcp": {
"command": "PATH-TO-BINARY/iceberg-mcp",
"env": {
"CATALOG_KIND": "glue",
"GLUE_WAREHOUSE": "s3a://{bucket_name}",
"GLUE_ENDPOINT": "http://localhost:9000",
"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
If you need to troubleshoot, view the server logs to track startup, catalog discovery, and any errors during operation.
Available tools
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