LabscoMCP early access ↗
ahodrojMCP SERVER

MCP Iceberg Catalog

Point Claude Desktop at an Apache Iceberg catalog and query the tables with SQL you did not have to write.

by ahodroj ↗Relational SQL DatabasesCommunity

LABSCO SUMMARY

Four SQL operations today, and the author lists what is not there yet.

List, describe, select and insert are enough to explore a lake and add rows, and describe is what lets a model write a correct query rather than guess at columns. The repository is explicit about the gaps: UPDATE, DELETE, CREATE TABLE and ALTER TABLE are unimplemented, complex types such as arrays, maps and structs are not supported yet, and there is no authentication layer of its own — the credentials in the environment are the whole access model.

What it is

A Python server that turns an Iceberg REST catalog into a SQL surface. Queries are parsed with sqlparse and executed through PyIceberg, with PyArrow handling the data and type conversion in between.

What you get

  • LIST TABLES to see what the catalog holds
  • DESCRIBE TABLE for a table's schema and field types
  • SELECT for reading data, with scanning and filtering handled by PyIceberg
  • INSERT for writing rows, converted through PyArrow tables
  • Namespace and catalog metadata handled for you rather than passed on every call

Requirements

Python 3.10 or higher, the uv installer, and access to an Iceberg REST catalog with S3-compatible storage. Configuration is environment variables: ICEBERG_CATALOG_URI for the catalog, ICEBERG_WAREHOUSE for the warehouse name, and S3_ENDPOINT, AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY for storage. Launch as uv --directory <YOUR_PATH_TO>/mcp-iceberg-service run mcp-server-iceberg. The Python package is mcp-server-iceberg, version 0.1.0.

Setup effort

Build from source