Apache Hive MCP Server
Apache Hive MCP Server
An MCP server for Apache Hive (HiveServer2), built with FastMCP. Connects to any HiveServer2-compatible endpoint — open-source Apache Hive, Cloudera CDP Base, or Cloudera CDP Public Cloud (CDW) — and exposes two read-only tools that an LLM agent can call.
Project summary
What it is — a Model Context Protocol server that lets an LLM agent query Apache Hive: list tables and run read-only SQL, with results returned as JSON.
Feature parity — mirrors Cloudera's Impala/Iceberg MCP server: same
execute_query+get_schematools and structure, with the connection layer swapped to HiveServer2 viaimpyla.Works everywhere HiveServer2 does — open-source Apache Hive, CDP Base (Kerberos/LDAP), and CDP Public Cloud / CDW (Knox, LDAP over HTTPS). Auth, transport, and TLS are all driven by
HIVE_*environment variables.Safe by default —
execute_queryenforces a read-only prefix guard (SELECT/SHOW/DESCRIBE/WITH); write/DDL statements are rejected before a connection is opened.Transport —
stdio(default),http, orsse, selected viaMCP_TRANSPORT.Tech stack — Python ≥3.10, FastMCP,
impyla,uv. 11 unit tests (connection mocked — no live Hive required).
Tools
Tool | Signature | Description |
|
| Execute a read-only SQL query (SELECT, SHOW, DESCRIBE, WITH) and return results as a JSON array of column-keyed objects. Write operations are rejected with an error string. |
|
| Run |
Configuration
All configuration is via environment variables (or a .env file at the project root).
Variable | Default | Description |
|
| HiveServer2 hostname or IP |
|
| HiveServer2 thrift port |
|
| Database to connect to |
| (empty) | Username (leave empty for NOSASL/Kerberos) |
| (empty) | Password (used with PLAIN/LDAP) |
|
| Auth method: |
|
| Use HTTP transport instead of binary thrift |
|
| HTTP path when |
|
| Enable TLS for the thrift connection |
|
| Kerberos service principal name (GSSAPI only) |
|
| MCP transport: |
Copy .env.example to .env and fill in your values.
Deployment presets
Local / development (Docker HiveServer2)
HIVE_HOST=localhost
HIVE_PORT=10000
HIVE_DATABASE=default
HIVE_AUTH_MECHANISM=NOSASL
MCP_TRANSPORT=stdioCDP Public Cloud (CDW Virtual Warehouse)
HIVE_HOST=<coordinator-hostname>.dw.cloudera.site
HIVE_PORT=443
HIVE_DATABASE=default
HIVE_USER=<workload-username>
HIVE_PASSWORD=<workload-password>
HIVE_AUTH_MECHANISM=LDAP
HIVE_USE_HTTP_TRANSPORT=true
HIVE_HTTP_PATH=cliservice
HIVE_USE_SSL=true
MCP_TRANSPORT=stdioCDP Base / on-premises with Kerberos
HIVE_HOST=<hiveserver2-host.example.com>
HIVE_PORT=10000
HIVE_DATABASE=default
HIVE_AUTH_MECHANISM=GSSAPI
HIVE_KERBEROS_SERVICE_NAME=hive
MCP_TRANSPORT=stdioObtain a Kerberos ticket (
kinit) before starting the server.
Running
# Install
pip install -e .
# or with uv:
uv sync
# Copy and edit config
cp .env.example .env
# Start (stdio transport, for use with an MCP host)
uv run hive-mcp-serverMCP client configuration
MCP hosts (Claude Desktop, Cloudera AI Agent Studio, etc.) register servers with
a mcpServers JSON block. uvx runs this server straight from GitHub — no
local install or PyPI publish required. Fill in the HIVE_* values for your
environment (see Configuration and the presets above).
{
"mcpServers": {
"Hive": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/avelloal/hive-mcp-server@v0.1.0",
"hive-mcp-server"
],
"env": {
"HIVE_HOST": "<coordinator-hostname>.dw.cloudera.site",
"HIVE_PORT": "443",
"HIVE_DATABASE": "default",
"HIVE_USER": "<workload-username>",
"HIVE_PASSWORD": "<workload-password>",
"HIVE_AUTH_MECHANISM": "LDAP",
"HIVE_USE_HTTP_TRANSPORT": "true",
"HIVE_HTTP_PATH": "cliservice",
"HIVE_USE_SSL": "true"
}
}
}
}The example above targets CDP Public Cloud / CDW. For local or Kerberos
targets, swap the env values using the presets above.
@v0.1.0 pins a fixed release — drop it to track the latest, or bump it for a
newer version.
For Cloudera AI Agent Studio specifically (registration steps, env-var
handling, stdio/uvx limitations), see
examples/agent-studio/.
Smoke test
Start a local HiveServer2 (e.g., Apache Hive Docker image):
docker run -d -p 10000:10000 apache/hive:3.1.3Configure
.envwith the local preset above.Start the server:
uv run hive-mcp-serverIn a second terminal, use the
fastmcpdev inspector or any MCP client to call both tools:get_schema()— should return[]or a list of table names.execute_query("SHOW DATABASES")— should return a JSON array of databases.
License
Apache License 2.0 — see LICENSE.