MCP stdio-to-Streamable-HTTP proxy with Databricks OAuth
Project description
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 <MCP_SERVER_URL>
# Or install globally
uv tool install uc-mcp-proxy
Requires Python 3.10+.
Databricks MCP Server Types
| Server Type | URL Pattern |
|---|---|
| Managed MCP (UC Functions, Vector Search, Genie, SQL) | https://<workspace>/api/2.0/mcp/functions/{catalog}/{schema} |
| External MCP (GitHub, Google Drive, and others) | https://<workspace>/api/2.0/mcp/external/{connection_name} |
| Apps (custom MCP servers) | https://<workspace>.databricks.com/apps/<app>/mcp |
Apps require OAuth. Use
--auth-type databricks-cliwhen connecting to a Databricks App. Managed and External MCP servers also work with PAT and other auth types.
Usage
Claude Desktop / Claude Code (.mcp.json)
Add to your MCP client configuration:
{
"mcpServers": {
"unity-catalog": {
"type": "stdio",
"command": "uvx",
"args": [
"uc-mcp-proxy",
"--url", "<MCP_SERVER_URL>"
]
}
}
}
CLI
uc-mcp-proxy --url <MCP_SERVER_URL> [--profile <DATABRICKS_PROFILE>] [--auth-type <AUTH_TYPE>]
| Flag | Description |
|---|---|
--url |
(required) Remote MCP server URL |
--profile |
Databricks CLI profile name (uses default if omitted) |
--auth-type |
Databricks auth type, e.g. databricks-cli |
How It Works
- Starts an MCP stdio server (stdin/stdout)
- Connects to the remote MCP server via Streamable HTTP
- Injects a fresh Databricks OAuth token on every HTTP request
- Bridges messages bidirectionally between the two transports
Authentication
Authentication is handled by the Databricks SDK. The SDK auto-detects the method, or you can force one with --auth-type.
| Auth type | Managed / External MCP | Apps MCP |
|---|---|---|
databricks-cli — token from ~/.databrickscfg |
✅ | ✅ recommended |
pat — personal access token |
✅ | ❌ not supported |
oauth-m2m — service principal |
✅ | ✅ |
| OAuth U2M — browser-based login | ✅ | ✅ |
Development
uv sync # install dependencies
uv run pytest -m unit -v # run unit tests
uv run pytest -m integration -v # run integration tests
uv build # build package
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file uc_mcp_proxy-0.1.1.tar.gz.
File metadata
- Download URL: uc_mcp_proxy-0.1.1.tar.gz
- Upload date:
- Size: 81.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b9127f683e622f7734c172295a67142c7737069b0efefd0811c9bcfe04927dd2
|
|
| MD5 |
d1269f13dea9597e8ba025eca7462251
|
|
| BLAKE2b-256 |
80c006f7a7608ea49efa6d801daa4bccc8195e1a1c2eb45560849d890e9d3bed
|
Provenance
The following attestation bundles were made for uc_mcp_proxy-0.1.1.tar.gz:
Publisher:
publish.yml on IceRhymers/uc-mcp-proxy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
uc_mcp_proxy-0.1.1.tar.gz -
Subject digest:
b9127f683e622f7734c172295a67142c7737069b0efefd0811c9bcfe04927dd2 - Sigstore transparency entry: 1088710729
- Sigstore integration time:
-
Permalink:
IceRhymers/uc-mcp-proxy@904dc52004948df4fba7a629504ed2920a1c8d00 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/IceRhymers
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@904dc52004948df4fba7a629504ed2920a1c8d00 -
Trigger Event:
push
-
Statement type:
File details
Details for the file uc_mcp_proxy-0.1.1-py3-none-any.whl.
File metadata
- Download URL: uc_mcp_proxy-0.1.1-py3-none-any.whl
- Upload date:
- Size: 5.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
550785e51236cf0a976b9fd08cc10a5ba19bfddb1be3f9460950757dd4cc91ff
|
|
| MD5 |
81b01231cfd4f62f735ab2047b7d77ba
|
|
| BLAKE2b-256 |
c6f7c7f808812e30e78928429ce7d99cc24ce0774ec74b06d7edac1ae16f6a5d
|
Provenance
The following attestation bundles were made for uc_mcp_proxy-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on IceRhymers/uc-mcp-proxy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
uc_mcp_proxy-0.1.1-py3-none-any.whl -
Subject digest:
550785e51236cf0a976b9fd08cc10a5ba19bfddb1be3f9460950757dd4cc91ff - Sigstore transparency entry: 1088710757
- Sigstore integration time:
-
Permalink:
IceRhymers/uc-mcp-proxy@904dc52004948df4fba7a629504ed2920a1c8d00 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/IceRhymers
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@904dc52004948df4fba7a629504ed2920a1c8d00 -
Trigger Event:
push
-
Statement type: