Lets Claude browse an Apache Iceberg catalog, discover tables in the data lake and search their metadata.
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add iceberg-service --env AWS_ACCESS_KEY_ID='<AWS_ACCESS_KEY_ID>' --env AWS_SECRET_ACCESS_KEY='<AWS_SECRET_ACCESS_KEY>' --env ICEBERG_CATALOG_URI='<ICEBERG_CATALOG_URI>' --env ICEBERG_WAREHOUSE='<ICEBERG_WAREHOUSE>' --env S3_ENDPOINT='<S3_ENDPOINT>' -- uv --directory PATH_TO_/mcp-iceberg-service run mcp-server-iceberg~/.codex/config.toml
[mcp_servers.iceberg-service]
command = "uv"
args = ["--directory", "PATH_TO_/mcp-iceberg-service", "run", "mcp-server-iceberg"]
env = { AWS_ACCESS_KEY_ID = "<AWS_ACCESS_KEY_ID>", AWS_SECRET_ACCESS_KEY = "<AWS_SECRET_ACCESS_KEY>", ICEBERG_CATALOG_URI = "<ICEBERG_CATALOG_URI>", ICEBERG_WAREHOUSE = "<ICEBERG_WAREHOUSE>", S3_ENDPOINT = "<S3_ENDPOINT>" }
# codex mcp add iceberg-service --env AWS_ACCESS_KEY_ID='<AWS_ACCESS_KEY_ID>' --env AWS_SECRET_ACCESS_KEY='<AWS_SECRET_ACCESS_KEY>' --env ICEBERG_CATALOG_URI='<ICEBERG_CATALOG_URI>' --env ICEBERG_WAREHOUSE='<ICEBERG_WAREHOUSE>' --env S3_ENDPOINT='<S3_ENDPOINT>' -- uv --directory PATH_TO_/mcp-iceberg-service run mcp-server-iceberg~/.cursor/mcp.json
{
"mcpServers": {
"iceberg-service": {
"command": "uv",
"args": [
"--directory",
"PATH_TO_/mcp-iceberg-service",
"run",
"mcp-server-iceberg"
],
"env": {
"AWS_ACCESS_KEY_ID": "<AWS_ACCESS_KEY_ID>",
"AWS_SECRET_ACCESS_KEY": "<AWS_SECRET_ACCESS_KEY>",
"ICEBERG_CATALOG_URI": "<ICEBERG_CATALOG_URI>",
"ICEBERG_WAREHOUSE": "<ICEBERG_WAREHOUSE>",
"S3_ENDPOINT": "<S3_ENDPOINT>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"iceberg-service": {
"type": "stdio",
"command": "uv",
"args": [
"--directory",
"PATH_TO_/mcp-iceberg-service",
"run",
"mcp-server-iceberg"
],
"env": {
"AWS_ACCESS_KEY_ID": "<AWS_ACCESS_KEY_ID>",
"AWS_SECRET_ACCESS_KEY": "<AWS_SECRET_ACCESS_KEY>",
"ICEBERG_CATALOG_URI": "<ICEBERG_CATALOG_URI>",
"ICEBERG_WAREHOUSE": "<ICEBERG_WAREHOUSE>",
"S3_ENDPOINT": "<S3_ENDPOINT>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"iceberg-service": {
"command": "uv",
"args": [
"--directory",
"PATH_TO_/mcp-iceberg-service",
"run",
"mcp-server-iceberg"
],
"env": {
"AWS_ACCESS_KEY_ID": "<AWS_ACCESS_KEY_ID>",
"AWS_SECRET_ACCESS_KEY": "<AWS_SECRET_ACCESS_KEY>",
"ICEBERG_CATALOG_URI": "<ICEBERG_CATALOG_URI>",
"ICEBERG_WAREHOUSE": "<ICEBERG_WAREHOUSE>",
"S3_ENDPOINT": "<S3_ENDPOINT>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"iceberg-service": {
"command": "uv",
"args": [
"--directory",
"PATH_TO_/mcp-iceberg-service",
"run",
"mcp-server-iceberg"
],
"env": {
"AWS_ACCESS_KEY_ID": "<AWS_ACCESS_KEY_ID>",
"AWS_SECRET_ACCESS_KEY": "<AWS_SECRET_ACCESS_KEY>",
"ICEBERG_CATALOG_URI": "<ICEBERG_CATALOG_URI>",
"ICEBERG_WAREHOUSE": "<ICEBERG_WAREHOUSE>",
"S3_ENDPOINT": "<S3_ENDPOINT>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"iceberg-service": {
"command": "uv",
"args": [
"--directory",
"PATH_TO_/mcp-iceberg-service",
"run",
"mcp-server-iceberg"
],
"env": {
"AWS_ACCESS_KEY_ID": "<AWS_ACCESS_KEY_ID>",
"AWS_SECRET_ACCESS_KEY": "<AWS_SECRET_ACCESS_KEY>",
"ICEBERG_CATALOG_URI": "<ICEBERG_CATALOG_URI>",
"ICEBERG_WAREHOUSE": "<ICEBERG_WAREHOUSE>",
"S3_ENDPOINT": "<S3_ENDPOINT>"
}
}
}
}Environment variables
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYICEBERG_CATALOG_URIICEBERG_WAREHOUSES3_ENDPOINT
Replace the placeholders with your own credentials and keep them out of version control.