CREATE MCP SERVER

Cria um novo servidor MCP (Model Context Protocol) ou substitui um servidor MCP existente.

Consulte também:

DESCRIBE MCP SERVER, DROP MCP SERVER , SHOW MCP SERVERS

Sintaxe

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

Parâmetros

name

Cadeia de caracteres que especifica o identificador para o servidor MCP; deve ser exclusivo para o esquema no qual o servidor MCP é criado.

Além disso, o identificador deve começar com um caractere alfabético e não pode conter espaços ou caracteres especiais, a menos que toda a cadeia de caracteres do identificador esteja entre aspas duplas (por exemplo, "My object"). Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.

Para obter mais informações, consulte Requisitos para identificadores.

FROM SPECIFICATION $$specification_yaml$$

Determina a especificação YAML que define as ferramentas e a configuração para o servidor MCP.

A especificação deve incluir uma matriz tools com uma ou mais definições de ferramentas. Cada ferramenta deve especificar:

  • name: identificador único da ferramenta

  • type: tipo de ferramenta (consulte os tipos de ferramentas compatíveis)

  • title: título legível da ferramenta

  • description: descrição da função da ferramenta

Tipos de ferramentas compatíveis:

  • CORTEX_SEARCH_SERVICE_QUERY: ferramenta Cortex Search Service

  • CORTEX_ANALYST_MESSAGE: ferramenta Cortex Analyst

  • SYSTEM_EXECUTE_SQL: ferramenta de execução SQL

  • CORTEX_AGENT_RUN: ferramenta Cortex Agent

  • CUSTOM: ferramenta personalizada para UDFs e procedimentos armazenados

Requisitos específicos da ferramenta:

Para ferramentas CORTEX_SEARCH_SERVICE_QUERY, CORTEX_ANALYST_MESSAGE e CORTEX_AGENT_RUN:

  • identifier: nome totalmente qualificado do objeto subjacente (por exemplo, database.schema.object_name)

Para ferramentas CUSTOM:

  • identifier: nome totalmente qualificado da UDF ou do procedimento armazenado

  • config: objeto de configuração que especifica:

    • type: function (para UDF) ou procedure (para procedimento armazenado)

    • warehouse: warehouse a ser utilizado para execução

    • input_schema: esquema JSON que define os parâmetros da função/procedimento

Requisitos de controle de acesso

A função usada para executar essa operação deve ter, no mínimo, os seguintes privilégios:

Privilégio

Objeto

CREATE MCP SERVER

Esquema

USAGE

Esquema

Para ferramentas que fazem referência a outros objetos, são necessários privilégios adicionais:

Privilégio

Objeto

USAGE

Cortex Search Service (para ferramentas CORTEX_SEARCH_SERVICE_QUERY)

SELECT

Exibição semântica (para ferramentas CORTEX_ANALYST_MESSAGE)

USAGE

Cortex Agent (para ferramentas CORTEX_AGENT_RUN)

USAGE

Função definida pelo usuário ou procedimento armazenado (para ferramentas CUSTOM)

USAGE

Warehouse (para ferramentas CUSTOM)

A operação em um objeto de esquema requer pelo menos um privilégio no banco de dados pai e um privilégio no esquema pai.

Para instruções sobre como criar uma função personalizada com um conjunto específico de privilégios, consulte Criação de funções personalizadas.

Para informações gerais sobre concessões de funções e privilégios para executar ações de SQL em objetos protegíveis, consulte Visão geral do controle de acesso.

Notas de uso

  • As cláusulas OR REPLACE e IF NOT EXISTS são mutuamente exclusivas. Os dois não podem ser usados na mesma instrução.

  • Instruções CREATE OR REPLACE <object> são atômicas. Ou seja, quando um objeto é substituído, o objeto antigo é excluído e o novo objeto é criado em uma única transação.

  • Instruções CREATE OR REPLACE <object> são atômicas. Ou seja, quando um objeto é substituído, o objeto antigo é excluído e o novo objeto é criado em uma única transação.

  • Quando você configurar nomes de host para conexões de servidor MCP, use hifens (-) em vez de sublinhados (_). Servidores MCP apresentam problemas de conexão com nomes de host que contêm sublinhados.

  • A especificação do servidor MCP é armazenada como metadados e pode ser visualizada usando DESCRIBE MCP SERVER.

  • Várias ferramentas podem ser definidas em uma única especificação de servidor MCP.

  • Os nomes das ferramentas devem ser exclusivos em um único servidor MCP.

  • Em relação aos metadados:

    Atenção

    Os clientes devem garantir que nenhum dado pessoal (exceto para um objeto do usuário), dados sensíveis, dados controlados por exportação ou outros dados regulamentados sejam inseridos como metadados ao usar o serviço Snowflake. Para obter mais informações, consulte Campos de metadados no Snowflake.

Exemplos

Exemplo 1: Criar servidor MCP com as ferramentas Cortex Search e 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

Exemplo 2: Criar servidor MCP com a ferramenta de execução 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

Exemplo 3: Criar servidor MCP com a ferramenta UDF personalizada

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

Exemplo 4: Criar servidor MCP com a ferramenta de procedimento armazenado personalizada

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

Exemplo 5: Criar servidor MCP com a ferramenta 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