Polaris Catalog & Iceberg Governance MCP Server
Provides tools for managing Apache Polaris catalogs, namespaces, tables, views, principals, roles, and policies via Polaris REST API and Iceberg REST Catalog APIs.
Supports authentication via Keycloak OIDC password grant to exchange credentials for a token to connect to Polaris.
Enables direct inspection of Iceberg metadata files and Parquet data/delete files stored in MinIO or S3-compatible object storage for health checks and auditing.
Supports OAuth2/OIDC authentication flow for connecting to Polaris, allowing token-based or password grant authentication.
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., "@Polaris Catalog & Iceberg Governance MCP Serverlist all namespaces in the prod 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.
Polaris Catalog & Iceberg Governance MCP Server
A FastMCP server that gives AI assistants (and data engineers) conversational access to Apache Polaris catalog management, Iceberg REST Catalog APIs, and PyIceberg table storage/health inspection tools.
It is designed to enable AI agents (like Cursor, Windsurf, or Claude Desktop) to audit data governance, check access control roles, query namespaces, and inspect Iceberg metadata.
What it does
12 tools across 10 categories:
Category | Tool Name | Operations | What you can ask |
Connection |
| N/A | "Connect to Polaris" |
| N/A | "Disconnect from the Polaris server" | |
| N/A | "What endpoints does the server support?" | |
Catalogs |
|
| "What catalogs exist?", "Show me the storage config for catalog X" |
Namespaces |
|
| "List all namespaces in catalog X", "Does namespace Y exist?" |
Tables |
|
| "List tables in prod.analytics", "Show me the schema and snapshots for table Z" |
Views |
|
| "List views", "Load the revenue_daily view metadata" |
Principals |
|
| "Who has access?", "What roles does Alice have?" |
Roles & Grants |
|
| "What roles exist?", "Which catalog roles map to service_admin?", "What privileges does the analyst role have?" |
Policies |
|
| "What policies apply to this table?", "Show the compaction policy" |
Generic Tables |
|
| "What Delta/CSV tables are registered?" |
Metadata Inspection |
|
| "Check snapshot history", "List raw Parquet data/delete files", "Show partition health/delete file overhead" |
Related MCP server: Data Product MCP
Quick Start
Install
cd apache-polaris-iceberg-ai-mcp
pip install -e .Run the server
# Via FastMCP CLI
fastmcp run server.py
# Or directly
python -m serverConfigure in Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"polaris-catalog": {
"command": "fastmcp",
"args": ["run", "/path/to/apache-polaris-iceberg-ai-mcp/server.py"]
}
}
}Configure in VS Code (Copilot / Cline / etc.)
Add to your .vscode/mcp.json or MCP settings:
{
"servers": {
"polaris-catalog": {
"command": "fastmcp",
"args": ["run", "/path/to/apache-polaris-iceberg-ai-mcp/server.py"]
}
}
}Authentication
The server supports three authentication modes via the connect tool:
1. Client Credentials (default)
connect(uri="http://localhost:8181", client_id="admin", client_secret="password")2. Bearer Token
connect(uri="http://localhost:8181", token="eyJhbGciOiJSUzI1NiIs...")3. Keycloak / OIDC Password Credentials
Use this to exchange username/password credentials for a token from Keycloak or another OIDC provider first, and then authenticate to Polaris with that token:
connect(
uri="http://localhost:8181",
oauth_token_url="http://localhost:8080/realms/polaris-realm/protocol/openid-connect/token",
client_id="polaris-client",
client_secret="sBbUvTG7qWGbmgwgxKmnEuzqpuE3uGAu",
username="sankeerth",
password="nagapuri"
)Storage & Inspection Configuration
Since the inspect_request tool reads the underlying Avro metadata and Parquet data/delete files directly from your object storage, you should configure your S3/MinIO environment variables or pass options dynamically.
S3 / MinIO Environment Variables
By default, the inspection tools look for these environment variables or fallback to local MinIO dev defaults (admin / password / http://localhost:9000):
S3_ENDPOINT: S3 endpoint URL (e.g.,http://localhost:9000orhttps://s3.amazonaws.com)AWS_ACCESS_KEY_ID: Your AWS or MinIO access keyAWS_SECRET_ACCESS_KEY: Your AWS or MinIO secret key
Override parameters
The inspect_request tool also accepts optional overrides:
s3_endpointaws_access_key_idaws_secret_access_key
Architecture
apache-polaris-iceberg-ai-mcp/
├── server.py # FastMCP server — registers consolidated tools
├── client.py # Async HTTP client (httpx) with OAuth2 + password grant auth
├── requirements.txt # Dependencies (fastmcp, httpx, pydantic, pyiceberg, pyarrow, s3fs)
└── tools/ # Tool implementations by domain
├── connection.py # connect, disconnect, get_server_config
├── catalogs.py # catalog_request (list, get)
├── principals.py # principal_request (list, get, roles_assigned)
├── roles.py # role_request (principal/catalog roles, mapping, grants)
├── namespaces.py # namespace_request (list, get, exists)
├── tables.py # table_request (list, get, exists)
├── views.py # view_request (list, get, exists)
├── policies.py # policy_request (list, get, get_applicable)
├── generic_tables.py # generic_table_request (list, get)
└── inspect.py # inspect_request (snapshots, files, manifests, partitions, health)License
MIT License
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- 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/sankeerthnagapuri/apache-polaris-iceberg-ai-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server