Skip to main content

MCP Server for Apache Iceberg

Project description

iceberg-mcp-server

downloads codacy coverage integration delivery

iceberg-mcp-server is an MCP Server for Apache Iceberg, enabling users to read, query, and manipulate data within Iceberg catalogs. It supports reading and data manipulation using catalog types supported by PyIceberg, and supports SQL queries using catalog types compatible with DuckDB.

Quickstart

Installation

With uv, installation is easy, the only command you need to run is:

uvx iceberg-mcp-server

This will automatically install and run the latest version of iceberg-mcp-server published to PyPI. Alternative Python package runners like pipx are also supported. Once installed, iceberg-mcp-server can be used with any agent that supports STDIO-based MCP servers. For example, with Github Copilot mcp.json:

"servers": {
  "iceberg-mcp-server": {
    "command": "uvx",
    "args": [
      "iceberg-mcp-server"
    ],
  }
}

Configuration

.pyiceberg.yaml File

iceberg-mcp-server supports the PyIceberg configuration methods. .pyiceberg.yaml is the recommended persistent method of configuration. For example, to connect to a standard REST-based Iceberg catalog with ~/.pyiceberg.yaml:

catalog:
  default: # iceberg-mcp-server loads the catalog named "default" if not in env vars
    uri: <catalog-uri>
    token: <catalog-token>
    warehouse: <warehouse>

Environment Variables

One of the other PyIceberg configuration methods is setting specific environment variables, which iceberg-mcp-server supports as well. There are also environment variables specific to iceberg-mcp-server that can be set:

ICEBERG_CATALOG="default"
SENTRY_DSN="https://<sentry-key>@o<organization-id>.ingest.us.sentry.io/<project-id>"
  • ICEBERG_CATALOG allows you to set which catalog will be loaded. By default, the catalog named default will be loaded based on PyIceberg behavior.
  • Optionally, you may send telemetry to Sentry by specifying a SENTRY_DSN. This will send traces, profiles, logs, and default PII to Sentry, as well as enable the Sentry MCP integration.

Local Development

Building and Running

This project uses uv for package management and builds. Once this repository has been cloned, running the local development version of iceberg-mcp-server only requires a single command:

uv run iceberg-mcp-server

An Iceberg catalog still needs to be configured, but then it can be integrated into any agent that supports STDIO-based MCP servers as long as the agent is ran from the repository root directory.

Testing

This repository uses pytest for test running, although the tests themselves are structured in the unittest format. Running tests involves invoking pytest like any other project. If you use VS Code or a fork for development, the VS Code Python Extension will enable automatic test discovery and running in the Testing sidebar. Tests will also be run with coverage in the integration workflow.

Linting and Formatting

iceberg-mcp-server uses Ruff and ty for linting, formatting, and type checking. The standard commands to run are:

ruff check --fix # linting
ruff format # formatting
ty check # type checking

The Ruff configuration is found in pyproject.toml, and all autofixable issues will be autofixed. If you use VS Code or a fork for development, the VS Code Ruff Extension and VS Code ty Extension will enable viewing issues from Ruff and ty within your editor. Additionally, Ruff, ty, and CodeQL analysis will be run in the integration workflow.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iceberg_mcp_server-0.2.2.tar.gz (8.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

iceberg_mcp_server-0.2.2-py3-none-any.whl (11.8 kB view details)

Uploaded Python 3

File details

Details for the file iceberg_mcp_server-0.2.2.tar.gz.

File metadata

  • Download URL: iceberg_mcp_server-0.2.2.tar.gz
  • Upload date:
  • Size: 8.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for iceberg_mcp_server-0.2.2.tar.gz
Algorithm Hash digest
SHA256 d0b713303705dc0a2c500859c3bc50e79c4c24af287db5668f464dda3d71a473
MD5 ebea2eb0e6523239fa9ad0c34db3125c
BLAKE2b-256 4aad278580d15538f27f72370b7ea71618c783506cbf69fdc839497c14d3aff5

See more details on using hashes here.

Provenance

The following attestation bundles were made for iceberg_mcp_server-0.2.2.tar.gz:

Publisher: deliver.yml on dragonejt/iceberg-mcp-server

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file iceberg_mcp_server-0.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for iceberg_mcp_server-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f6fe2c4c829f8afb455c74ed05eace0790c7ddf199746e678775112e4fd75192
MD5 6024e50b976ded4d4221a4bacde48ac2
BLAKE2b-256 9d6881d6ce5e980b3bf4e771f9edbf48322145a1c8196cc8c787287443f879d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for iceberg_mcp_server-0.2.2-py3-none-any.whl:

Publisher: deliver.yml on dragonejt/iceberg-mcp-server

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page