A Python MCP server for Apache Pinot that exposes Pinot metadata and read-only SQL query access through MCP, intended for use with Claude Desktop or other MCP clients. It can list tables, segments, and schema information, and retrieve index/column metadata from a Pinot cluster.
From the registry: Query and manage Apache Pinot through MCP with typed tools and preview-first safety.

$ curl -LsSf https://astral.sh/uv/install.sh | shhttps://github.com/astral-sh/uv/overview#installation; alternative packages at https://docs.astral.sh/uv/getting-started/installation/$ uv tool install mcp-pinot-serverhttps://pypi.org/project/mcp-pinot-server/$ docker run --name pinot-quickstart -p 2123:2123 -p 9000:9000 -p 8000:8000 -d apachepinot/pinot:latest QuickStart -type batchPlease install the `mcp-pinot` MCP server into my current AI client (that's you).
Required prerequisites (do these first if not already done):
- **Install uv** — Install the uv Python package manager/runtime, which the README uses to run the server. Run: `curl -LsSf https://astral.sh/uv/install.sh | sh` (https://github.com/astral-sh/uv/overview#installation; alternative packages at https://docs.astral.sh/uv/getting-started/installation/)
- **Install mcp-pinot-server package** — Install the MCP server package into uv’s tool environment so it can be launched without cloning the repository. Run: `uv tool install mcp-pinot-server` (https://pypi.org/project/mcp-pinot-server/)
Optional prerequisites:
- Have access to an Apache Pinot cluster — You need a reachable Pinot controller and broker. Optionally, you can start a local Pinot QuickStart via Docker for testing. Run: `docker run --name pinot-quickstart -p 2123:2123 -p 9000:9000 -p 8000:8000 -d apachepinot/pinot:latest QuickStart -type batch`
Canonical MCP server config (stdio transport):
- command: `uvx`
- args: ["mcp-pinot-server"]
- required environment variables:
- `MCP_TRANSPORT`: Transport mode. Must be set to stdio for desktop MCP clients. (example: `stdio`)
- optional environment variables:
- `PINOT_CONTROLLER_URL`: Pinot controller endpoint used for metadata and table/schema operations. If omitted, defaults to a local Pinot controller. (example: `<your-pinot-controller-url>`)
- `PINOT_BROKER_URL`: Pinot broker endpoint used for SQL queries. If omitted, defaults to a local Pinot broker. (example: `<your-pinot-broker-url>`)
- `PINOT_BROKER_HOST`: Optional host override for the broker connection. (example: `<your-pinot-broker-host>`)
- `PINOT_BROKER_PORT`: Optional port override for the broker connection. (example: `<your-pinot-broker-port>`)
- `PINOT_BROKER_SCHEME`: Optional scheme override for the broker connection, usually http or https. (example: `<your-pinot-broker-scheme>`)
- `PINOT_USERNAME`: Optional Pinot basic-auth username. (example: `<your-pinot-username>`)
- `PINOT_PASSWORD`: Optional Pinot basic-auth password. (example: `<your-pinot-password>`)
- `PINOT_TOKEN`: Optional bearer or raw token for Pinot authentication. Takes precedence over PINOT_TOKEN_FILENAME. (example: `<your-pinot-token>`)
- `PINOT_TOKEN_FILENAME`: Optional path to a file containing a Pinot token. (example: `<path-to-your-pinot-token-file>`)
- `PINOT_DATABASE`: Optional database header for multi-database Pinot deployments. (example: `<your-pinot-database>`)
- `PINOT_USE_MSQE`: Enable Pinot multi-stage query engine query option. (example: `<true-or-false>`)
- `PINOT_REQUEST_TIMEOUT`: HTTP request timeout in seconds. (example: `<request-timeout-seconds>`)
- `PINOT_CONNECTION_TIMEOUT`: HTTP connection timeout in seconds. (example: `<connection-timeout-seconds>`)
- `PINOT_QUERY_TIMEOUT`: SQL query timeout in seconds. (example: `<query-timeout-seconds>`)
- `PINOT_TABLE_FILTER_FILE`: Optional YAML file containing included_tables glob patterns for table filtering. If set and missing, startup fails. (example: `<path-to-your-table-filter-yaml>`)
- `AUTH_PROVIDER`: Authentication provider. Generally not needed for stdio transport; relevant for HTTP exposure. Supported values: none, oauth, static. (example: `<none-or-oauth-or-static>`)
- `MCP_STATIC_TOKEN`: Shared bearer token used when AUTH_PROVIDER=static. (example: `<your-static-bearer-token>`)
- `OAUTH_ENABLED`: Legacy flag equivalent to AUTH_PROVIDER=oauth when true. (example: `<true-or-false>`)
- `OAUTH_CLIENT_ID`: OAuth client ID, required when OAuth auth is enabled. (example: `<your-oauth-client-id>`)
- `OAUTH_CLIENT_SECRET`: OAuth client secret, required when OAuth auth is enabled. (example: `<your-oauth-client-secret>`)
- `OAUTH_BASE_URL`: Public base URL for this MCP server, required when OAuth auth is enabled. (example: `<your-mcp-base-url>`)
- `OAUTH_AUTHORIZATION_ENDPOINT`: OAuth authorization endpoint, required when OAuth auth is enabled. (example: `<your-oauth-authorization-endpoint>`)
- `OAUTH_TOKEN_ENDPOINT`: OAuth token endpoint, required when OAuth auth is enabled. (example: `<your-oauth-token-endpoint>`)
- `OAUTH_JWKS_URI`: JWKS URI used for token verification, required when OAuth auth is enabled. (example: `<your-oauth-jwks-uri>`)
- `OAUTH_ISSUER`: Expected OAuth token issuer, required when OAuth auth is enabled. (example: `<your-oauth-issuer>`)
- `OAUTH_AUDIENCE`: Optional expected audience claim for OAuth token validation. (example: `<your-oauth-audience>`)
- `OAUTH_EXTRA_AUTH_PARAMS`: Optional JSON object with additional OAuth authorization parameters. (example: `<your-oauth-extra-auth-params-json>`)
Note: The README documents running from a cloned repository via `uv --directory . run mcp_pinot/server.py`, but the simplest portable install path is the published PyPI package `mcp-pinot-server`, which can be launched with `uvx mcp-pinot-server`. For desktop clients, use stdio transport by setting `MCP_TRANSPORT=stdio`. Pinot connection settings can also be supplied via a `.env` file, but MCP client configs should use env entries directly for portability.
Add this MCP server to my current client's config in the correct format for you. If you need secrets or credentials I haven't provided, ASK me — do not invent values or leave raw placeholders. After adding it, tell me how to verify the server is connected.PINOT_TOKENBearer or raw token used to authenticate with Pinot.MCP_STATIC_TOKENrequiredShared bearer secret required when AUTH_PROVIDER=static.OAUTH_CLIENT_IDOAuth client ID for MCP server authentication.OAUTH_CLIENT_SECRETOAuth client secret for MCP server authentication.Trending hip-hop artist momentum scores across four cultural dimensions.
Official PostHog MCP Server for product analytics, feature flags, experiments, and more.
Official OpenMetadata MCP: governed context and business semantics for AI assistants and agents.