Freigeben über


Hosten von benutzerdefinierten MCP-Servern mit Databricks-Apps

Hosten Sie Ihre eigenen benutzerdefinierten oder Drittanbieter-MCP-Server als Databricks-Apps. Benutzerdefinierte MCP-Server sind nützlich, wenn Sie bereits über einen MCP-Server verfügen, den Sie bereitstellen möchten, oder wenn Sie einen MCP-Server eines Drittanbieters als Quelle von Tools ausführen möchten.

Requirements

  • Ein MCP-Server, der als Databricks-App gehostet wird, muss einen HTTP-kompatiblen Transport implementieren, z. B. den streambaren HTTP-Transport.

Hosten eines MCP-Servers als Databricks-App

Ein Beispiel zum Schreiben eines eigenen MCP-Servers und zum Bereitstellen als Databricks-App finden Sie unter GitHub – benutzerdefinierte MCP-Servervorlage .

Führen Sie die folgenden Schritte aus, um einen vorhandenen Python MCP-Server als Databricks-App zu hosten:

Richten Sie Ihre Umgebung ein

Bevor Sie Ihren MCP-Server bereitstellen, authentifizieren Sie sich mit OAuth für Ihren Arbeitsbereich.

  1. Führen Sie Folgendes in einem lokalen Terminal aus:

    databricks auth login --host https://<your-workspace-hostname>
    

Einrichten des MCP-Servers

Verwenden Sie uv für die Abhängigkeitsverwaltung und einheitliche Tools bei der Bereitstellung Ihres MCP-Servers.

  1. Fügen Sie ein requirements.txt zum Stammverzeichnis des MCP-Servers hinzu und fügen Sie uv als Abhängigkeit hinzu.

    Wenn Sie zu requirements.txthinzufügen uv , behandelt es die Installation zusätzlicher Abhängigkeiten, die in Ihrer Projektkonfiguration definiert sind.

    uv
    
    
  2. Erstellen Sie eine pyproject.toml Datei, die einen Skripteinstiegspunkt für Ihren Server definiert.

    Beispiel pyproject.toml:

    [project.scripts]
    custom-server = "server.main:main"
    

    In diesem Beispiel:

    • custom-server ist der Skriptname, den Sie mit uv run
    • server.main:mainGibt den auszuführenden Modulpfad () und die Auszuführende Funktion (server/main.pymain) an.
  3. Fügen Sie eine app.yaml Datei hinzu, die den CLI-Befehl angibt, mit dem der MCP-Server unter Verwendung von uv run ausgeführt wird.

    Standardmäßig lauschen Databricks-Apps auf Port 8000. Wenn der Server auf einen anderen Port lauscht, setzen Sie ihn mithilfe einer Umgebungsvariablenüberschreibung in der app.yaml Datei fest.

    Beispiel app.yaml:

    command: [
        'uv',
        'run',
        'custom-server', # This must match a script defined in pyproject.toml
      ]
    

Wenn Sie ausführen uv run custom-server, sucht uv nach der Skriptdefinition, sucht den Modulpfad und ruft die main() Funktion auf.

Bereitstellen des MCP-Servers als Databricks-App

  1. Erstellen Sie eine Databricks-App zum Hosten des MCP-Servers:

    databricks apps create custom-mcp-server
    
  2. Laden Sie den Quellcode in Databricks hoch, und stellen Sie die App bereit, indem Sie die folgenden Befehle aus dem Verzeichnis ausführen, das Ihre app.yaml Datei enthält:

    DATABRICKS_USERNAME=$(databricks current-user me | jq -r .userName)
    databricks sync . "/Users/$DATABRICKS_USERNAME/custom-mcp-server"
    databricks apps deploy custom-mcp-server --source-code-path "/Workspace/Users/$DATABRICKS_USERNAME/custom-mcp-server"
    

Finden Sie die bereitgestellte App-URL

Nach der Bereitstellung finden Sie Ihre App-URL in der Databricks-Benutzeroberfläche. Der MCP-Serverendpunkt ist unter https://<app-url>/mcp.

Herstellen einer Verbindung mit dem benutzerdefinierten MCP-Server

Klicken Sie auf die Registerkarten, um zu sehen, wie eine Verbindung mit einem MCP-Server aus verschiedenen Umgebungen hergestellt werden kann.

