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.
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.
- 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
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.
One command plus a key — npx -y @smithery/cli install @ahodroj/mcp-iceberg-service --client claude, then supply credentials
