CREATE MCP SERVER

Erstellt einen neuen MCP-Server (Modellkontext-Protokoll) oder ersetzt einen bestehenden MCP-Server

Siehe auch:

DESCRIBE MCP SERVER, DROP MCP SERVER, SHOW MCP SERVERS

Syntax

CREATE [ OR REPLACE ] MCP SERVER [ IF NOT EXISTS ] <name>
  FROM SPECIFICATION $$<specification_yaml>$$
Copy

Parameter

name

Zeichenfolge, die den Bezeichner für den MCP-Server angibt. Der Wert muss für das Schema, in dem der MCP-Server erstellt wird, eindeutig sein.

Darüber hinaus muss der Bezeichner mit einem Buchstaben beginnen und darf keine Leer- oder Sonderzeichen enthalten, es sei denn, die gesamte Bezeichnerzeichenfolge wird in doppelte Anführungszeichen gesetzt (z. B. "My object"). Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß-/Kleinschreibung zu beachten.

Weitere Informationen dazu finden Sie unter Anforderungen an Bezeichner.

FROM SPECIFICATION $$specification_yaml$$

Gibt die YAML-Spezifikation an, die die Tools und die Konfiguration für den MCP-Server definiert.

Die Spezifikation muss ein tools-Array mit einer oder mehreren Tool-Definitionen enthalten. Jedes Tool muss Folgendes angeben:

  • name: Eindeutiger Bezeichner für das Tool

  • type: Tool-Typ (siehe unterstützte Tool-Typen)

  • title: Von Menschen lesbarer Titel für das Tool

  • description: Eine Beschreibung, was das Tool macht

Unterstützte Tool-Typen:

  • CORTEX_SEARCH_SERVICE_QUERY: Cortex Search Service-Tool

  • CORTEX_ANALYST_MESSAGE: Cortex Analyst-Tool

  • SYSTEM_EXECUTE_SQL: SQL-Ausführungstool

  • CORTEX_AGENT_RUN: Cortex Agent-Tool

  • CUSTOM: Kundenspezifisches Tool für UDFs und gespeicherte Prozeduren

Tool-spezifische Anforderungen:

Für CORTEX_SEARCH_SERVICE_QUERY-, CORTEX_ANALYST_MESSAGE- und CORTEX_AGENT_RUN-Tools:

  • identifier: Vollqualifizierter Name des zugrunde liegenden Objekts (z. B. database.schema.object_name)

Für CUSTOM-Tools:

  • identifier: Vollqualifizierter Name der UDF oder der gespeicherten Prozedur.

  • config: Konfigurationsobjekt, das Folgendes angibt:

    • type: Entweder function (für UDF) oder procedure (für gespeicherte Prozedur)

    • warehouse: Warehouse, das für die Ausführung verwendet werden soll

    • input_schema: JSON-Schema, das die Funktions-/Prozedurparameter definiert

Anforderungen an die Zugriffssteuerung

Eine Rolle, die zur Ausführung dieser Operation verwendet wird, muss mindestens die folgenden Berechtigungen haben:

Berechtigung

Objekt

CREATE MCP SERVER

Schema

USAGE

Schema

Für Tools, die auf andere Objekte verweisen, sind zusätzliche Berechtigungen erforderlich:

Berechtigung

Objekt

USAGE

Cortex Search Service (für CORTEX_SEARCH_SERVICE_QUERY-Tools)

SELECT

Semantische Ansicht (für CORTEX_ANALYST_MESSAGE-Tools)

USAGE

Cortex Agent (für CORTEX_AGENT_RUN-Tools)

USAGE

Benutzerdefinierte Funktion oder gespeicherte Prozedur (für CUSTOM-Tools)

USAGE

Warehouse (für CUSTOM-Tools)

Für das Ausführen von Operationen für ein Objekt in einem Schema ist mindestens eine Berechtigung für die übergeordnete Datenbank und mindestens eine Berechtigung für das übergeordnete Schema erforderlich.

Eine Anleitung zum Erstellen einer kundenspezifischen Rolle mit einer bestimmten Gruppe von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen.

Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.

