Skip to main content
Glama
fastmcp-me

IcebergMCP

by fastmcp-me

Add to Cursor Add to VS Code Add to Claude Add to ChatGPT Add to Codex Add to Gemini

IcebergMCP 🚀

AI-native Lakehouse Integration

PyPI - Version License

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

  • uv package manager - install via brew install uv or see official installation guide

Claude

  1. Inside Claude, go to Settings > Developer > Edit Config > claude_desktop_config.json

  2. 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

  1. Inside Cursor, go to Settings -> Cursor Settings -> MCP -> Add new global MCP server

  2. 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-1 by 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™ catalog

  • get_iceberg_tables: Gets all tables for a given namespace

  • get_table_schema: Returns the schema for a given table

  • get_table_properties: Returns table properties for a given table, like total size and record count

  • get_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:

  1. "List all namespaces in my catalog"

  2. "List all tables for the namespace called bronze"

  3. "What are all the string columns in the table raw_events?

  4. "What is the size of the raw_events table?"

  5. "Generate an SQL query that calculates the sum and the p95 of all number columns in raw_metrics for all VIP users from users_info"

  6. "Why did the queries on raw_events recently 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 tools
get_iceberg_tablesA

Provides a list of iceberg tables from the Iceberg catalog for a given namespace

ParametersJSON Schema
NameRequiredDescriptionDefault
namespaceYes

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
namespaceYes
table_nameYes

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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
ParametersJSON Schema
NameRequiredDescriptionDefault
namespaceYes
table_nameYes

TDQS

D1/5.0
Behavior1/5

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.

Conciseness1/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose1/5

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.

Usage Guidelines1/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
namespaceYes
table_nameYes

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

  1. 5 tool updatesv0.1.8
    • First observedget_iceberg_tables
    • First observedget_namespaces
    • First observedget_table_partitions
    • First observedget_table_properties
    • First observedget_table_schema

TDQS

C2.6/5.0
Disambiguation4/5

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.

Naming Consistency5/5

All tool names follow a consistent 'get_noun' pattern with snake_case, making the API predictable and easy to navigate.

Tool Count5/5

Five tools is a reasonable number for a focused read-only catalog client. Each tool serves a clear purpose without redundancy.

Completeness2/5

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

ActivityInactive
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    An 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.
    5
    41
    Apache 2.0
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables natural language querying and management of local Apache Iceberg tables with full CRUD, time travel, schema evolution, and Vortex format support via MCP.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables 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

Latest Blog Posts

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