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
USE CASES
01
Exploring a data lake you did not build
List the tables and read their schemas before writing any query.
02
Answering a question from lake data
Describe what you want and let the SELECT be written and executed for you.
03
Adding rows to a table
Insert through the same interface rather than writing a PyIceberg script.
BEFORE YOU INSTALL
What to know first
Requires
- uv on PATH
- Python 3.10 or later
- AWS_ACCESS_KEY_ID in your environment
- AWS_SECRET_ACCESS_KEY in your environment
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Server setup
TERMINAL
git clone https://github.com/ahodroj/mcp-iceberg-service.gitMCP Clients
Claude Desktop — local build
CLAUDE DESKTOP — LOCAL BUILD · JSON
{
"mcpServers": {
"iceberg": {
"command": "uv",
"args": [
"--directory",
"<YOUR_PATH_TO>/mcp-iceberg-service",
"run",
"mcp-server-iceberg"
],
"env": {
"ICEBERG_CATALOG_URI": "http://localhost:8181",
"ICEBERG_WAREHOUSE": "<YOUR_ICEBERG_WAREHOUSE>",
"S3_ENDPOINT": "OPTIONAL IF USING S3",
"AWS_ACCESS_KEY_ID": "<YOUR_AWS_ACCESS_KEY_ID>",
"AWS_SECRET_ACCESS_KEY": "<YOUR_AWS_SECRET_ACCESS_KEY>"
}
}
}
}<YOUR_PATH_TO>/mcp-iceberg-service is the absolute path of your clone, and set the env values for your own Iceberg REST catalog and S3-compatible storage (S3_ENDPOINT only if your storage needs one).