Hospede servidores MCP personalizados utilizando aplicativos Databricks.
Beta
Este recurso está em fase beta.
Hospede seus próprios servidores MCP personalizados ou de terceiros como aplicativos Databricks. Os servidores MCP personalizados são úteis se você já possui um servidor MCP que deseja implantar ou se deseja executar um servidor MCP de terceiros como fonte de ferramentas.
Requisitos
- Um servidor MCP hospedado como um aplicativo Databricks deve implementar um transporte compatível com HTTP, como o transporte HTTP transmissível.
Hospede um servidor MCP como um aplicativo Databricks
Consulte o repositório personalizado do servidor MCP para obter um exemplo de como escrever seu próprio servidor MCP e implantá-lo como um aplicativo Databricks.
Para hospedar um servidor Python MCP existente como um aplicativo Databricks, siga estas etapas:
Configure seu ambiente
Antes de instalar seu servidor MCP, autentique-se em seu workspace usando OAuth.
-
execute o seguinte em um terminal local:
Bashdatabricks auth login --host https://<your-workspace-hostname>
Configurar o servidor MCP
-
Adicione um
requirements.txtao diretório raiz do servidor MCP e especifique as dependências do Python para o servidor.Se o servidor usar uv para gerenciamento de pacotes, adicione
uvao requirements.txt e ele cuidará da instalação de dependências adicionais. -
Adicione um
app.yamlespecificando o comando CLI para executar o servidor MCP.Por default, os aplicativos Databricks escutam na porta 8000. Se o servidor escutar em uma porta diferente, defina-a usando uma substituição de variável de ambiente no arquivo
app.yaml.Exemplo
app.yaml:YAMLcommand: [
'uv',
'run',
'your-server-name',
..., # optionally include additional parameters here
]
implantou o servidor MCP como um aplicativo Databricks
-
Crie um aplicativo Databricks para hospedar o servidor MCP:
Bashdatabricks apps create mcp-my-custom-server -
Envie o código-fonte para Databricks e implante o aplicativo executando o seguinte comando a partir do diretório que contém o seu arquivo
app.yaml:BashDATABRICKS_USERNAME=$(databricks current-user me | jq -r .userName)
databricks sync . "/Users/$DATABRICKS_USERNAME/mcp-my-custom-server"
databricks apps deploy mcp-my-custom-server --source-code-path "/Workspace/Users/$DATABRICKS_USERNAME/mcp-my-custom-server"
Conecte-se ao servidor MCP personalizado
Clique na guia para ver como se conectar a um servidor MCP a partir de vários ambientes.
- Local environment
- Notebook (service principal)
- Agent code (on-behalf-of-user)
- Agent code (service principal)
Autentique-se no seu workspace usando OAuth conforme descrito em Configurar seu ambiente.
O exemplo a seguir mostra como se conectar ao servidor MCP personalizado e listar as ferramentas disponíveis:
from databricks_mcp import DatabricksOAuthClientProvider
from databricks.sdk import WorkspaceClient
from mcp.client.session import ClientSession
from mcp.client.streamable_http import streamablehttp_client
databricks_cli_profile = "DEFAULT"
workspace_client = WorkspaceClient(profile=databricks_cli_profile)
# Replace with your actual custom MCP server URL
mcp_server_url = "https://<workspace-hostname>/serving-endpoints/mcp-my-custom-server/invocations"
async def test_connection_to_server():
async with streamablehttp_client(
f"{mcp_server_url}", auth=DatabricksOAuthClientProvider(workspace_client)
) as (read_stream, write_stream, _), ClientSession(
read_stream, write_stream
) as session:
# List available tools
tools = await session.list_tools()
print(f"Available tools: {[tool.name for tool in tools.tools]}")
Utilize uma entidade de serviço para acessar o aplicativo hospedado Databricks em um Notebook do Databricks.
import json
from databricks.sdk import WorkspaceClient
from databricks_mcp import DatabricksOAuthClientProvider
from databricks.sdk.credentials_provider import ModelServingUserCredentials
from mcp.client.streamable_http import streamablehttp_client as connect
from mcp import ClientSession
async def main():
app_url = "https://mcp-server.databricksapps.com/mcp"
client = WorkspaceClient(
host="https://workspace_url",
client_id="client_id",
client_secret="client_secret"
)
async with connect(app_url, auth=DatabricksOAuthClientProvider(client)) as (
read_stream,
write_stream,
_,
):
async with ClientSession(read_stream, write_stream) as session:
await session.initialize()
tools = await session.list_tools()
print(f"Available tools: {[tool.name for tool in tools.tools]}")
await main()
Configure a autorização em nome do usuário. Consulte Autenticação em nome do usuário.
O exemplo a seguir mostra como habilitar o acesso em nome do usuário usando ModelServingUserCredentials para acessar o aplicativo Databricks hospedado de um agente:
import json
from databricks.sdk import WorkspaceClient
from databricks_mcp import DatabricksOAuthClientProvider
from databricks.sdk.credentials_provider import ModelServingUserCredentials
from mcp.client.streamable_http import streamablehttp_client as connect
from mcp import ClientSession
async def main():
app_url = "https://mcp-server.databricksapps.com/mcp"
client = WorkspaceClient(credentials_strategy = ModelServingUserCredentials())
async with connect(app_url, auth=DatabricksOAuthClientProvider(client)) as (
read_stream,
write_stream,
_,
):
async with ClientSession(read_stream, write_stream) as session:
await session.initialize()
tools = await session.list_tools()
print(f"Available tools: {[tool.name for tool in tools.tools]}")
await main()
Registre o modelo do agente usando o escopo apps.apps. Consulte Autenticação em nome do usuário.
Habilite a autenticação do sistema usando a entidade de serviço para acessar o aplicativo Databricks hospedado de um agente:
import json
from databricks.sdk import WorkspaceClient
from databricks_mcp import DatabricksOAuthClientProvider
from mcp.client.streamable_http import streamablehttp_client as connect
from mcp import ClientSession
async def main():
app_url = "https://mcp-server.databricksapps.com/mcp"
client = WorkspaceClient()
async with connect(app_url, auth=DatabricksOAuthClientProvider(client)) as (
read_stream,
write_stream,
_,
):
async with ClientSession(read_stream, write_stream) as session:
await session.initialize()
tools = await session.list_tools()
print(f"Available tools: {[tool.name for tool in tools.tools]}")
await main()
Registre o modelo do agente usando DatabricksApps como um recurso. Consulte Passagem automática de autenticação.
Exemplo de Notebook: Crie um agente com servidores MCP Databricks
O Notebook a seguir mostra como criar agentes LangGraph e OpenAI que chamam ferramentas MCP com servidores MCP personalizados hospedados em aplicativos Databricks .
Agente de chamada de ferramentas LangGraph MCP
Agente de chamada de ferramentas OpenAI MCP
Recurso adicional
O livro de receitas do aplicativo fornece exemplos de código de ponta a ponta para integrar servidores MCP com diferentes estruturas:
Para obter o código-fonte completo e exemplos adicionais, consulte o repositório Databricks Apps Cookbook.