CREATE MCP SERVER

Crée un nouveau serveur MCP (Model Context Protocol) ou remplace un serveur MCP existant.

Voir aussi :

DESCRIBE MCP SERVER, DROP MCP SERVER , SHOW MCP SERVERS

Syntaxe

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

Paramètres

name

Chaîne qui indique l’identificateur du serveur MCP ; doit être unique pour le schéma dans lequel le serveur MCP est créé.

De plus, l’identificateur doit commencer par un caractère alphabétique et ne peut pas contenir d’espaces ou de caractères spéciaux à moins que toute la chaîne d’identificateur soit délimitée par des guillemets doubles (par exemple, "My object"). Les identificateurs entre guillemets doubles sont également sensibles à la casse.

Pour plus d’informations, voir Exigences relatives à l’identificateur.

FROM SPECIFICATION $$specification_yaml$$

Spécifie la spécification YAML définissant les outils et la configuration du serveur MCP.

La spécification doit inclure un tableau tools avec une ou plusieurs définitions d’outils. Chaque outil doit spécifier :

  • name : identificateur unique de l’outil.

  • type : type d’outil (voir les types d’outils pris en charge)

  • title : titre lisible par un humain pour l’outil

  • description : description de l’action de l’outil

Types d’outils pris en charge :

  • CORTEX_SEARCH_SERVICE_QUERY : outil Cortex Search Service

  • CORTEX_ANALYST_MESSAGE : outil Cortex Analyst

  • SYSTEM_EXECUTE_SQL : outil d’exécution SQL

  • CORTEX_AGENT_RUN : outil Cortex Agent

  • CUSTOM : outil personnalisé pour les UDFs et les procédures stockées

Exigences spécifiques à l’outil :

Pour CORTEX_SEARCH_SERVICE_QUERY, CORTEX_ANALYST_MESSAGE et les outils``CORTEX_AGENT_RUN`` :

  • identifier : nom complet de l’objet sous-jacent (par exemple, database.schema.object_name)

Pour les outils CUSTOM :

  • identifier : nom complet de l’UDF ou de la procédure stockée

  • config : objet de configuration spécifiant :

    • type : function (pour l’UDF) ou procedure (pour la procédure stockée)

    • warehouse : entrepôt à utiliser pour l’exécution

    • input_schema: JSON schéma définissant les paramètres de la fonction/procédure

Exigences en matière de contrôle d’accès

Un rôle utilisé pour exécuter cette opération doit au minimum disposer des privilèges suivants :

Privilège

Objet

CREATE MCP SERVER

Schéma

USAGE

Schéma

Pour les outils qui font référence à d’autres objets, des privilèges supplémentaires sont requis :

Privilège

Objet

USAGE

Cortex Search Service (pour les outils CORTEX_SEARCH_SERVICE_QUERY)

SELECT

vue sémantique (pour les outils CORTEX_ANALYST_MESSAGE)

USAGE

Cortex Agent (pour les outils CORTEX_AGENT_RUN)

USAGE

Fonction définie par l’utilisateur ou procédure stockée (outils CUSTOM)

USAGE

Entrepôt (pour les outils CUSTOM)

Pour effectuer une opération sur un objet dans un schéma, il est nécessaire de disposer d’au moins un privilège sur la base de données parente et d’au moins un privilège sur le schéma parent.

Pour obtenir des instructions sur la création d’un rôle personnalisé avec un ensemble spécifique de privilèges, voir Création de rôles personnalisés.

Pour des informations générales sur les rôles et les privilèges accordés pour effectuer des actions SQL sur des objets sécurisables, voir Aperçu du contrôle d’accès.

Notes sur l’utilisation

  • Les clauses OR REPLACE et IF NOT EXISTS s’excluent mutuellement. Elles ne peuvent pas être utilisées dans la même instruction.

  • Les instructions CREATE OR REPLACE <objet> sont atomiques. En d’autres termes, lorsqu’un objet est remplacé, l’ancien objet est supprimé et le nouvel objet est créé dans une seule transaction.

  • Les instructions CREATE OR REPLACE <objet> sont atomiques. En d’autres termes, lorsqu’un objet est remplacé, l’ancien objet est supprimé et le nouvel objet est créé dans une seule transaction.

  • Lorsque vous configurez des noms d’hôte pour les connexions au serveur MCP, utilisez des traits d’union (-) au lieu de traits de soulignement (_). Les serveurs MCP rencontrent des problèmes de connexion avec les noms d’hôtes contenant des traits de soulignement.

  • La spécification du serveur MCP est stockée en tant que métadonnées et peut être vue à l’aide de DESCRIBE MCP SERVER.

  • Plusieurs outils peuvent être définis dans une seule spécification de serveur MCP.

  • Les noms d’outil doivent être uniques au sein d’un même serveur MCP.

  • Concernant les métadonnées :

    Attention

    Les clients doivent s’assurer qu’aucune donnée personnelle (autre que pour un objet utilisateur), donnée sensible, donnée à exportation contrôlée ou autre donnée réglementée n’est saisie comme métadonnée lors de l’utilisation du service Snowflake. Pour plus d’informations, voir Champs de métadonnées dans Snowflake.

Exemples

Exemple 1 : créer un serveur MCP avec les outils Cortex Search et Analyst

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

Exemple 2 : créer un serveur MCP avec un outil d’exécution SQL

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

Exemple 3 : créer un serveur MCP avec un outil UDF personnalisé**

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

Exemple 4 : créer un serveur MCP avec un outil de procédure stockée personnalisé

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

Exemple 5 : créer un serveur MCP avec l’outil Agent

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