Lokale Umgebung

Authentifizieren Sie sich bei Ihrem Arbeitsbereich mithilfe von OAuth, wie unter "Einrichten Ihrer Umgebung" beschrieben.

Das folgende Beispiel zeigt, wie Sie eine Verbindung mit dem benutzerdefinierten MCP-Server herstellen und verfügbare Tools auflisten:

from databricks_mcp import DatabricksMCPClient
from databricks.sdk import WorkspaceClient

# Replace with your deployed app URL
# Example: https://custom-mcp-server-6051921418418893.staging.aws.databricksapps.com/mcp
mcp_server_url = "https://<app-url>/mcp"

databricks_cli_profile = "DEFAULT"
workspace_client = WorkspaceClient(profile=databricks_cli_profile)

mcp_client = DatabricksMCPClient(server_url=mcp_server_url, workspace_client=workspace_client)

# List available tools
tools = mcp_client.list_tools()
print(f"Available tools: {tools}")

Notizbuch (Dienstprinzipal)

Verwenden Sie ein Dienstkonto, um auf die gehostete Databricks-App in einem Databricks-Notebook zuzugreifen.

from databricks_mcp import DatabricksMCPClient
from databricks.sdk import WorkspaceClient

# Replace with your deployed app URL
mcp_server_url = "https://<app-url>/mcp"

workspace_client = WorkspaceClient(
    host="<workspace-url>",
    client_id="<client-id>",
    client_secret="<client-secret>"
)

mcp_client = DatabricksMCPClient(server_url=mcp_server_url, workspace_client=workspace_client)

# List available tools
tools = mcp_client.list_tools()
print(f"Available tools: {tools}")

Agentcode (im Auftrag des Benutzers)

Richten Sie die Autorisierung im Namen des Benutzers ein. Siehe "Im Auftrag der Benutzerauthentifizierung".

Das folgende Beispiel zeigt, wie Sie den Im-Auftrag-des-Benutzers-Zugriff mithilfe ModelServingUserCredentials aktivieren, um auf die gehostete Databricks-App von einem Agenten zuzugreifen.

from databricks_mcp import DatabricksMCPClient
from databricks.sdk import WorkspaceClient
from databricks.sdk.credentials_provider import ModelServingUserCredentials

# Replace with your deployed app URL
mcp_server_url = "https://app-url>/mcp"

workspace_client = WorkspaceClient(credentials_strategy=ModelServingUserCredentials())

mcp_client = DatabricksMCPClient(server_url=mcp_server_url, workspace_client=workspace_client)

# List available tools
tools = mcp_client.list_tools()
print(f"Available tools: {tools}")

Protokollieren Sie das Agentmodell mithilfe des apps.apps Bereichs. Siehe "Im Auftrag der Benutzerauthentifizierung".

Agenten-Code (Dienstprinzipal)

Aktivieren Sie die Systemauthentifizierung mithilfe eines Dienstprinzipals, um von einem Agenten aus auf die gehostete Databricks-App zuzugreifen.

from databricks_mcp import DatabricksMCPClient
from databricks.sdk import WorkspaceClient

# Replace with your deployed app URL
mcp_server_url = "https://<app-url>/mcp"

workspace_client = WorkspaceClient()

mcp_client = DatabricksMCPClient(server_url=mcp_server_url, workspace_client=workspace_client)

# List available tools
tools = mcp_client.list_tools()
print(f"Available tools: {tools}")

Protokollieren Sie das Agentmodell als Ressource mit DatabricksApps. Siehe "Passthrough für die automatische Authentifizierung".

Beispielnotizbücher: Erstellen eines Agents mit Databricks MCP-Servern

Die folgenden Notizbücher zeigen, wie LangGraph- und OpenAI-Agents erstellt werden, die MCP-Tools mit benutzerdefinierten MCP-Servern aufrufen, die in Databricks-Apps gehostet werden.

LangGraph MCP-Toolanruf-Agent

Notebook abrufen

OpenAI MCP-Toolanruf-Agent

Notebook abrufen

Weitere Ressourcen

Das Cookbook für Apps enthält End-to-End-Codebeispiele für die Integration von MCP-Servern in verschiedene Frameworks:

Vollständige Quellcode und zusätzliche Beispiele finden Sie im Databricks Apps Cookbook-Repository.