メインコンテンツにスキップ

Snowflake MCPコネクタをFinに接続する

この記事を使って、IntercomのFin AIエージェントをSnowflake MCP(Model Context Protocol)サーバーに接続します。設定後、FinはSnowflakeのテーブルに対して読み取り専用のSQL照会を実行し、設定によりCortex Search、Cortex Analyst、カスタムツールを使用できます。

対応者:Tobias Ignatzek

FinはSnowflakeアカウント内で稼働するMCPサーバーに直接接続できます。接続後、Finはテーブルに対して読み取り専用のSQL照会を実行し、設定によりSnowflake Cortex Search、Cortex Analyst、および独自のカスタムツールを使用できます。すべては選択したSnowflakeロールの下で実行されるため、既存の権限、マスキング、行アクセスポリシーがFinのすべての操作に適用されます。

注意:この機能は現在クローズドベータ版です。この設定には、Intercom(データコネクタの設定用)とSnowflake(ACCOUNTADMINまたはSYSADMINロール、または同等の権限)の両方で管理者アクセスが必要です。Snowflake管理者が最初にSnowflake側の手順を完了する必要があります。ベータアクセスを希望する場合は、Intercomのアカウントチームにお問い合わせください。


開始前に:SnowflakeでMCPサーバーを設定する

この部分は完全にSnowflakeアカウント内で行われ、通常はSnowflakeの十分なアクセス権を持つ技術ユーザー(通常はACCOUNTADMINまたはSYSADMIN)のサポートが必要です。

  1. Finが参照すべき範囲に限定したロールを作成し、Finが照会できるテーブルに対してUSAGE/SELECT権限を付与します。

  2. 任意で、テーブルを横断して照会するUDF(ユーザー定義関数)を作成し、入力パラメータ付きのツールとして公開します。これは、顧客のメールアドレスを受け取り、該当する注文、ticket、その他のデータを返す照会関数などが考えられます。

  3. 公開したい各関数に対してロールにUSAGE権限を付与します。

  4. MCPサーバーオブジェクト(CREATE MCP SERVER)を作成し、そのロールに対してUSAGE権限を付与します。

  5. Snowflake OAuth(Open Authorization)セキュリティ統合(CREATE SECURITY INTEGRATION ... TYPE = OAUTH)をOAUTH_CLIENT = CUSTOMOAUTH_CLIENT_TYPE = 'CONFIDENTIAL'で作成し、OAUTH_REDIRECT_URIを以下のIntercomリージョンに対応する値に設定します。

  6. クライアントID(DESCRIBE SECURITY INTEGRATION <name>)とクライアントシークレット(SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<name>'))を取得します。

注意: CREATE OR REPLACE MCP SERVERを実行すると、サーバーオブジェクト上のすべての既存の権限がリセットされます。MCPサーバーを再展開する場合は、新しいオブジェクトに対してGRANT USAGE文を再実行してください。

以下の表は、Snowflake OAuthセキュリティ統合(ステップ5)作成時に入力するOAUTH_REDIRECT_URIの値を示しています。Intercomアカウントのリージョンに合ったURIを使用してください。

あなたのIntercomリージョン

Snowflakeに設定するリダイレクトURI

US

https://app.intercom.com/auth/mcp/callback

EU

https://app.eu.intercom.com/auth/mcp/callback

AU

https://app.au.intercom.com/auth/mcp/callback

正確なSQLおよびオブジェクトモデルについては、Snowflakeの公式ドキュメントを参照してください。

注意: Finを本番アカウントから完全に分離するには、MCPサーバーをSnowflake Reader Accountにホストし、Secure Data Sharingを介して共有したいデータのみを共有することができます。

ステップ6でクライアントIDとシークレットを取得したら、Intercomでの接続完了の準備が整います。

FinをSnowflake MCPサーバーに接続する

  1. データコネクタギャラリーで、Snowflakeタイルをクリックします。

  2. Snowflake管理者からの値を使ってセットアップフォームに入力します。

    • 名前 — Fin内でコネクタを呼ぶ名称。

    • アカウントURL - Snowflakeアカウントのウェブアドレス、例:https://xy12345.snowflakecomputing.com。標準の*.snowflakecomputing.comアドレスのみがSnowflakeとして認識されます。

    • MCPエンドポイントパス — アカウント内のMCPサーバーオブジェクトのアドレス、例:/api/v2/databases/<DB>/schemas/<SCHEMA>/mcp-servers/<SERVER_NAME>

    • クライアントIDクライアントシークレット — Snowflake管理者が作成したOAuthセキュリティ統合から取得。

    • ロール — 接続が動作するSnowflakeロール。これにより、Finがアクセスできるデータとツールが決まります。

  3. 接続をクリックします。Snowflakeのサインイン承認に進みます。

  4. 成功すると、Finはサーバーが提供するツールを問い合わせて表示します。

Finが使用できるツールを選択する

Finは明示的に追加していないツールを取得しません。

  1. 検出されたツールリストから、使用したいものにチェックを入れます(例:SQL実行、Cortex Search、カスタムツール)。

  2. 有効にした各ツールは独自のデータコネクタとして追加され、他のコネクタと同様に設定できます。詳細はデータコネクタの設定方法を参照してください。


技術的な制限と動作

Snowflake側の管理はあなた次第です

ツールが表示されない、または接続が完了しない場合は、通常、Snowflakeのロール、権限、サーバーオブジェクトを再確認してください。MCPサーバーの設定はSnowflakeアカウント内にあります。

回答サイズの制限

Snowflakeからの各応答は250 KB(数百行程度)に制限されています。


よくある質問

FinにSnowflakeアカウントへの完全アクセスを許可する必要がありますか?

いいえ。接続は割り当てた単一のSnowflakeロールとしてのみ動作し、明示的に有効にしたツールのみを使用します。

自分でサーバーを展開せずにFinをSnowflakeに接続できますか?

はい。Snowflake Cortexは完全カスタムMCPサーバー構築の代替として管理されたオプションを提供します。MCPサーバーオブジェクトとOAuth統合は作成しますが、AI機能はCortexが担当します。

ツールリストが空、またはツール呼び出しが失敗します。何を確認すべきですか?

ほぼ常にSnowflakeの設定問題です:MCPサーバーオブジェクトが存在し、接続に使用したロールにUSAGE権限が付与されていることを確認してください。CREATE OR REPLACE MCP SERVERは既存の権限を破棄するため、再展開後はGRANT USAGE文を再実行してください。

こちらの回答で解決しましたか?