Cloudera Hive MCP Server
This server provides an MCP interface to interact with a Cloudera Data Warehouse Virtual Warehouse (Hive), enabling database exploration and querying via five tools:
list_databases— Retrieve all available databases in the Hive Virtual Warehouse.list_tables— List all tables within a specified database.describe_table— Get schema details (column names, data types, and comments) for a specific table.get_table_sample— Preview the first N rows (1–100, default 10) of a table for quick data exploration.execute_query— Run HiveQL queries; read-only by default (DDL/DML rejected) with a configurable row limit (default 1,000 rows) for safety.
Allows interaction with a Cloudera Data Warehouse Virtual Warehouse (Hive), providing tools for listing databases and tables, describing table schemas, previewing data, and executing HiveQL queries (read-only by default).
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., "@Cloudera Hive MCP Serverwhat databases are available?"
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 Hive MCP Server
A standard Model Context Protocol server that exposes a Cloudera Data Warehouse Virtual Warehouse (Hive) to any MCP client — Claude Desktop, Claude Code, the Claude Agent SDK, LangChain, LlamaIndex, Cline, Continue, etc.
Tools
Tool | Purpose |
| List every database in the Virtual Warehouse. |
| List tables in a given database. |
| Return columns, types, and comments for a table. |
| Preview the first N rows (1–100) of a table. |
| Run a HiveQL query. Read-only by default; row-capped for safety. |
Related MCP server: Cloudera Iceberg MCP Server
Prerequisites
Python 3.10+
Network access to your Cloudera Virtual Warehouse (typically
*.dw.cloudera.site:443)A workload user + password with query privileges on the target VW
Recommended install: uvx from Git (zero-setup for clients)
uvx is the Python analog of npx. It fetches the package, resolves its
dependencies into an isolated cache, and runs the entry point — no clone,
no venv, no pip install on the client machine.
One-time on the client machine — install uv (ships uvx):
curl -LsSf https://astral.sh/uv/install.sh | sh # macOS / Linux
# Windows: powershell -c "irm https://astral.sh/uv/install.ps1 | iex"Then any MCP client can launch this server with:
uvx --from git+https://github.com/mjain/hive-mcp-server hive-mcp-server(replace the Git URL with your fork / internal mirror)
Environment variables
The server needs Hive credentials in its environment. Every MCP client config
below sets them via an env block — no .env file needed on the client.
Variable | Default | Description |
| (required) | Virtual Warehouse hostname |
|
| HTTPS port |
|
| HiveServer2 HTTP path |
| (required) | Cloudera workload user |
| (required) | Cloudera workload password |
|
| If true, |
|
| Max rows returned by |
|
| Transport passed to |
Client setup
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"hive": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/mjain/hive-mcp-server",
"hive-mcp-server"
],
"env": {
"HIVE_HOST": "your-vw-host.dw.cloudera.site",
"HIVE_USERNAME": "your-workload-user",
"HIVE_PASSWORD": "your-workload-password",
"HIVE_READ_ONLY": "true"
}
}
}
}Fully quit Claude Desktop (⌘Q) and reopen. The five Hive tools appear in the tool tray.
Claude Code CLI
claude mcp add hive \
--env HIVE_HOST=your-vw-host.dw.cloudera.site \
--env HIVE_USERNAME=your-workload-user \
--env HIVE_PASSWORD=your-workload-password \
-- uvx --from git+https://github.com/mjain/hive-mcp-server hive-mcp-serverAdd -s user before hive to make it available in every project.
Claude Agent SDK (Python)
# pip install claude-agent-sdk
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions
async def main():
options = ClaudeAgentOptions(
mcp_servers={
"hive": {
"type": "stdio",
"command": "uvx",
"args": [
"--from",
"git+https://github.com/mjain/hive-mcp-server",
"hive-mcp-server",
],
"env": {
"HIVE_HOST": "your-vw-host.dw.cloudera.site",
"HIVE_USERNAME": "your-workload-user",
"HIVE_PASSWORD": "your-workload-password",
"HIVE_READ_ONLY": "true",
},
}
},
allowed_tools=[
"mcp__hive__list_databases",
"mcp__hive__list_tables",
"mcp__hive__describe_table",
"mcp__hive__get_table_sample",
"mcp__hive__execute_query",
],
)
async for msg in query(
prompt="List all Hive databases, then describe the largest table in the first one.",
options=options,
):
print(msg)
asyncio.run(main())The same {command, args, env} shape works for LangChain's MCP adapter,
LlamaIndex, Cline, Continue, Zed, and every other MCP client.
Local development
Clone and install in editable mode when working on the server itself:
git clone <this repo>
cd hive-mcp-server-claude
python -m venv .venv
source .venv/bin/activate
pip install -e .
cp .env.example .env # fill in credentials
hive-mcp-server # runs on stdio; Ctrl-C to stopSmoke-test the connection:
python -c "from hive_mcp_server.tools.hive_tools import list_databases; print(list_databases())"Code layout
The server follows the same pattern as
cloudera/iceberg-mcp-server:
src/hive_mcp_server/
├── __init__.py # version + main/mcp re-exports
├── server.py # thin MCP registration layer (@mcp.tool wrappers)
└── tools/
├── __init__.py
└── hive_tools.py # config, connection, SQL safety, tool logicTo add a new tool: implement it in tools/hive_tools.py, then add a
matching @mcp.tool() wrapper in server.py whose docstring becomes the
tool description exposed to the LLM.
Transport
By default the server runs on stdio, which is what all MCP clients
(Claude Desktop, Claude Code, etc.) expect. To use the MCP Inspector web
UI instead:
MCP_TRANSPORT=sse hive-mcp-serverPublishing your own fork
Push to any Git host — clients reference the URL:
git init && git add . && git commit -m "initial"
git remote add origin https://github.com/<you>/hive-mcp-server
git push -u origin mainThen everyone points their uvx --from git+... at your URL. To publish to
PyPI so clients can just say uvx hive-mcp-server (no --from):
pip install build twine
python -m build
twine upload dist/*Safety
HIVE_READ_ONLY=true(default) —execute_queryrejectsINSERT / UPDATE / DELETE / DROP / ALTER / TRUNCATE / CREATE / REPLACE / MERGE / GRANT / REVOKE / MSCK / LOAD / EXPORT / IMPORT.HIVE_QUERY_ROW_LIMIT=1000— capsexecute_queryresults so aSELECT *on a billion-row table doesn't blow up the agent's context.Identifier validation —
databaseandtablearguments must match[A-Za-z_][A-Za-z0-9_]*; anything else is rejected before reaching Hive.No credentials in tool arguments — the connection is configured entirely through environment variables; agents cannot see or override them.
License
MIT.
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/manojjain10/hive-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server