
An MCP Proxy built to use any Databricks MCP server in local coding agents with OAuth.
概览
MCP stdio-to-Streamable-HTTP proxy with Databricks OAuth. Lets any MCP client that speaks (e.g. Claude Desktop, Claude Code) connect to any — Managed, External, or Apps — handling authentication automatically. uc-mcp-proxy expects a configured Databricks CLI profile. Set one up first: If the profile uses OAuth U2M (auth_type = databricks-cli) and the cached token is expired, uc-mcp-proxy runs databricks auth login --profile automatically the first time it launches, opening a browser tab. Subsequent runs use the refreshed token. For PAT, M2M, Azure, or other auth types, the proxy diagnoses the failure and points you at the right remediation — it never runs databricks auth login against a non-OAuth profile because that would overwrite your existing credentials in ~/.databrickscfg. To skip the auto-login (CI / headless), pass --no-auto-login and ensure DATABRICKS_TOKEN or another credential is set in the environment. An App is served from its own hostname on databricksapps.
README
以下为原文 README 节选,完整内容请查看原文。
uc-mcp-proxy
MCP stdio-to-Streamable-HTTP proxy with Databricks OAuth.
Lets any MCP client that speaks stdio (e.g. Claude Desktop, Claude Code) connect to any Databricks MCP server — Managed, External, or Apps — handling authentication automatically.
Installation
# Run directly (no install needed)
uvx uc-mcp-proxy --url
# Or install globally
uv tool install uc-mcp-proxy
Requires Python 3.10+.
First-run authentication
uc-mcp-proxy expects a configured Databricks CLI profile. Set one up first:
databricks configure --host https://
Then pass it to the proxy:
uvx uc-mcp-proxy --url --profile
If the profile uses OAuth U2M (auth_type = databricks-cli) and the cached
token is expired, uc-mcp-proxy runs databricks auth login --profile
automatically the first time it launches, opening a browser tab. Subsequent
runs use the refreshed token.
uc-mcp-proxy will only auto-login for OAuth (databricks-cli) profiles.
For PAT, M2M, Azure, or other auth types, the proxy diagnoses the failure
and points you at the right remediation — it never runs databricks auth login against a non-OAuth profile because that would overwrite your
existing credentials in ~/.databrickscfg.
To skip the auto-login (CI / headless), pass --no-auto-login and ensure
DATABRICKS_TOKEN or another credential is set in the environment.
Databricks MCP Server Types
| Server Type | URL Pattern |
|---|---|
| Managed MCP (UC Functions, Vector Search, Genie, SQL) | https:///api/2.0/mcp/functions/{catalog}/{schema} |
| External MCP (GitHub, Google Drive, and others) | https:///api/2.0/mcp/external/{connection_name} |
| Apps (custom MCP servers) | https://-..databricksapps.com/ |
An App is served from its own hostname on databricksapps.com — not from a
path under your workspace host. Databricks assigns the URL when the app is
created and it cannot be changed afterwards, so copy it from the Apps page
in the workspace UI (or databricks apps list) rather than constructing it by
hand — on the workspace we tested, the segment Databricks documents as
is the cloud name (`aws`), not a region like `us-east-1`. The is whatever route the app serves MCP on; /mcp is the common
convention.
Apps reject raw personal access tokens. The App front door requires an OAuth token. Either use
--auth-type databricks-cli(browser-based OAuth U2M), or point a PAT profile at the App URL and the proxy exchanges the PAT for an app-scoped token automatically — see Databricks Apps from a PAT profile. The PAT must be one the exchange accepts (a Lakebox credential, not a classicdapi…PAT). Managed and External MCP servers work with PAT and other auth types as-is.
Usage
安装
uvx uc-mcp-proxy --url <MCP_SERVER_URL>配置
{
"mcpServers": {
"unity-catalog": {
"type": "stdio",
"command": "uvx",
"args": [
"uc-mcp-proxy",
"--url", "<MCP_SERVER_URL>"
]
}
}
}