This article describes the last step of Connecting to Snowflake MCP Server. Proceed to setting Concierge External Resource and finish establishing connection Between Concierge and Snowflake Intelligence.
Prerequisites:
- Metric Insights Administrator account.
- Token from the Snowflake account if the chosen Auth Type is "Defined in configuration".
- Snowflake credentials if the chosen Auth Type is "Service Account Token" or "User OAuth".
1. Create Concierge External Resource
Go to Metric Insights, access Admin > Concierge Setup and open the Content Sources tab
- [+ Add External Resource Configuration]
- Select Snowflake Cortex - Snowflake Managed MCP or Snowflake Cortex - MI Custom MCP from the list.
After that, the User will be redirected to the External Resource Editor.
2. Authentication Tab
The Name is generated automatically, but it can be changed if necessary.
2.1. Auth Type: Defined in Configuration
Choosing "Defined in configuration" type of authentication means that Concierge will use the Token hardcoded into the server configuration for access.
2.2. Auth Type: Service Account Token and User OAuth
Choosing "Service Account Token" or "User OAuth" type of authentication means that the Token will be requested and then automatically inserted to the configuration code by Metric Insights. Those two types require the same set of credentials. The difference between them is in authorization of the User that makes query in Concierge.
When the "User OAuth" type is chosen, Concierge checks what accesses the User that makes query has and provides answers according to them. "User OAuth" authentication type is used when the Snowflake has a security model configured which gives users different access rights.
The Token, obtained this way will have a priority over the one, hardcoded into the server configuration.
To create a Snowflake External Resource Configuration with "Service Account Token" Auth Type, you will have to perform additional configurations in Snowflake account.
- Application ID: Insert OAUTH_CLIENT_ID value.
- Client Secret Value: Insert OAUTH_CLIENT_SECRET value.
- Server: Insert the Server value.
- NOTE: Server value must be inserted without "https://" at the beginning and without ‘/’ at the end.
3. Configuration Tab
Proceed to Configuration tab
- Icon: To add a custom icon, upload an SVG image on a transparent background.
- A block of example JSON code is added to the field automatically. The parts in double curvy brackets ("{{}}") has to be filled with information specific to your instance, except to the ones in the
display_progressfield. Double curvy brackets in thedisplay_progressfield are the part of the coding.- For more details about how to build the configuration, check the Connecting External Agents to Concierge via MCP Server article.
- [Test Resource Connection] to check if it is possible to establish connection to the external tool.
Check the JSON code usage example for Snowflake External Resource configuration.
Code Example
{
"name": "snowflake-managed",
"enabled": true,
"title": "Snowflake Managed MCP",
"scenario_type": "mcp_single_tool",
"display": "raw_or_llm_for_charting",
"use_in_slack_bot": false,
"use_in_msteams_bot": false,
"data_transformer": "ai.scenarios.mcp_data_transformers.snowflake.SnowflakeTransformer.transform",
"mcp_server": {
"url": "https://[your instance].snowflakecomputing.com/api/v2/databases/[your database]/schemas/[your schema]/mcp-servers/[your mcp server]",
"transport": "sse",
"name": "snowflake",
"auth": {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "Bearer <auth_token>"
}
},
"tool": "<domain_id>",
"timeout": 600
}
Snowflake Code Specifics
| Field | Description | |
|---|---|---|
name | The value of this field should be unique and exactly match the Name field in the UI above the editor. It is allowed to use A-Z/a-z alphabetic symbols, digits, and underscore (_) when setting a name. | |
enabled | This field allows for disabling the External Resource instead of deleting it. If it is true, the External Resource is enabled. If it is false, the External Resource is disabled.NOTE: After disabling the External Resource, make sure to disconnect or disable all Domains connected to it. | |
title | The display name. This name is shown when associating Domains and sometimes in error messages in the Concierge panel if there is a problem with the External Resource. | |
display | Defines how data from the external agent is shown. The raw_or_llm_for_charting is the required option for this field. It means that responses are only sent to be processed by the LLM on the Concierge side if there is a chart to be created. Responses without charting are processed for display in the Concierge panel by the data_transformer. | |
scenario_type | The mcp_single_tool option is mandatory for this field. | |
use_in_slack_bot | If this field is true, it allows this external resource to be used for requests from the Slack bot. | |
use_in_msteams_bot | If this field is true, it allows this external resource to be used for requests from the MS Teams bot. | |
data_transformer | Custom response processor for this MCP server. Metric Insights provides the following transformer for processing raw responses. This is quicker than using the LLM for processing:
| |
mcp_server | The following fields define the connectivity and authentication to the MCP server. | |
url | URL for the MCP Server is a required value. It is composed like this for Snowflake:
| |
transport | Defines the MCP Transport mode. This can be set to sse. | |
name | A unique name for this MCP server that identifies this specific connection. This can be the same as the name field above. | |
auth |
| |
tool | Since the scenario_type field is set to mcp_single_tool, this field is required. The <domain_id> reserved variable is used when there are several tools configured on the Snowflake MCP Server. It allows the Domain to associate with a specific tool. | |
timeout | This field defines how many seconds the Concierge will wait for a response from the external resource. The recommended value is 300. | |
NOTE: If the <domain_id> variable is used in the tool field, the Domian ID must be presented when associating External Resource with Domain. For details, check this section.
{
"name": "snowflake",
"enabled": true,
"title": "Snowflake Intelligence",
"scenario_type": "mcp_single_tool",
"display": "raw_or_llm_for_charting",
"use_in_slack_bot": false,
"use_in_msteams_bot": false,
"domain_id_field": "agent",
"mcp_server": {
"url": "http://mcp.metricinsights.com:8009/mcp",
"name": "snowflake",
"auth": {
"token": "<auth_token>"
}
},
"tool": "ask",
"display_progress": "{{title}}: {{message}}",
"timeout": 600
}
Snowflake Code Specifics
| Field | Description | |
|---|---|---|
name | The value of this variable should be unique and exactly match the Name field in the UI above the editor. It is allowed to use A-Z/a-z alphabetic symbols, digits, and underscore (_) when setting a name. | |
enabled | This field allows for disabling the External Resource instead of deleting it. If it is true, the External Resource is enabled. If it is false, the External Resource is disabled.NOTE: After disabling the External Resource, make sure to disconnect or disable all Domains connected to it. | |
title | The display name. This name is shown when associating Domains and sometimes in error messages in the Concierge panel if there is a problem with the External Resource. | |
display | Defines how data from the external agent is shown. The raw_or_llm_for_charting is the required option for this field. It means that responses are only sent to be processed by the LLM on the Concierge side if there is a chart to be created. Responses without charting are processed for display in the Concierge panel by the data_transformer. | |
scenario_type | The mcp_single_tool option is mandatory for this variable. | |
use_in_slack_bot | If this field is true, it allows this external resource to be used for requests from the Slack bot. | |
use_in_msteams_bot | If this field is true, it allows this external resource to be used for requests from the MS Teams bot. | |
domain_id_field | The agent option is mandatory for this variable. For MCP Servers that support domain transferring as the instrument's argument, this field defines where to transfer the domain ID. | |
mcp_server | url | URL for the MCP Server is a required value. Replace mcp_hostname and port with the actual values for your custom MCP installation. |
name | Name of MCP Server. It should be unique, but it is an optional variable. | |
auth |
| |
tool | Since the scenario_type field is set to mcp_single_tool, this field is required. The ask option is the mandatory option for this field. | |
display_progress | The template for displaying MCP execution progress status messages from the MCP server, if available.
| |
timeout | How many seconds Concierge will wait for a response from the external resource. The recommended value is 300. | |
5. Create Domain
Snowflake External Resource itself does not appear in the All Sources menu. It must be associated with a Domain and that Domain Name is what shows in the All Sources menu.
Return to Concierge Setup page.
- In the External Resource row click the Domains number to open the Associated Domains for window.
- [+ Add Associated Domain]
Select Domain
- Domain Name: Select one of existing Domains or create a new one.
- Domain ID: Insert the name of the tool, created for Snowflake MCP server.
- [Save]
After that give the system about 15 seconds to update, refresh the page and after that the Domain in the All Sources menu will be connected to the external tool.
NOTE: If the <domain_id> variable is used in the tool field, the Domian ID must be presented to prevent errors.
Tools are created during the Snowflake MCP Server creation and configuration. Here's an example:
tools:
- title: "Agent V2"
name: "agent_1"
type: "CORTEX_AGENT_RUN"
identifier: "db.schema.agent"
description: "agent that gives the ability to..."
Use title field value as the Domain ID.