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
-
Utilize OAuth para autenticar-se em workspace. Execute o seguinte em um terminal local:
Bashdatabricks auth login --host https://<your-workspace-hostname>
Configurar o servidor MCP
-
Adicione um arquivo “
requirements.txt
” ao diretório raiz do seu servidor e especifique as dependências Python para o seu servidor.Python Os servidores MCP frequentemente utilizam o uv para gerenciamento de pacotes. Se você usar
uv
, adicioneuv
e ele lidará com a instalação de dependências adicionais. -
Adicione um
app.yaml
especificando o comando CLI para executar o seu servidor.Por default, Databricks, os aplicativos escutam na porta 8000. Se o seu servidor estiver escutando em uma porta diferente, defina-a usando uma variável de ambiente no arquivo
app.yaml
.Exemplo
app.yaml
:YAMLcommand: [
'uv',
'run',
'your-server-name',
..., # optionally include additional parameters here
]
Faça o upload do servidor MCP como um aplicativo Databricks
-
Crie um aplicativo Databricks para hospedar seu 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
Utilize OAuth para autenticar-se em workspace. Execute o seguinte em um terminal local:
databricks auth login --host https://<your-workspace-hostname>
Utilize o perfil autenticado da etapa anterior para acessar o aplicativo Databricks hospedado:
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 em nome da autenticação do usuário. Consulte implantado um agente utilizando autenticação em nome do usuário.
Habilite o acesso em nome de terceiros usando ModelServingUserCredentials
para acessar o aplicativo Databricks hospedado a partir do 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 utilizando o escopo " apps.apps
". Consulte Autenticação em nome do usuário.
Habilite a autenticação do sistema usando entidade de serviço para acessar o aplicativo hospedado Databricks a partir do 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 utilizando DatabricksApps
como recurso. Consulte Especificar recurso para passagem automática de autenticação (autenticação do sistema).
implantado um agente
O Notebook a seguir demonstra como criar agentes LangGraph e OpenAI que chamam ferramentas MCP.