MCP-сервер · Базы данных
Snowflake-managed MCP Server
Управляемый MCP-сервер Snowflake: создаётся командой SQL внутри аккаунта и отдаёт агентам Cortex Agent, Cortex Search, Cortex Analyst, выполнение SQL и свои функции. Доступ ограничивается ролями Snowflake и входом через OAuth.
Сверено 21 октября 2026 г.
Что умеет сервер
Это управляемый MCP-сервер, который работает прямо внутри вашего аккаунта Snowflake: отдельную инфраструктуру разворачивать не нужно. Сервер создаётся как объект базы командой CREATE MCP SERVER, а в его спецификации перечисляются инструменты. Поддерживаются пять типов: агент Cortex Agent, поиск Cortex Search, Cortex Analyst, который по вопросу на естественном языке строит SQL, выполнение SQL и произвольные инструменты на основе пользовательских функций и хранимых процедур.
Клиент находит инструменты вызовом tools/list и использует их через tools/call. Для аутентификации по умолчанию применяется Snowflake OAuth, при желании можно привязать внешнего поставщика, например Okta или Microsoft Entra ID. Доступ к серверу и к каждому инструменту регулируется ролями Snowflake.
Когда использовать
Подходит командам, у которых данные уже в Snowflake и нужно дать агенту безопасный доступ к ним без выгрузки в сторонние системы. Для бизнес-вопросов Snowflake рекомендует выставлять наружу не сырой SQL, а Cortex Agent: он сам выбирает нужные Cortex Analyst и Cortex Search, а клиент получает один управляемый интерфейс. Прямой доступ к SQL нужен, когда агенту надо исследовать данные свободно, и для него лучше завести отдельный сервер с узкой ролью.
Это замена прежнему сообществу-серверу Snowflake-Labs/mcp: его репозиторий помечен как устаревший и не поддерживается, а в нём самом рекомендуют переходить на управляемый сервер Snowflake.
Ограничения и безопасность
Доступ к самому серверу не даёт доступа к инструментам: на каждый нужен свой грант, например USAGE на сервис Cortex Search или SELECT на семантическое представление. Snowflake советует создать для MCP отдельную роль с минимальными правами, не выдавать её роли PUBLIC и не включать вторичные роли (OAUTH_USE_SECONDARY_ROLES = NONE). По умолчанию сессия использует роль пользователя по умолчанию, и у пользователя должен быть задан склад по умолчанию, иначе сессия не запустится. Инструмент выполнения SQL по умолчанию работает только на чтение. Аннотации инструментов (только чтение, разрушающее действие и подобные) служат подсказками для клиента, а не механизмом защиты.
Есть и жёсткие пределы. Сервер поддерживает только инструменты, но не ресурсы, подсказки, корни и семплирование. На один сервер можно добавить до 50 инструментов, а ответы общих инструментов и инструмента SQL обрезаются на 250 КБ. Если у аккаунта включена сетевая политика, добавьте в неё исходящие адреса клиента (для Claude их публикует Anthropic), иначе запрос токена вернёт ошибку invalid_client. Имена хостов лучше писать с дефисами вместо подчёркиваний. Объекты MCP-серверов не реплицируются в группах отказоустойчивости. Если вы подключаете сторонние серверы, проверяйте их инструменты: Snowflake предупреждает об отравлении и подмене инструментов (tool poisoning и tool shadowing).
Установка
Создание MCP-сервера в Snowflake
Перейдите в нужную базу и схему и создайте сервер, выставив наружу Cortex Agent:
CREATE OR REPLACE MCP SERVER <database_name>.<schema_name>.<server_name>
FROM SPECIFICATION $$
tools:
- title: "Governed business data agent"
name: "business_data_agent"
type: "CORTEX_AGENT_RUN"
identifier: "<database_name>.<schema_name>.<agent_name>"
description: "Use this agent for governed business data questions."
$$;Инструмент выполнения SQL описывается так (по умолчанию он разрешает только чтение):
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."
config:
read_only: true
query_timeout: 600
warehouse: "<warehouse_name>"OAuth для клиента
Создайте интеграцию безопасности. Вариант для клиента без секрета (PKCE), например Claude Desktop:
CREATE OR REPLACE SECURITY INTEGRATION <integration_name>
TYPE = OAUTH
OAUTH_CLIENT = CUSTOM
ENABLED = TRUE
OAUTH_CLIENT_TYPE = 'PUBLIC'
OAUTH_REDIRECT_URI = 'https://claude.ai/api/mcp/auth_callback'
OAUTH_USE_SECONDARY_ROLES = NONE
ALLOWED_ROLES_LIST = ('<mcp_access_role>');Для клиентов, которые хранят секрет (VS Code, Cursor), укажите OAUTH_CLIENT_TYPE = 'CONFIDENTIAL' и адрес возврата клиента. Идентификатор и секрет клиента получите так (имя интеграции в верхнем регистре):
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<integration_name>');Адрес сервера
https://<account_url>/api/v2/databases/<database>/schemas/<schema>/mcp-servers/<name>Claude
В Claude откройте Settings, затем Connectors, нажмите Add custom connector, укажите имя (например, Snowflake) и адрес сервера выше, добавьте идентификатор и секрет клиента из интеграции безопасности и нажмите Add. Откроется окно входа в Snowflake.
Cursor
Добавьте в ~/.cursor/mcp.json (глобально) или <project>/.cursor/mcp.json (для проекта), а затем в Cursor Settings, MCP, нажмите Sign in:
{
"mcpServers": {
"snowflake": {
"url": "https://<account_url>/api/v2/databases/<database>/schemas/<schema>/mcp-servers/<name>",
"auth": {
"CLIENT_ID": "${env:MCP_CLIENT_ID}",
"CLIENT_SECRET": "${env:MCP_CLIENT_SECRET}"
}
}
}
}ChatGPT
В ChatGPT включите Developer mode в Settings, Connectors, Advanced, затем создайте коннектор в Settings, Connectors: укажите адрес сервера, способ аутентификации OAuth, идентификатор и секрет клиента.
Совместимые клиенты
- Claude
- ChatGPT
- Cursor