# Snowflake Cortex CodeをTreasure AIに接続する

[Snowflake Cortex Code](https://docs.snowflake.com/en/user-guide/cortex-code/cortex-code-cli)は、SnowflakeのCLIコーディングエージェントです。Model Context Protocol（MCP）を介してTreasure AIに接続することで、ターミナルからデータベースのクエリ、親セグメントやジャーニーの管理、または[Treasure AI Studio](/products/ai-studio/overview)のアクションやチャットの実行が可能になります。

Snowflake Cortex Codeは、以下の2つのMCP連携パターンのいずれか（または両方）を使用してTreasure AIに接続できます。

- **[MCP Server (Platform)](/getting-started/ai/mcp-server-platform)（`tdx mcp`）**: ローカルで`stdio`経由で[Treasure Code（`tdx`）CLI](/treasure-code/)を実行します。Cortex Codeが`tdx_search`と`tdx_run`を呼び出し、Treasure AI APIに対して直接データベースのクエリ、スキーマの確認、セグメント・ジャーニー・ワークフローの管理を行います。
- **[Treasure AI Studio MCPエンドポイント](/products/ai-studio/agent-channels/mcp-endpoints)**: Streamable HTTP経由でTreasure AI StudioのAgent Gatewayに接続します。Cortex CodeがTreasure AI Studio内の共有ワークフォルダにタスクを委譲し、保存済みアクションの実行やエージェントの回答の取得を行います。


## どちらのMCP接続を使用すべきですか？

| 項目  | MCP Server (Platform) (`tdx mcp`)  | Treasure AI Studio MCPエンドポイント  |
|  --- | --- | --- |
| **適した用途** | ターミナルからテーブルのクエリ、セグメントやジャーニーYAMLの検証、CLIワークフローの実行を行うエンジニア | Cortex Codeから保存済みのStudioアクション、共有レポート、マルチターンのStudioチャットを実行するチーム |
| **トランスポート** | Cortex Codeが起動するローカル`stdio`プロセス（`tdx mcp`） | リモートStreamable HTTP（`https://<Agent Gateway>/v1/mcp/<endpoint ID>`） |
| **認証** | システムキーチェーンに保存された専用の`tdx`プロファイル（`TDX_PROFILE=cortex`） | 静的Gateway Token（`Authorization: Bearer tasgwt_<secret>`） |
| **実行権限** | `cortex`プロファイルで認証されたTreasure AIユーザー | 1つの共有ワークフォルダにおけるMCPエンドポイントの指定実行者（Executor） |
| **AIクレジット消費** | Snowflake AI Creditsのみ（Treasure AIは通常のAPIリクエストを処理） | Snowflake AI Credits（Cortex Code分）＋ Treasure AI Credits（Studioのチャット・アクション分） |
| **公開されるツール** | `tdx_run`, `tdx_search` | `list_work_folders`, `list_actions`, `run_action`, `start_chat`, `continue_chat`, `get_chat_result` |


両方のMCPサーバーを同時にSnowflake Cortex Codeへ登録することも可能です。

```mermaid
flowchart LR
    subgraph local["Option 1: MCP Server (Platform) — ローカル stdio"]
        C1["Snowflake Cortex Code"] -->|"stdio (TDX_PROFILE=cortex)"| TDX["tdx mcp"]
        TDX -->|"HTTPS (キーチェーン認証情報)"| API["Treasure AI APIs<br/>データベース, セグメント, ジャーニー, ワークフロー"]
    end
    subgraph remote["Option 2: Treasure AI Studio MCP — リモート HTTP"]
        C2["Snowflake Cortex Code"] -->|"Streamable HTTP<br/>Bearer tasgwt_..."| GW["AI Studio Agent Gateway"]
        GW -->|"実行者として実行"| WF["共有ワークフォルダ<br/>保存済みアクション & Studioチャット"]
    end
```

## 前提条件

| 要件  | 詳細  |
|  --- | --- |
| **Snowflakeアカウント** | Snowflakeユーザーに`SNOWFLAKE.CORTEX_USER`または`SNOWFLAKE.CORTEX_AGENT_USER`データベースロールが付与されていること |
| **Snowflake Cortex Code CLI** | [Snowflake Cortex Code CLI](https://docs.snowflake.com/en/user-guide/cortex-code/cortex-code-cli)がインストールされ、Snowflakeアカウントに接続されていること |
| **Node.js** *（`tdx mcp`用）* | バージョン22.12以降（OS別のセットアップ手順は[tdxインストールガイド](/treasure-code/guide/installation)を参照） |
| **Treasure AIアクセス権** | `tdx mcp`の場合：操作対象のデータベース、セグメント、ジャーニー、ワークフローへのAPIキーまたはSSOアクセス権。Studio MCPエンドポイントの場合：アーカイブされていない[共有ワークフォルダ](/products/ai-studio/shared-folders)の**管理（Manage）**権限およびアカウントのエンドポイント作成ポリシーに基づく権限 |


## オプション1：MCP Server (Platform)（`tdx mcp`）を接続する

ローカルの認証情報を使用してCortex Codeから`tdx`コマンドを実行する場合にこの設定を使用します。

### ステップ1：`tdx`をインストールして認証する

`@treasuredata/tdx`をグローバルにインストール（Node.js 22.12以降が必要）し、Cortex Codeを特定のTreasure AIアカウントに紐付けてデフォルトの`tdx`プロファイルに影響を与えないよう、専用の`cortex`プロファイルを作成します。

```bash
npm install -g @treasuredata/tdx
tdx profile create cortex
tdx status --profile cortex
```

- プロンプトで自動的にサインインが行われない場合は、`tdx auth setup --profile cortex`を実行してください。
- US以外のリージョンの場合は、`--site eu01`、`--site ap01`、または`--site ap02`を指定します（例：`tdx auth setup --profile cortex --site ap01`）。
- SSO認証の場合は、`--account-name <YOUR_ACCOUNT>`を指定します。
- 認証情報はプレーンテキストの設定ファイルではなく、OSのシステム認証情報ストア（macOS Keychain、Windows Credential Manager、またはLinux Secret Service）に保存されます。


### ステップ2：Cortex Codeに`tdx`を登録する

`cortex` CLIコマンド、または`~/.snowflake/cortex/mcp.json`の編集によって`tdx mcp`を登録します。

オプションA：CLIコマンド
```bash
cortex mcp add tdx tdx mcp -e TDX_PROFILE=cortex
```

オプションB：mcp.json を編集
`~/.snowflake/cortex/mcp.json`に`tdx`サーバーブロックを追加します。

```json
{
  "mcpServers": {
    "tdx": {
      "type": "stdio",
      "command": "tdx",
      "args": ["mcp"],
      "env": {
        "TDX_PROFILE": "cortex"
      }
    }
  }
}
```

### ステップ3：接続を確認してプロンプトを実行する

登録されたサーバー設定を確認し、Cortex Codeを起動します。

```bash
cortex mcp get tdx
cortex
```

--mode code を指定しないでください
Cortex Codeは通常の`cortex`コマンドで起動してください。`cortex --mode code`で起動すると、すべてのMCPサーバーが無効になります。

Cortex Codeセッション内で`/mcp`を実行し、`tdx`が2つのツール（`tdx_run`および`tdx_search`）で`Connected`と表示されることを確認します。

Cortex Codeにプロンプトを送り、Treasure AIのデータを照会・確認します。

- *"Use tdx to list my Treasure AI databases."*
- *"Show the tables in sample_datasets and describe one of them."*
- *"Count rows in sample_datasets.www_access grouped by HTTP method."*
- *"List my parent segments and the child segments under one of them."*


## オプション2：Treasure AI Studio MCPエンドポイントを接続する

Streamable HTTP経由でCortex Codeから共有ワークフォルダの一覧取得、保存済み[アクション](/products/ai-studio/skills/actions)の実行、[Treasure AI Studio](/products/ai-studio/overview)チャットの実行を行う場合にこの設定を使用します。

### ステップ1：Treasure AI Studioで静的トークン方式のMCPエンドポイントを作成する

Cortex Codeから利用する共有ワークフォルダ用のエンドポイントを作成します。権限やトークン管理の詳細については、[静的トークン方式のMCPエンドポイント](/products/ai-studio/agent-channels/mcp-endpoints)を参照してください。

1. Treasure AI Studio（WebまたはDesktop）で、**設定 → エージェントチャネル**を開き、**新規MCPエンドポイント（New MCP Endpoint）**を選択します。
2. **静的トークン・共有実行者（Static token · shared executor）**を選択したまま、名前（例：`Snowflake Cortex Code`）を入力して**次へ（Next）**を選択します。
3. 公開する**共有ワークフォルダ（Shared work folder）**を選択し、トークンの**有効期限（Expiration）**（7日、30日、90日、カスタム日付、または無期限）を選択します。
4. **エンドポイントを作成して最初のトークンを発行（Create endpoint & issue first token）**を選択します。
5. **接続URL（Connection URL）**（`https://agent-gateway.<region>.treasure.ai/v1/mcp/<endpoint_id>`）と**認証ヘッダー（Authentication header）**（`Authorization: Bearer tasgwt_<secret>`）の両方をコピーし、**値を保存しました（I have stored the values）**にチェックを入れて**完了（Done）**を選択します。


トークンは直ちに保存してください
`tasgwt_`トークンはこの画面で1回だけ表示されます。ダイアログを閉じる前にパスワードマネージャーまたはOSの認証情報ストアに保存してください。紛失した場合は、エンドポイントの詳細ページでトークンを失効させ、新しいトークンを発行してください。

### ステップ2：トークンの環境変数を設定する

プレーンテキストのMCP設定ファイルにトークンを残さないよう、シェルで`TAS_TOKEN`環境変数を設定します。

macOS / Linux / WSL
```bash
export TAS_TOKEN="tasgwt_<YOUR_TOKEN>"
```

シェルプロファイル（`~/.bashrc`または`~/.zshrc`）に永続化するか、OSの認証情報マネージャーから動的に読み込むように設定できます。

Windows (PowerShell)
```powershell
$env:TAS_TOKEN = "tasgwt_<YOUR_TOKEN>"
```

### ステップ3：Cortex CodeにStudioエンドポイントを登録する

Treasure AI Studioからコピーした正確な**接続URL（Connection URL）**（`https://agent-gateway.<REGION>.treasure.ai/v1/mcp/<YOUR_ENDPOINT_ID>`）を指定します。`<REGION>`はご自身のTreasure AI Studioリージョン（USは`us01`、日本は`ap01`、欧州は`eu01`、韓国は`ap02`）に、`<YOUR_ENDPOINT_ID>`は山括弧（`< >`）を含めずにエンドポイントIDに置き換えてください。

オプションA：mcp.json を編集（推奨）
`~/.snowflake/cortex/mcp.json`を編集すると、ディスクにシークレットを書き込むことなく実行時にシェル環境から`${TAS_TOKEN}`を展開でき、さらにTreasure AI Studioのツール呼び出しあたりの待機時間（最大200秒）に合わせて210秒（`210000`ミリ秒）のタイムアウトを設定できます。

```json
{
  "mcpServers": {
    "treasure-studio": {
      "type": "http",
      "url": "https://agent-gateway.<REGION>.treasure.ai/v1/mcp/<YOUR_ENDPOINT_ID>",
      "headers": {
        "Authorization": "Bearer ${TAS_TOKEN}"
      },
      "timeout": 210000
    }
  }
}
```

オプションB：CLIコマンド
```bash
cortex mcp add treasure-studio "https://agent-gateway.<REGION>.treasure.ai/v1/mcp/<YOUR_ENDPOINT_ID>" \
  --transport http \
  -H "Authorization: Bearer $TAS_TOKEN"
```

コマンドラインで二重引用符内に`"$TAS_TOKEN"`を指定すると、Cortex Codeが`~/.snowflake/cortex/mcp.json`へ書き込む前にシェルがトークン値を展開するため、ファイル内にプレーンテキストでトークンが保存されます。シークレットを環境変数やキーチェーンに保つにはオプションAを使用してください。

### ステップ4：接続を確認してStudioアクションを実行する

サーバーが登録されていることを確認し、`TAS_TOKEN`がエクスポートされたターミナルからCortex Codeを起動します。

```bash
cortex mcp list
cortex mcp get treasure-studio
cortex
```

セッション内で`/mcp`を実行し、`treasure-studio`が6つのツール（`list_work_folders`、`list_actions`、`run_action`、`start_chat`、`continue_chat`、`get_chat_result`）で接続されていることを確認したら、プロンプトでテストします。

- *"Use treasure-studio to list my work folders and their Actions."*
- *"Run the Weekly Summary Action in treasure-studio."*
- *"Start a Studio chat that summarizes last week's campaign performance as a table."*


各ツール呼び出しは最大200秒待機します。Studioのタスクが200秒を超える場合、ツールは`status: "running"`と`chat_id`を返します。重複して実行を開始するのではなく、その`chat_id`を指定して`get_chat_result`をポーリングするようCortex Codeに指示してください。ツールの完全なスキーマやステータスコードについては、[MCPクライアントの接続](/products/ai-studio/agent-channels/mcp-clients#the-tools)を参照してください。

## ガードレールと運用上の制限

本番環境に影響を与えるコマンド（tdx mcp）
`tdx_run`は、プロファイルのユーザーが権限を持つ任意の`tdx` CLIコマンドを実行できます。これには本番のCDPリソースを変更したり、オーディエンスのアクティベーションをトリガーしたりするコマンドも含まれます。

- **`tdx wf run`**: ワークフローの実行を即座に開始します。
- **`tdx journey resume`**: 一時停止中のジャーニーを再開し、ステージのアクティベーションを開始します。
- **`tdx sg push` / `tdx journey push` / `tdx ps push`**: 本番のセグメントやジャーニー設定を更新します。


変更を伴うコマンドは、必ず最初に`--dry-run`を付けて実行するようCortex Codeに指示するか、読み取り専用の検証コマンド（`tdx wf validate`、`tdx sg validate`、`tdx journey validate`）を使用してください。可能な限り、`cortex`プロファイルはサンドボックスアカウントに接続してください。

- **ブロックされる`tdx`コマンド**: セキュリティ上の理由から、`tdx mcp`は認証（`tdx auth`）、プロファイル管理（`tdx profile`）、および再帰的な`tdx mcp`コマンドをブロックします。
- **Studio MCPエンドポイントの制限**: 静的トークン方式のエンドポイントは1つの共有ワークフォルダを読み取り専用で公開し、すべてのチャットは終了後に破棄される一時ワークスペースで実行されます。新規チャットは1分あたり最大30件（1メッセージあたり`1`〜`32,768`文字）までで、エージェントからの確認質問は自動的に辞退されます（必要な入力はすべてプロンプトに含めてください）。


## トラブルシューティング

| 症状  | 主な原因  | 対処方法  |
|  --- | --- | --- |
| `cortex mcp add`実行時に`no such file or directory`エラーが表示される | エンドポイントIDの前後に山括弧（`< >`）が残っており、シェルがファイルリダイレクトとして解釈した | エンドポイントIDの前後の`< >`を削除し、URL全体を二重引用符で囲みます |
| `/mcp`に`treasure-studio`または`tdx`が表示されない | MCPサーバーを無効化する`--mode code`付きでCortex Codeが起動された | 終了して通常の`cortex`コマンドで再起動します |
| `/mcp`で`tdx`がfailedと表示される | Cortex Codeの`PATH`上で`tdx`が見つからない（`nvm`や`fnm`利用時によく発生）、またはNode.jsが22.12未満である | `~/.snowflake/cortex/mcp.json`の`"command"`に`tdx`の絶対パスを指定し、`node --version`が22.12以上であることを確認します |
| Studioエンドポイントから`401 Unauthorized`が返る | 現在のシェルで`TAS_TOKEN`が未設定、トークンが期限切れ・失効済み、または別のエンドポイントのトークンである | `cortex`を起動したシェルで`TAS_TOKEN`が設定されているか確認するか、**設定 → エージェントチャネル**で新しいトークンを発行します |
| Studioエンドポイントから`403 Forbidden`が返る | エンドポイントが無効化されている、実行者が不在、または実行者が共有ワークフォルダへのアクセス権を失った | **設定 → エージェントチャネル**でエンドポイントのステータスを確認し、再有効化またはフォルダアクセス権の復元を行います |
| Studioのツール呼び出しが`status: "running"`を返す | Studioのタスクが200秒を超えた | 返された`chat_id`を指定して`get_chat_result`を呼び出すようCortex Codeに指示します |


## 次のステップ

- [MCP Server (Platform)](/getting-started/ai/mcp-server-platform) — `tdx_run`および`tdx_search`のリファレンス
- [tdx mcpコマンドリファレンス](/treasure-code/commands/mcp) — ツールリファレンス、ブロックされるコマンド、ログ（`~/.cache/tdx/logs/tdx.log`）
- [静的トークン方式のMCPエンドポイント](/products/ai-studio/agent-channels/mcp-endpoints) — Treasure AI Studioエンドポイントの作成と管理
- [MCPクライアントをTreasure AI Studioに接続する](/products/ai-studio/agent-channels/mcp-clients) — 6つのStudio MCPツールの詳細リファレンス
- 他のツールを接続する：[Databricks Genie Code](/getting-started/ai/databricks-genie-code) · [Snowflake CoWork](/getting-started/ai/snowflake-cowork) · [Claude Code](/getting-started/ai/claude-code) · [OpenAI Codex](/getting-started/ai/openai-codex) · [VS Code and GitHub Copilot](/getting-started/ai/vscode-github-copilot) · [Cursor](/getting-started/ai/cursor)