Nutzungshinweise

  • Die Klauseln OR REPLACE und IF NOT EXISTS schließen sich gegenseitig aus. Sie können nicht beide in der gleichen Anweisung verwendet werden.

  • CREATE OR REPLACE <Objekt>-Anweisungen sind atomar. Das heißt, wenn ein Objekt ersetzt wird, erfolgt das Löschen des alten Objekts und das Erstellen des neuen Objekts in einer einzigen Transaktion.

  • CREATE OR REPLACE <Objekt>-Anweisungen sind atomar. Das heißt, wenn ein Objekt ersetzt wird, erfolgt das Löschen des alten Objekts und das Erstellen des neuen Objekts in einer einzigen Transaktion.

  • Wenn Sie Hostnamen für MCP-Serververbindungen konfigurieren, verwenden Sie Bindestriche (-) anstelle von Unterstrichen (_). MCP-Server haben Verbindungsprobleme bei Hostnamen, die Unterstriche enthalten.

  • Das MCP-Serverspezifikationen werden als Metadaten gespeichert und können mit DESCRIBE MCP SERVER angezeigt werden.

  • Mehrere Tools können in einer einzigen MCP-Serverspezifikation definiert werden.

  • Toolnamen müssen innerhalb eines einzelnen MCP-Servers eindeutig sein.

  • Metadaten:

    Achtung

    Kunden müssen sicherstellen, dass bei der Nutzung des Snowflake-Dienstes keine personenbezogenen Daten (außer für ein Objekt „User“), sensible Daten, exportkontrollierte Daten oder andere regulierte Daten als Metadaten eingegeben werden. Weitere Informationen dazu finden Sie unter Metadatenfelder in Snowflake.

Beispiele

Beispiel 1: Einen MCP-Server mit Cortex Search- und Analyst-Tools erstellen

CREATE MCP SERVER my_mcp_server
  FROM SPECIFICATION $$
    tools:
      - name: "product-search"
        type: "CORTEX_SEARCH_SERVICE_QUERY"
        identifier: "database1.schema1.cortex_search_service1"
        description: "Cortex search service for all products"
        title: "Product Search"

      - name: "revenue-semantic-view"
        type: "CORTEX_ANALYST_MESSAGE"
        identifier: "database1.schema1.semantic_view_1"
        description: "Semantic view for all revenue tables"
        title: "Semantic view for revenue"
  $$;
Copy

Beispiel 2: MCP-Server mit dem SQL-Ausführungstool erstellen

CREATE MCP SERVER sql_exec_server
  FROM SPECIFICATION $$
    tools:
      - title: "SQL Execution Tool"
        name: "sql_exec_tool"
        type: "SYSTEM_EXECUTE_SQL"
        description: "A tool to execute SQL queries against the connected Snowflake database."
  $$;
Copy

Beispiel 3: MCP-Server mit einem kundenspezifischen UDF-Tool erstellen

CREATE MCP SERVER custom_tools_server
  FROM SPECIFICATION $$
    tools:
      - title: "Multiply by Ten"
        identifier: "example_database.agents.multiply_by_ten"
        name: "multiply_by_ten"
        type: "CUSTOM"
        description: "Multiplies input value by ten and returns the result."
        config:
          type: "function"
          warehouse: "compute_service_warehouse"
          input_schema:
            type: "object"
            properties:
              x:
                description: "A number to be multiplied by ten"
                type: "number"
  $$;
Copy

Beispiel 4: MCP-Server mit Tool für kundenspezifische gespeicherte Prozeduren erstellen

CREATE MCP SERVER procedure_tools_server
  FROM SPECIFICATION $$
    tools:
      - title: "Calculate Values"
        identifier: "example_database.agents.calculate_values_sp"
        name: "calculate_values_sp"
        type: "CUSTOM"
        description: "Calculates the product and sum of two numbers and returns them in a JSON object."
        config:
          type: "procedure"
          warehouse: "compute_service_warehouse"
          input_schema:
            type: "object"
            properties:
              x:
                description: "First number"
                type: "number"
              y:
                description: "Second number"
                type: "number"
  $$;
Copy

Beispiel 5: MCP-Server mit Agent-Tool erstellen

CREATE MCP SERVER agent_server
  FROM SPECIFICATION $$
    tools:
      - title: "Customer Service Agent"
        name: "customer_agent"
        type: "CORTEX_AGENT_RUN"
        identifier: "support_db.agents_schema.customer_service_agent"
        description: "Agent that handles customer service inquiries"
  $$;
Copy