Freigeben über


Hosten von benutzerdefinierten MCP-Servern mit Databricks-Apps

Hosten Sie benutzerdefinierte 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.

Der Zugriff auf benutzerdefinierte MCP-Server wird über Databricks-Apps-Berechtigungen gesteuert. Um benutzerdefinierte MCP-Aktivitäten zusammen mit Ihren anderen MCP-Servern und LLM-Endpunkten zu überwachen, verwenden Sie AI-Gateway.

Requirements

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

Erstellen oder Bereitstellen eines benutzerdefinierten MCP-Servers

Wählen Sie die Option aus, die Ihrem Ausgangspunkt entspricht:

Neues Symbol erstellen. Aus einer Vorlage erstellen: Erstellen eines neuen MCP-Servers von Grund auf

Erstellen eines benutzerdefinierten MCP-Servers aus der Vorlage "Apps"

Verwenden Sie die integrierte Hello World MCP-Servervorlage, um einen MCP-Server mit beispielbasierten Tools zu erstellen und bereitzustellen:

  1. Klicken Sie auf der Seitenleiste auf Compute.

  2. Klicken Sie auf die Registerkarte "Apps ".

  3. Klicken Sie auf "App erstellen".

  4. Wählen Sie unter der Kategorie Agents die Vorlage Hello World MCP Server aus.

  5. Geben Sie einen App-Namen ein, der beginnt mcp- (z. B mcp-hello-world. ).

    Hinweis

    Der App-Name muss beginnen, mcp- damit er als MCP-Server im AI-Playground erkannt wird.

  6. Klicken Sie auf "App erstellen".

Databricks stellt die App mit Beispielcode bereit, den Sie anpassen können.

Die Vorlage enthält zwei Beispieltools für die ersten Schritte:

  • health(): Ein Diagnosetool, das bestätigt, dass der Server betriebsbereit ist und Statusinformationen zurückgibt.
  • get_current_user(): Ein Tool, das die Informationen des aktuellen Benutzers mithilfe des Databricks SDK abruft und veranschaulicht, wie die Arbeitsbereichsauthentifizierung integriert wird.

Hinzufügen eines benutzerdefinierten Tools

Um Ein eigenes Tool hinzuzufügen, öffnen Sie den Quellcode der App, und definieren Sie eine neue Funktion mithilfe des @mcp.tool() Dekorators. Mit dem folgenden Tool wird beispielsweise eine Zeichenfolge in Großbuchstaben konvertiert:

@mcp.tool()
def uppercase(text: str) -> str:
    """Convert a string to uppercase."""
    return text.upper()

Jedes Tool muss eine Docstring enthalten. KI-Agents verwenden die Docstring, um zu verstehen, wann das Tool aufgerufen werden soll. Nachdem Sie ein Tool hinzugefügt haben, stellen Sie die App erneut bereit, um sie verfügbar zu machen.

Weitere Informationen zum Arbeiten mit App-Vorlagen finden Sie unter Create an app from a template or see the template source code on GitHub.

Symbol Bereitstellen eines vorhandenen Servers: Bereitstellen eines vorhandenen MCP-Servers als Databricks-App

Hosten eines vorhandenen MCP-Servers als Databricks-App

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.

    uv behandelt die Installation zusätzlicher Abhängigkeiten, die in Der 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 mcp-my-server
    

    Hinweis

    Stellen Sie Ihrem App-Namen mcp- ein Präfix voran, um ihn eindeutig als MCP-Server zu identifizieren. Diese Benennungskonvention hilft bei der Auffindbarkeit und Organisation in Ihrem Arbeitsbereich.

  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/mcp-my-server"
    databricks apps deploy mcp-my-server --source-code-path "/Workspace/Users/$DATABRICKS_USERNAME/mcp-my-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://mcp-my-server-6051921418418893.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. Übergeben Sie die geheimen Clientschlüsselwerte direkt wie unten dargestellt, oder verwenden Sie Databricks-Geheimschlüssel , um Anmeldeinformationen sicher abzurufen. Beispiel: client_id=dbutils.secrets.get(scope="my-scope", key="client-id").

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 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-Werkzeugaufruf-Agent

Notebook abrufen

Nächste Schritte

  • Verbinden Sie Agents mit externen Diensten, um einen Überblick über alle Ansätze zur Verbindung von Agents mit externen Diensten zu erhalten, einschließlich verwalteter OAuth und der UC-Verbindungsproxies.

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.