Iceberg MCP Server (via Impala)
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| USER_MAP | No | Optional identity=cloudera_user pairs (comma-separated). When set, unlisted identities are rejected | |
| IMPALA_HOST | Yes | Impala coordinator host | |
| IMPALA_PORT | No | Impala coordinator port (default 443) | 443 |
| IMPALA_USER | Yes | Machine user that authenticates (and is allowed to impersonate via authorized_proxy_user_config) | |
| ENTRA_ISSUER | No | Optional override for Entra issuer (defaults to v2.0 issuer for tenant) | |
| MCP_MAX_ROWS | No | Largest result returned to the model (default 1000 rows) | |
| ALLOWED_USERS | No | Optional comma-separated allowlist of Cloudera usernames | |
| IMPALA_KEYTAB | No | Kerberos only: keytab file of the machine user | |
| MCP_TEST_USER | No | Test deployments only: skip identity checks and run every call as this user | |
| MCP_TRANSPORT | No | Transport protocol: stdio (default), http, or sse | |
| ENTRA_AUDIENCE | No | Entra audience (Application ID URI) | |
| ENTRA_JWKS_URI | No | Optional override for Entra JWKS URI (defaults to v2.0 keys for tenant) | |
| IMPALA_CA_CERT | No | Certificate authority file that issued Impala's certificate | |
| ENTRA_TENANT_ID | No | Entra tenant ID for token validation | |
| IMPALA_DATABASE | No | Impala database (default 'default') | default |
| IMPALA_KRB_HOST | No | Kerberos only: host name in Impala's principal when it differs from IMPALA_HOST | |
| IMPALA_PASSWORD | No | Machine user workload password (plain text, base64 preferred) | |
| MCP_QUEUE_WAIT_S | No | How long a call waits for a free slot before it is refused (default 15) | |
| ENTRA_USER_CLAIMS | No | Claims tried in order for identity (default 'preferred_username,upn,email') | |
| MCP_ENABLE_WHOAMI | No | Optional. Set to 1 to add a whoami tool that shows non-secret details of the caller's verified token | |
| IMPALA_VERIFY_CERT | No | Default true. false accepts any certificate and prints a warning | |
| MCP_STATELESS_HTTP | No | Set to true when several copies of the server run behind a load balancer | |
| CAI_TRUSTED_CALLERS | No | CAI mode: comma-separated CAI usernames allowed to act on behalf of other users | |
| IMPALA_PASSWORD_B64 | No | Machine user workload password, base64-encoded (preferred) | |
| MCP_QUERY_TIMEOUT_S | No | Time limit per query (default 120) | |
| ENTRA_REQUIRED_SCOPE | No | Optional required scope (e.g., access_as_user) | |
| IMPALA_QUERY_OPTIONS | No | Impala query options for every session, e.g., REQUEST_POOL=root.mcp,MEM_LIMIT=2g | |
| MCP_MAX_RESULT_CHARS | No | Largest result returned to the model (default 200000 characters) | |
| MCP_SKIP_PIP_INSTALL | No | Set to 1 when the site has no route to a package index | |
| IMPALA_AUTH_MECHANISM | No | LDAP (default) or GSSAPI (Kerberos) | |
| IMPALA_SOCKET_TIMEOUT_S | No | Seconds to wait for a coordinator that stops answering (default 60) | |
| MCP_MAX_CONCURRENT_QUERIES | No | Queries running at once in total (default 16) | |
| MCP_MAX_CONCURRENT_PER_USER | No | Queries running at once per user (default 4) | |
| IMPALA_KERBEROS_SERVICE_NAME | No | Kerberos only: service name (default 'impala') |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tasks | {
"list": {},
"cancel": {},
"requests": {
"tools": {
"call": {}
},
"prompts": {
"get": {}
},
"resources": {
"read": {}
}
}
} |
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| execute_queryA | Execute a read-only SQL query on the Impala database and return the rows as JSON. The query runs as the authenticated end user. Large results are cut off: the answer is then a JSON object with "truncated": true and a note, and it is not the complete data. Prefer aggregates, filters and LIMIT over fetching raw rows. |
| get_schemaA | List the tables in the current Impala database with their columns (name and type). Call this first, and use the exact column names it returns. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 2 tools
The two tools occupy clearly separate roles: `get_schema` for metadata discovery and `execute_query` for running read-only SQL. There is no realistic scenario where an agent would confuse one for the other, and the descriptions even specify the intended workflow order (schema first, then query).
Both names follow a strict verb_noun snake_case pattern (`execute_query`, `get_schema`), using consistent verbs and clear object nouns. No mixing of conventions or casing styles.
Two tools is on the thin side relative to the typical 3-15 range, but for a deliberately read-only SQL access layer both tools earn their place and form a complete minimal workflow. It is slightly under-provisioned but not wasteful or confusing.
The surface covers the core read-only lifecycle: inspect schema, then query. Minor conveniences (e.g. dedicated list-databases, table description, or EXPLAIN helper) are absent, but an agent can reach equivalent results by issuing SHOW/DESCRIBE through `execute_query`, so no hard dead ends exist. Write operations are intentionally excluded.