iceberg-mcp-server-hive
This server provides read-only and branch-based access to Apache Iceberg tables via HiveServer2, enabling SQL querying, schema exploration, and Iceberg branch/snapshot management.
Execute read-only queries: Run
SELECT,SHOW,DESCRIBE,WITH, andEXPLAINSQL statements on Hive/Iceberg tables.List tables: Retrieve table names from the configured or a specified Hive database.
List databases: Enumerate all Hive databases visible to the connected user.
List Iceberg snapshots: View snapshot history for a table.
List Iceberg refs: Inspect existing branches and tags on a table.
Create Iceberg branches: Fork a branch from the current state, a specific snapshot ID, or a timestamp.
Drop Iceberg branches: Remove an existing branch.
Fast-forward Iceberg branches: Advance a branch along its hierarchy.
Query Iceberg branches: Read data from a specific branch.
Execute DML on branches: Perform
INSERT,UPDATE, orDELETEoperations on a branch.
Provides read-only access to Iceberg tables on Cloudera Data Platform (CDP) via Apache Hive (HiveServer2).
Allows querying Iceberg tables on Cloudera Data Platform (CDP) using Hive.
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., "@iceberg-mcp-server-hivelist all databases"
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.
Cloudera Iceberg MCP Server (via Hive)
Fork of cloudera/iceberg-mcp-server that uses Apache Hive (HiveServer2) instead of Impala for read-only access to Iceberg tables on CDP.
MCP Tools
Tool | Description |
| Run read-only SQL ( |
| List tables in the configured or given database |
| List all visible Hive databases |
| Snapshot history ( |
| Branches and tags ( |
| Create branch from current state, snapshot ID, or timestamp |
| Drop a branch |
| Fast-forward branch hierarchy |
| Read from |
|
|
Iceberg branching (and tagging) is supported in Hive on CDP, not Impala. See branching and tagging.
Audit / write branch workflow
list_iceberg_snapshots— pick a snapshot ID or timestamplist_iceberg_refs— inspect existing branches/tagscreate_iceberg_branch— fork an audit branch (FOR SYSTEM_VERSIONor current head)query_iceberg_branch— read branch stateexecute_iceberg_branch_dml— write changes on the branch onlyfast_forward_iceberg_branch— advance a branch when readydrop_iceberg_branch— cleanup
Branch refs use lowercase branch_ prefix: mydb.mytable.branch_audit.
Related MCP server: MCP Trino Server
Configuration
Connection uses impyla against HiveServer2 (HTTP transport for CDP/Knox).
Example JDBC URL from CDP Data Warehouse:
jdbc:hive2://hs2-cdw-aw-se-hive.dw-se-sandbox-aws.a465-9q4k.cloudera.site/default;transportMode=http;httpPath=cliservice;ssl=trueMaps to MCP env vars:
JDBC / CDP | Env var |
Host in URL |
|
Path after host ( |
|
|
|
|
|
|
|
Port (443 implied) |
|
LDAP user/password |
|
Variable | Default | Description |
| — | HiveServer2 or Knox gateway host |
|
| HS2 port (443 for Knox HTTP) |
| — | LDAP / service user |
| — | Password |
|
| Default database for |
|
| impyla auth mechanism |
|
| HTTP transport (typical on CDP) |
|
| Knox / HS2 HTTP path |
|
| TLS |
|
|
|
Claude Desktop / Agent Studio
Cloudera Agent Studio (recommended)
Agent Studio only supports stdio MCP servers launched with uvx (Python) or npx (Node.js). Use a git URL so the runtime can install the package; do not use uv run unless the repo is checked out on the same machine.
{
"mcpServers": {
"iceberg-mcp-server-hive": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/frothkoetter/iceberg-mcp-server-hive@main",
"run-server"
],
"env": {
"HIVE_HOST": "hs2-cdw-aw-se-hive.dw-se-sandbox-aws.a465-9q4k.cloudera.site",
"HIVE_PORT": "443",
"HIVE_USER": "YOUR_USER",
"HIVE_PASSWORD": "YOUR_PASSWORD",
"HIVE_DATABASE": "default",
"HIVE_USE_HTTP_TRANSPORT": "true",
"HIVE_HTTP_PATH": "cliservice",
"HIVE_USE_SSL": "true",
"HIVE_AUTH_MECHANISM": "LDAP"
}
}
}
}Registration tips
Use placeholder credentials during catalog registration; provide real
HIVE_USER/HIVE_PASSWORDwhen attaching the MCP server to a workflow agent.If you see "We could not figure out the tools offered by the MCP server", the server may still work in workflows — Agent Studio documents occasional tool-discovery failures. Add the MCP server to your agent manually and select tools there.
Avoid writing to stdout from wrapper scripts — stdio transport uses stdout for JSON-RPC. This server logs only through the MCP SDK.
Ensure the Agent Studio environment can reach
HIVE_HOSTon port 443 (Knox / Hive VW).
See also Cloudera MCP registration docs.
Troubleshooting MCP server load failures
If CrewAI Agent Studio, Cursor, or another MCP host fails to connect to this server via uvx,
check the following.
FastMCP / mcp import error
uvx installs the latest mcp package (currently 2.x). MCP Python SDK 2.0 renamed FastMCP to
MCPServer. Older server builds crash on startup with:
ImportError: cannot import name 'FastMCP' from 'mcp.server'Use a server build that includes the dual-import fix (MCPServer + FastMCP fallback), or pin
mcp>=1.28,<2 in your environment.
Verify locally:
HIVE_HOST="hs2.example.cloudera.site" \
HIVE_USER="test" HIVE_PASSWORD="test" \
uv run python scripts/test_mcp_stdio.py uvx --from . run-serverExpected output: OK initialize and OK tools/list: 10 tools.
Ensure uvx is on the Agent Studio host PATH (which uvx).
Claude Desktop (local checkout)
{
"mcpServers": {
"iceberg-mcp-server-hive": {
"command": "uv",
"args": ["run", "run-server"],
"env": {
"HIVE_HOST": "hs2-your-cluster.example.cloudera.site",
"HIVE_PORT": "443",
"HIVE_USER": "username",
"HIVE_PASSWORD": "password",
"HIVE_DATABASE": "default"
}
}
}
}Local development
git clone https://github.com/<your-org>/iceberg-mcp-server-hive.git
cd iceberg-mcp-server-hive
uv sync --dev
export HIVE_HOST=... HIVE_USER=... HIVE_PASSWORD=...
uv run run-serverDifferences from upstream (Impala)
Environment variables use
HIVE_*instead ofIMPALA_*get_schemareturns{database, tables}and accepts an optional database nameAdded
list_databasestoolexecute_queryreturns{columns, rows}for SELECT results
Examples
See ./examples for LangChain and OpenAI SDK notebooks (update env vars from IMPALA_* to HIVE_*).
Copyright (c) 2025 - Cloudera, Inc. All rights reserved.
Available Tools
3 toolsexecute_queryA
Execute a read-only SQL query on Hive (Iceberg tables) and return JSON results.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It states the tool is read-only, which is a key behavioral trait, but lacks details on error handling, performance, or limitations.
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 wasted words. However, it 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?
Given the simple tool (one param, no output schema, no annotations), the description covers basic purpose but omits details like result structure, pagination, or error behavior.
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?
The schema has 0% coverage, so the description should compensate. It adds that the query is SQL, but provides no additional details like syntax, formatting, or restrictions, leaving agents underinformed.
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 specifies the action (execute), resource (SQL query on Hive Iceberg tables), and output (JSON results). It effectively distinguishes from sibling tools like get_schema and list_databases.
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 the tool is for executing read-only SQL queries but does not provide explicit guidance on when to use it versus siblings, nor does it mention exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_schemaA
List table names in the configured Hive database, or in an optional database.
| Name | Required | Description | Default |
|---|---|---|---|
| database | No |
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 mentions listing tables but does not disclose permissions needed, error behavior if database doesn't exist, or whether the output includes fully qualified names. The read-only nature is implied but not explicit.
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, front-loaded with the verb 'List' and resource 'table names'. No unnecessary words; efficient and to the point.
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 is simple with one optional parameter and no output schema, the description is adequate but could be more complete by mentioning what exactly is returned (e.g., table names only, not columns) and the default database behavior.
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%, but the description adds value by explaining that the database parameter is optional and lists table names from the configured or specified database. It clarifies the parameter's purpose beyond the bare schema.
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 lists table names in a Hive database, with an optional parameter to specify a database. It distinguishes itself from siblings like list_databases (which lists databases) and execute_query (which runs queries).
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 for listing tables but does not explicitly state when to use this tool versus alternatives like list_databases or execute_query. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_databasesA
List all Hive databases visible to the connected user.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only adds 'visible to the connected user' but does not disclose other behavioral traits like limitations, side effects, or performance.
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, front-loaded with action and resource, no unnecessary words.
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 simple, parameterless tool, the description covers core functionality and important qualifier; lacks output details but still adequate.
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?
Input schema has 0 parameters, so baseline is 4; description adds meaning by specifying scope ('visible to the connected user'), which clarifies the result set.
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 verb 'List' and the resource 'Hive databases', and distinguishes from siblings (execute_query, get_schema) by specifying a listing operation.
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; lacks context such as prerequisite or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct function: executing queries, listing tables, and listing databases. There is no overlap in purpose.
All tool names follow a consistent verb_noun pattern using snake_case, making them predictable and easy to understand.
With only three tools, the server is minimal but covers the essential read-only operations for Hive databases. The count is reasonable given the focused scope.
The server lacks a tool for retrieving detailed table schema or previewing data, which are common needs when exploring databases. This is a notable gap for a read-only explorer.
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.
Read-only PostgreSQL, MySQL, SQL Server access via MCP — 24 dialect-aware hosted tools.
Query 40 databases from Claude, ChatGPT, or Cursor — on any device. Read-only, encrypted, audited.
The BigQuery remote MCP server is a fully managed service that uses the Model Context Protocol to connect AI applications and LLMs to BigQuery data sources. It provides secure, standardized tools for AI agents to list datasets and tables, retrieve schemas, generate and execute SQL queries through natural language, and analyze data—enabling direct access to enterprise analytics data without requiring manual SQL coding.
Related MCP Servers
- FlicenseBqualityDmaintenanceA Model Context Protocol server that provides a SQL interface for querying and managing Apache Iceberg tables through Claude desktop, allowing natural language interaction with Iceberg data lakes.18
- AlicenseBqualityCmaintenanceA Model Context Protocol server that provides seamless integration with Trino and Iceberg, enabling data exploration, querying, and table maintenance through a standard interface.2225Apache 2.0
- AlicenseBqualityDmaintenanceEnables read-only access to Apache Iceberg tables via Impala, allowing LLMs to inspect database schemas and execute SQL queries to retrieve data from Iceberg tables.214Apache 2.0
- AlicenseNot gradedqualityDmaintenanceProvides read-only access to Iceberg tables via Apache Impala, enabling LLMs to inspect database schemas and execute SQL queries on Iceberg data.Apache 2.0
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/frothkoetter/iceberg-mcp-server-hive'
If you have feedback or need assistance with the MCP directory API, please join our Discord server