Labsco
MCP SERVER

MCP Iceberg Catalog

by ahodroj

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

Relational SQL Databases
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 <path> run mcp-server-iceberg`; Smithery will install it for Claude Desktop. The Python package is `mcp-server-iceberg`, version 0.1.0.

Setup effort

One command plus a key — npx -y @smithery/cli install @ahodroj/mcp-iceberg-service --client claude, then supply credentials