IcebergMCP
Allows interaction with Apache Iceberg™ lakehouse tables, providing tools for listing namespaces, tables, schemas, properties, and partitions.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@IcebergMCPList all namespaces in my catalog"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
IcebergMCP 🚀
AI-native Lakehouse Integration
IcebergMCP is a Model Context Protocol (MCP) server that lets you interact with your Apache Iceberg™ Lakehouse using natural language in Claude, Cursor, or any other MCP client.
Table of Contents
Related MCP server: iceberg-lakehouse
Installation
Prerequisites
Apache Iceberg™ catalog managed in AWS Glue
AWS profile configured on the machine, with access to the catalog
uvpackage manager - install viabrew install uvor see official installation guide
Claude
Inside Claude, go to Settings > Developer > Edit Config > claude_desktop_config.json
Add the following:
{
"mcpServers": {
"iceberg-mcp": {
"command": "uv", // If uv can't be found, replace with full absolute path to uv
"args": [
"run",
"--with",
"iceberg-mcp",
"iceberg-mcp"
],
"env": {
"ICEBERG_MCP_PROFILE": "<aws-profile-name>"
}
}
}
}Cursor
Inside Cursor, go to Settings -> Cursor Settings -> MCP -> Add new global MCP server
Add the following:
{
"mcpServers": {
"iceberg-mcp": {
"command": "uv", // If uv can't be found, replace with full absolute path to uv
"args": [
"run",
"--with",
"iceberg-mcp",
"iceberg-mcp"
],
"env": {
"ICEBERG_MCP_PROFILE": "<aws-profile-name>"
}
}
}
}Configuration
Environment variables can be used to configure the AWS connection:
ICEBERG_MCP_PROFILE- The AWS profile name to use. This role will be assumed and used to connect to the catalog and the object storage. If not specified, the default role will be used.ICEBERG_MCP_REGION- The AWS region to use. This is used to determine the catalog and object storage location.us-east-1by default.
Available Tools
The server provides the following tools for interacting with your Apache Iceberg™ tables:
get_namespaces: Gets all namespaces in the Apache Iceberg™ catalogget_iceberg_tables: Gets all tables for a given namespaceget_table_schema: Returns the schema for a given tableget_table_properties: Returns table properties for a given table, like total size and record countget_table_partitions: Gets all partitions for a given table
Examples
Once installed and configured, you can start interacting with your Apache Iceberg™ tables through your MCP client. Here are some simple examples of how to interact with your lakehouse:
"List all namespaces in my catalog"
"List all tables for the namespace called
bronze""What are all the string columns in the table
raw_events?"What is the size of the
raw_eventstable?""Generate an SQL query that calculates the sum and the p95 of all number columns in
raw_metricsfor all VIP users fromusers_info""Why did the queries on
raw_eventsrecently become much slower?"
Limitations & Security Considerations
All tools are currently read-only and cannot modify or delete data from your lakehouse
Currently supported catalogs:
AWS Glue
Apache Iceberg™ REST Catalog (coming soon!)
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Available Tools
5 toolsget_iceberg_tablesA
Provides a list of iceberg tables from the Iceberg catalog for a given namespace
| Name | Required | Description | Default |
|---|---|---|---|
| namespace | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states the action ('provides a list') without disclosing behavioral traits such as read-only semantics, authentication requirements, rate limits, or side effects. The description is too minimal to inform safe usage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with 11 words, no filler, and front-loads the core action. Every word contributes meaning, achieving high conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description is adequate but bare. It does not explain what the returned list contains (e.g., table names, identifiers, metadata) or provide any nuance about the namespace scope. More detail would improve completeness without sacrificing conciseness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must add meaning. It mentions 'for a given namespace', providing context for the required parameter. However, it does not specify format requirements (e.g., case sensitivity, fully qualified name) or constraints, leaving ambiguity for a single-param tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('provides a list'), the resource ('iceberg tables'), the source ('Iceberg catalog'), and the condition ('for a given namespace'). It effectively distinguishes this tool from siblings like get_namespaces (lists namespaces) and get_table_schema (schema of a specific table).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context ('for a given namespace') but does not explicitly state when to use this tool over alternatives (e.g., get_table_partitions, get_table_properties). It lacks when-not-to-use guidance or comparisons to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_namespacesB
Provides a list of namespaces from the Iceberg catalog.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits like read-only, pagination, or ordering, but it only states 'provides a list' without any such details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise, but could include more context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter, no-output-schema tool, the description is minimally adequate but lacks details on return format or any behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so baseline score is 4. No additional parameter description needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides a list of namespaces from the Iceberg catalog, which distinguishes it from sibling tools focusing on tables, partitions, properties, and schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, no conditions or exclusions provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_table_partitionsC
Provides the partitions for a given Iceberg table
| Name | Required | Description | Default |
|---|---|---|---|
| namespace | Yes | ||
| table_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only says 'provides partitions'. It does not disclose behavior for non-partitioned tables, error conditions, or side effects. Minimal disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, but it is too brief given the tool's complexity and lack of annotations. Front-loaded but under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description does not explain the return format (e.g., list of partitions, structure). Also missing context on error handling or edge cases. Incomplete for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description does not add any meaning to the parameters (namespace, table_name). No constraints or format hints provided. The description fails to compensate for missing schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool provides partitions for an Iceberg table, using a specific verb and resource. It is distinct from siblings like get_iceberg_tables or get_table_schema, but lacks scope or limitations (e.g., only for partitioned tables).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. The description simply states what it does without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_table_propertiesD
| Name | Required | Description | Default |
|---|---|---|---|
| namespace | Yes | ||
| table_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_table_schemaC
Provides the schema for a given Iceberg table
| Name | Required | Description | Default |
|---|---|---|---|
| namespace | Yes | ||
| table_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It only states the purpose but does not disclose any behavioral aspects like read-only nature, required permissions, or whether the schema is returned in a specific format. No side effects mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no extra words, making it concise. However, it may be too minimal, sacrificing helpfulness for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, annotations, or parameter descriptions, the tool description fails to provide sufficient context for the agent to understand return values or parameter constraints. It is minimally complete for a very simple tool but lacks elaboration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description does not explain the 'namespace' and 'table_name' parameters beyond implying they identify a table. This leaves the agent without necessary context for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool provides the schema for a given Iceberg table. It clearly identifies the specific resource (schema) and action (provides), and distinguishes from sibling tools that list tables or partitions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus siblings like get_iceberg_tables or get_table_partitions. Does not mention prerequisites such as the namespace and table_name must exist or that the table must be an Iceberg table.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
5 tool updates
v0.1.8- First observed
get_iceberg_tables - First observed
get_namespaces - First observed
get_table_partitions - First observed
get_table_properties - First observed
get_table_schema
TDQS
Each tool targets a distinct aspect of the Iceberg catalog (tables list, namespaces, partitions, properties, schema). However, get_table_properties has no description, causing potential confusion with get_table_schema or other tools.
All tool names follow a consistent 'get_noun' pattern with snake_case, making the API predictable and easy to navigate.
Five tools is a reasonable number for a focused read-only catalog client. Each tool serves a clear purpose without redundancy.
The tool set is limited to read operations (list, get) and lacks write operations (create, drop, update) commonly needed for full lifecycle management of Iceberg tables and namespaces.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Query your org's data in natural language — read-only MCP access to SQL, NoSQL, files & warehouses.
Query your warehouse or a CSV with Claude/ChatGPT over MCP, governed by table-level ACL + audit.
Official Microsoft MCP Server to query Microsoft Entra data using natural language
Your Databricks Lakehouse in natural language: run SQL on your SQL warehouses, track long-running qu
Related MCP Servers
- AlicenseCqualityDmaintenanceAn MCP server that enables natural language interaction with Apache Iceberg data lakehouses, allowing users to query table metadata, schemas, and properties through Claude, Cursor, or other MCP clients.541Apache 2.0
- FlicenseNot gradedqualityDmaintenanceEnables natural language querying and management of local Apache Iceberg tables with full CRUD, time travel, schema evolution, and Vortex format support via MCP.-
- AlicenseNot gradedqualityBmaintenanceEnables natural language querying of Apache Iceberg lakehouse by exposing typed tools for namespace discovery, table metadata inspection, snapshot history, time travel SQL generation, and partition pruning explanation.Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to audit data governance, check access control roles, query namespaces, and inspect Iceberg metadata.1MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/fastmcp-me/iceberg-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server