Cortex Code CLIの拡張性

Cortex Code CLIは、カスタム動作、特殊エージェント、ライフサイクルフック、外部ツール統合で拡張できます。このトピックでは、次の4つの主な拡張性メカニズムについて説明します。

スキル

ドメイン固有の知識と手順を会話に注入するマークダウンファイル。スキルを使用して、組織のベストプラクティス、コーディング標準、または特殊なワークフローについてCortex Codeに教示します。

サブエージェント

特定のタスクを独立して処理する自律的な専門AIエージェント。サブエージェントは、並列実行、焦点を当てた専門知識、複雑なマルチステップワークフローを可能にします。

フック

主要なライフサイクルポイントでCortex Codeの動作をインターセプトしてカスタマイズするスクリプト。フックを使用して、ツール入力の検証、ログ操作、ポリシーの適用を行います。

MCP (モデルコンテキストプロトコル)

Cortex CodeをGitHub、Jira、データベースのような外部ツールやデータソースに接続するためのオープン標準。

スキル

スキルは、専門的な指示を注入し、追加ツールを有効にすることで、ドメイン固有の知識と機能によってCortex Codeを拡張します。

スキルとは

スキルは、次を含むマークダウンファイルです。

  • ドメイン固有の手順とベストプラクティス

  • スキルを使用するタイミング

  • ワークフローの例

  • オプションのツール構成

ルを呼び出すと、その手順が会話コンテキストに注入されます。

スキルの使用

/skill list を実行して、利用可能なスキルをリストアップし、名前でスキルを呼び出して会話にロードします。

スキルの場所

スキルは複数の場所からロードされ、優先順位の高いものから低いものへと以下にリストされています。

場所

パス

範囲

プロジェクト

.cortex/skills/ または .claude/skills/

プロジェクト

ユーザー

~/.snowflake/cortex/skills/ または ~/.claude/skills/

ユーザー

グローバル

~/.snowflake/cortex/skills/

システム

セッション

一時的に追加

セッション

リモート

Gitからクローン済み

キャッシュ

バンドル済み

Cortex Codeへの組み込み

システム

カスタムスキルの作成

スキルは、 SKILL.md ファイルを含むディレクトリで、スキルの手順、オプションの例とテンプレートを含みます。スキルは以下のいずれかの場所で作成できます。

範囲

パス

プロジェクト

.cortex/commands/ または .claude/commands/ プロジェクトディレクトリ内

グローバル

~/.snowflake/cortex/commands/

ユーザー

~/.claude/commands/

カスタムスキルの構築を開始するには、以下を行います。

  1. スキルディレクトリを作成します。この例では、プロジェクトの場所に「my-skill」という名前のスキルディレクトリを作成します。

    mkdir -p .cortex/skills/my-skill
    
    Copy
  2. このディレクトリに SKILL.md を作成し、スキルの説明を追加します。この例は基本構造を示しています。

    ---
    name: my-skill
    description: Brief description of what this skill does
    tools:
    - optional_tool_name
    ---
    
    # When to Use
    
    - Describe when this skill should be invoked
    - List specific user intents or scenarios
    
    # What This Skill Provides
    
    Explain the capabilities and knowledge this skill adds.
    
    # Instructions
    
    Step-by-step guidance for the AI when this skill is active.
    
    ## Best Practices
    
    - Best practice 1
    - Best practice 2
    
    ## Common Patterns
    
    ### Pattern 1
    Description and example.
    
    ### Pattern 2
    Description and example.
    
    # Examples
    
    ## Example 1: Basic Usage
    User: $my-skill Do something Assistant: [Expected behavior]
    
    
    ## Example 2: Advanced Usage
    User: $my-skill Complex task with @file.txt Assistant: [Expected behavior]
    
    Copy
  3. $$ コマンドを使用して、スキルがリストに表示されることを確認します。

    > $$
    
    Copy

    スキルがリストされている場合は、正しくロードされ、使用可能です。

  4. 会話であなたのスキルを使用します。

    > $my-skill Test it out
    
    Copy

カスタムスキル設定

各スキルのオプションは、 SKILL.md 最上部のYAMLフロントマターで定義されています。次のオプションがサポートされています。

オプション

説明

名前: <skill name>

必須:一意の識別子

説明: <description>

必須:$$リストに表示されています

ツール:

オプション:このスキルを有効にするツール

  - tool_name_1

  - tool_name_2

この例は、2つのツールを使うスキルを示しています。

---
name: database-admin
description: Database administration tasks
tools:
- snowflake_sql_execute
- snowflake_object_search
---
Copy

スキルのベストプラクティス

効果的なスキルを書くには、以下のガイドラインに従ってください。

  • 具体的に説明してください:手順を明確にすると、より良い結果が得られます

  • 例を示します:予想される入出力を示します

  • エッジケースを含める:一般的なエラーと例外を処理します

  • 焦点を当てる:1つのスキルは1つのドメインまたは機能に相当します。

スキルの管理

スラッシュコマンド

説明

/skill

インタラクティブスキルマネージャー

/skill list

すべてのスキルをリスト化

/skill sync <名前>

グローバルの場所に同期

/skill add <git-url>

リモートスキルを追加

スキルの競合

同じルールが複数のサポートされた場所に存在し、コンテンツが異なる場合、競合が発生し、競合ルールがルールリストに表示されます。/skill sync を使用して、ローカルスコープをグローバルスコープに同期することにより、競合を解決します。

スキルの構成

カスタムスキルは他のスキルを参照したり、ファイルコンテキストと権限を組み合わせることができます。

> $code-review Review @src/auth.py following $security-guidelines
Copy

リモートスキル

Gitリポジトリからリモートスキルを追加できます。リポジトリには任意の数のスキルを含めることができます。リモート権限のレイアウトはローカル権限の構造と一致する必要があります。

/skill add https://github.com/org/my-skills.git
Copy

リモート権限はローカルにキャッシュされます。更新するには、 /skill sync を使用します。

スキルコマンドリファレンス

CLI コマンド:

cortex skill list
cortex skill add <path>
cortex skill remove <path>
Copy

スラッシュコマンド:

/skill list
/skill add <path>
Copy

スキルのトラブルシューティング

スキルがアクティブ化しない
  • スキルの目的に関連する具体的な言葉を使用

  • スキルを明示的に言及します:「semantic-view-optimizationを使用する」

  • 可用性を確認: /skill list

予期しない動作
  • 目標についての詳細を入力してください

  • より具体的なリクエストを試す

  • フィードバックを送信: /feedback

サブエージェント

サブエージェントは、特定のタスクを独立して処理する自律的な専門AIエージェントです。これらにより、並列実行、焦点を当てた専門知識、複雑なマルチステップワークフローが可能になります。

サブエージェント:

  • 主な会話から独立して実行

  • 独自のコンテキストとツールのアクセス

  • フォアグラウンドまたはバックグラウンドで実行可能

  • 特定のドメインやタスクに特化する

組み込みサブエージェントの型

general-purpose

すべてのツールにアクセスできる汎用エージェント。最適な用途:

  • 複雑な調査タスク

  • 複数ステップのコード変更

  • 複数のツールを必要とするタスク

explore

高速なコードベース探索専門家。最適な用途:

  • パターンによるファイルの検索

  • キーワードのコードを検索する

  • コードベースの構造を理解する

  • クイック調査

Explorerエージェントの検索の詳細度を指定できます。

  • "quick":基本的な検索

  • "medium":中程度の探索

  • "very thorough":包括的分析

plan

複雑な実装計画の設計と概要を説明します。最適な用途:

  • 実装戦略の設計

  • 重要なファイルの特定

  • アーキテクチャのトレードオフの評価

  • ステップバイステッププランの作成

feedback

構造化されたフィードバックコレクション。最適な用途:

  • ユーザー入力の収集

  • 構造化された質問

  • セッションフィードバック

サブエージェントの実行

Cortex Codeは、必要に応じて自動的にサブエージェントに委任します。たとえば、このクエリはExploreエージェントに委任します。

> Find all files that import the authentication module
Copy

名前で特定のサブエージェントタイプを明示的にリクエストすることもできます。

> Use an Explore agent to find all database query definitions
> Use the Explore agent to find all API endpoint definitions
> Launch a Plan agent to design the authentication refactor
Copy

また、複数のサブエージェントを並行して実行し、タスクの異なる側面に取り組むようにリクエストすることもできます。

> In parallel, search for all test files and all config files
Copy

作業を続けている間、エージェントをバックグラウンドで実行できます。

> Run a background agent to refactor all the test files
Copy

エージェントはすぐに開始し、追跡用のエージェントIDを返します。エージェントが動作完了すると、IDを使用して出力を取得できます。

> Get the output from agent abc1234
Copy

実行中のすべてのサブエージェントのステータスを監視するには、 /agents コマンド(またはCtrl-Bを押し)を使用して、バックグラウンドプロセスビューアーを開きます。IDまたは /agents インターフェースを使用して、実行中のエージェントを停止できます。

> kill agent abc1234
Copy

強制終了したエージェントは実行を停止しますが、コンテキストは無期限に保持されます。IDを使用して、強制終了したエージェントを再開することができます。

> Resume agent abc1234 and continue from where it left off
Copy

エージェント型

自律

自律エージェントは、ユーザーの操作なしで実行されます。エージェント:

  • 独立して完了

  • 質問のためのブロックはありません

  • 明確に定義されたタスクに適しています

非自律

非自律エージェントは、実行を一時停止してユーザーに質問することができます。エージェント:

  • 明確化のための質問をする場合があります

  • インタラクティブに権限をリクエストできます

  • ガイダンスを必要とするタスクに適しています

カスタム

カスタムエージェントは、特殊なプロンプトと構成を持つユーザー定義のサブエージェントです。カスタムスキーマと同様に、マークダウンファイルで特定のドメインやワークフローに合わせたエージェントを作成します。

カスタムサブエージェントの作成

カスタムサブエージェントは、マークダウンファイルでYAMLフロントマターを使用して定義されます。フロントマターは、エージェントの名前、説明、ツールアクセス、モデルを指定します。本文には、エージェントの動作をガイドするシステムプロンプトが含まれています。

カスタムエージェントマークダウンファイルは、次の3つの場所のいずれかに保存できます。

範囲

パス

プロジェクト

.cortex/agents/ または .cloud/agents/

グローバル

~/.snowflake/cortex/agents/

ユーザー

~/.claude/agents/

エージェント定義の形式を次に示します。

---
name: my-agent
description: What this agent specializes in
tools:

- Bash
- Read
- Write

model: claude-sonnet-4-5
---

# System Prompt

You are a specialized agent for [domain].

## Your Responsibilities

1. Task 1
2. Task 2

## Guidelines

- Guideline 1
- Guideline 2

## Output Format

Describe expected output format.
Copy

例:Test Runnerエージェント

次のマークダウンファイルは、テストを実行し結果を要約するカスタムTest Runnerエージェントを定義します。

---
name: test-runner
description: Runs tests and reports results
tools:
- Bash
- Read
- Grep
---

# Test Runner Agent

You run tests and provide clear reports of the results.

## Process

1. Identify the test framework (pytest, jest, go test, etc.)
2. Run appropriate test command
3. Parse and summarize results
4. Highlight failures with relevant code context

## Output Format

## Test Results Summary
- Total: X
- Passed: Y
- Failed: Z

## Failures
### Test Name
- File: path/to/file.py
- Error: Description
- Relevant code snippet
Copy

エージェント構成

カスタムエージェントの構成は、マークダウンファイルのYAMLフロントマターで指定されます。

ツールアクセス

エージェントは、アクセスできるツールを指定できます。

tools:
- "*"           # All tools
- Bash          # Specific tools
- Read
- Write
Copy
モデル選択

特定のエージェントのモデルを選択することができます。これはセッションのデフォルトモデルを上書きします。

model: claude-sonnet-4-5   # Specific model
model: auto                # Cost-optimized
Copy

ワークツリーの分離

エージェントは、分離されたgitワークツリーまたはブランチで実行できます。ワークツリーの分離をリクエストすると、Cortex Code CLIは、エージェントが動作するための別のgitワークツリーを作成します。これにより、競合する変更なく複数のエージェントを並行して実行でき、後のクリーンアップも簡単です。分離されたワークツリーは、特に探索と実験に役立ちます。エージェントによって作成されたgitブランチの名前は agent/<agentId> です。

ワークツリーの分離を使用するには、プロンプトに含めます。

> Run a background agent with worktree isolation to implement feature X
Copy

スワームパターン

エージェントのワーカーを起動して、複雑なタスクのさまざまな側面に並行して対処することができます。各エージェントは独立して動作し、すべてのエージェントが終了すると結果が集約されます。すべてのタイプのエージェントはスワームに参加できます。

スワームのユースケースには次が含まれます。

  • コード分析:複数のエージェントが異なる側面を分析します

  • リファクタリング:並列エージェントは異なるファイルを処理します

  • テスト:エージェントは異なるテストスイートを実行します

  • ドキュメント:エージェントドキュメントのさまざまなコンポーネント

スワームを作成するには、起動するさまざまなエージェントを単純に記述します。

> Launch a swarm of agents:
> 1. Explore agent to find all database queries
> 2. Explore agent to find all API endpoints
> 3. Explore agent to find all test files
Copy

サブエージェントのベストプラクティス

次の場合にサブエージェントを使用します。

  • 複雑なタスク:並列実行のためにサブタスクに分割

  • 探索:コードベース検索にExploreエージェントを使用する

  • 計画:大きな変更の前にPlanエージェントを使用

  • バックグラウンド作業:注意の必要がない、実行時間の長いタスク

サブエージェントは次には適していません。

  • 単純なクエリ:直接ツールの方が高速です

  • 単一ファイルの編集:メインエージェントはより効率的です

  • インタラクティブな作業:すぐにフィードバックが必要な場合

一般的に、詳細なプロンプトの方が効果的です。

良い

データベースクエリを含むすべてのPythonファイルを検索し、行番号でリストする

より良い

Explorerエージェント(非常に詳細)を使用して、データベースクエリを含むすべてのPythonファイルを検索します。各ファイルについて、クエリパターンを抽出し、潜在的なSQLインジェクションのリスクを特定します。

アクティブなサブエージェントの表示

/agents コマンド

Cortex Codeセッションで /agents コマンドを発行し、インタラクティブエージェントビューアを開きます。このインターフェースは、実行中のすべてのエージェント、そのタイプ、ステータス、および出力プレビューを表示します。

バックグラウンドプロセスビューアー

Cortex Code CLIセッションで、Ctrl-Bを押して表示します。

  • すべてのバックグラウンドプロセス

  • エージェントセッション

  • Bashプロセス

エージェントの制限

Cortex Code CLIのサブエージェントには以下の制限が適用されます。

  • 最大50個の同時バックグラウンドエージェント

  • エージェントはセッション権限を継承する

  • バックグラウンドエージェントは他のバックグラウンドエージェントを生成できない

フック

フックにより、主要なライフサイクルポイントでのCortex Codeの動作をインターセプトし、カスタマイズすることができます。フックは、イベントに応答して実行されるプロンプトまたはシェルスクリプトです。

  • ツールを使用する前に:ツール入力の検証または変更

  • ツール使用後:コンテキストまたはログ結果を追加

  • ユーザー入力に:セッションコンテキストを注入する

  • セッションイベントに:初期化またはクリーンアップ

フックイベント

次のイベントはフックをトリガーできます。

イベント

説明

ブロックできます

PreToolUse

ツール実行前

有り

PostToolUse

ツール実行後

無し

PermissionRequest

権限が必要な場合

有り

UserPromptSubmit

ユーザーがプロンプトを送信したとき

無し

SessionStart

セッション開始時

無し

SessionEnd

セッションが終了するとき

無し

PreCompact

コンテキスト圧縮前

無し

停止

ユーザーがClaudeを停止したとき

無し

SubagentStop

サブエージェントが停止するとき

無し

通知

システム通知上

無し

設定

初期化中

無し

フックの構成

フックは設定ファイルで構成されます。これは任意の構成ディレクトリに配置できます(優先順位の高いものから低いもの順に以下に一覧表示)。

場所

パス

ローカル

.claude/settings.local.json または .cortex/settings.local.json

プロジェクト

.claude/settings.json または .cortex/settings.json

ユーザー

~/.claude/settings.json

グローバル

~/.snowflake/cortex/hooks.json

フックはJSON形式で定義されます、イベント、ツールの一致、フックアクションを指定します。ツール使用前のフックの簡単な例を以下に示します。

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "bash .claude/hooks/validate-bash.sh",
            "timeout": 60
          }
        ]
      }
    ]
  }
}
Copy

コマンドフックとプロンプトフックの2つのフックタイプがサポートされています。

  • コマンドフックは、シェルコマンドまたはスクリプトを実行します。

    {
      "type": "command",
      "command": "bash /path/to/script.sh",
      "timeout": 60,
      "enabled": true
    }
    
    Copy
  • プロンプトフックは、言語モデルに対する自然言語プロンプトとして評価されます。

    {
      "type": "prompt",
      "prompt": "Is this command safe? $ARGUMENTS",
      "timeout": 30
    }
    
    Copy

特定のツールに対してのみフックを実行するには、 matcher フィールドにツール名またはパターンを配置します。たとえば、すべてのSQLツールをマッチするには、 "matcher": "SQL*" を使用します。正規表現を使って複数のツールにマッチさせることができます。

パターン

一致

*

すべてのツール

Bash

Bashのみ

Edit|Write

編集または書き込み

mcp__.*

すべてのMCPツール

Notebook.*

NotebookEdit、 NotebookExecute

フックスクリプトの記述

フックスクリプトは標準入力を通じてJSON入力を受け入れ、標準出力を通じてJSON出力を返します。出力には、操作が許可されたか拒否されたかを示すフィールドが含まれています。オプションで、フックスクリプトはツール入力の変更バージョンを渡すことができます。

サンプル入力:

{
  "session_id": "abc123",
  "transcript_path": "/path/to/transcript.json",
  "cwd": "/working/directory",
  "permission_mode": "default",
  "hook_event_name": "PreToolUse",
  "tool_name": "Bash",
  "tool_input": {
    "command": "ls -la"
  }
}
Copy

サンプル出力:

{
  "decision": "allow",
  "systemMessage": "Note: This operation was validated.",
  "hookSpecificOutput": {
    "hookEventName": "PreToolUse",
    "updatedInput": {
      "command": "ls -la --color=never"
    }
  }
}
Copy

戻りコードは、操作をブロックするかどうかを示します。

  • 0:ブロックしない

  • 2:ブロック

この情報は、以下に示すようにJSON出力の一部として返すこともできます。

{
  "decision": "block",
  "reason": "Operation not allowed"
}
Copy

フックスクリプトでは、次の環境変数を使用できます。

変数

説明

CORTEX_PROJECT_DIR

プロジェクトディレクトリパス

CORTEX_CODE_REMOTE

Webコンテキストの場合 "true"

CORTEX_ENV_FILE

永続的な環境ファイルパス

フックの例

次の例は、一般的なフックのユースケースで可能な出力を示しています。

ツール入力を変更

{
  "hookSpecificOutput": {
    "hookEventName": "PreToolUse",
    "updatedInput": {
      "command": "modified command"
    }
  }
}
Copy

コンテキストを追加

{
  "hookSpecificOutput": {
    "hookEventName": "PostToolUse",
    "additionalContext": "Note: File was recently modified."
  }
}
Copy

システムメッセージを表示

{
  "systemMessage": "Warning: This operation may take a while."
}
Copy

権限の決定

{
  "hookSpecificOutput": {
    "hookEventName": "PreToolUse",
    "permissionDecision": "allow",
    "permissionDecisionReason": "Auto-approved by policy"
  }
}
Copy

リモートフック

Gitリポジトリでは、次のようにスクリプトを参照できます。

{
  "type": "command",
  "command": "bash",
  "source": {
    "source": "github:org/hooks-repo/scripts/validate.sh",
    "ref": "main"
  }
}
Copy

フックのベストプラクティス

  • フックを高速にします:タイムアウトのデフォルトは60秒

  • エラーを正常に処理します:不明な場合、exit 0を返します

  • デバッグ用ログ:トラブルシューティングのためのファイルへの書き込み

  • 一致を使用する:すべてのツールではなく、特定のツールをターゲットにする

  • 徹底的にテストする:フックマネージャーを使用して動作を確認する

モデルコンテキストプロトコル(MCP)

モデルコンテキストプロトコル(MCP)によって、Cortex Code CLIを外部ツールやデータソースに接続できます。MCPは、GitHub、Jira、データベースなどの外部ツールにAIエージェントを接続するためのオープン標準です。構成が完了すると、MCPサーバーは、Cortex Codeに組み込みの機能を超えたホストツールへのアクセスを与えます。

トランスポートの型

Cortexコードは3つのMCPトランスポート型をサポートしています。

ユースケース

接続

stdio

ローカルツール、CLIラッパー

stdin/stdoutを含むサブプロセス

http

ウェブサービス、APIs

HTTP リクエスト

sse

リアルタイムサービス

サーバー送信イベント

OAuthを使用して、HTTPMCPサーバーへの認証ができます。OAuth用に構成されたサーバーに初めて接続するとき。Cortex Code CLIは、ユーザーが認証するブラウザウィンドウを開きます。結果のトークンは ~/.snowflake/cortex/mcp_oauth/ に保存され、必要に応じて自動的にリフレッシュされます。以下はサンプル OAuth 構成です。

{
   "oauth": {
      "client_id": "pre-registered-client-id",
      "client_name": "My Client",
      "redirect_port": 8585,
      "scope": "openid mcp read write",
      "authorization_server_url": "https://auth.example.com"
   }
}
Copy

MCPサーバーの管理

インタラクティブなCortex Code CLIセッションに /mcp コマンドを発行し、インタラクティブMCPステータスビューアーを開きます。cortex mcp コマンドを使用して、コマンドラインからMCPサーバー構成を管理します。

コマンド

説明

コマンドライン

説明

cortex mcp add

新しいサーバーを追加します(以下を参照)

cortex mcp list

構成されたサーバーをリスト化します

cortex mcp get <server>

特定のサーバーの詳細を取得します

cortex mcp remove <server>

サーバーの削除

cortex mcp start <server>

サーバーのステータスと利用可能なツールを確認します

サーバーの追加

cortex mcp add コマンドはサーバーを構成するためのオプションを受け入れます。

cortex mcp add <name> <command> [args...]
Copy

オプション:

--transport, -t    Transport type (stdio, http, sse)
--type             Alias for --transport
--env, -e          Environment variable (KEY=value)
--header, -H       HTTP header
--timeout          Connection timeout in ms
Copy

注釈

MCPツールには、競合を避けるための名前空間が使用され、以下の形式が使用されます。

mcp__{server-name}__{tool-name}
Copy

たとえば、サーバー githubsearch というツールには、 mcp__github__search という名前が付与されます。

MCP 設定

MCPサーバーの構成は、キー mcpServers 下の ~/.snowflake/cortex/mcp.json に保存されています。次の例は、単一のMCPサーバーを含む構成ファイルの構造を示しています。

{
   "mcpServers": {
      "server-name": {
         "type": "stdio",
         "command": "command-to-run",
         "args": ["arg1", "arg2"]
      }
   }
}
Copy

環境変数

``${VAR}`` または $VAR 構文を使用して、環境変数の値を構成ファイルに挿入します。

{
"mcpServers": {
   "my-server": {
      "type": "http",
      "url": "https://api.example.com",
      "headers": {
      "Authorization": "Bearer ${MY_API_TOKEN}"
      }
   }
}
Copy

重要

認証情報に環境変数を使用するのがベストプラクティスです。決して mcp.json でトークンをハードコードしないでください。以下のように、シェルのプロファイルに ~/.bashrc または ~/.zshrc などの行を追加します。

export GITHUB_TOKEN="your_token_here"
Copy

コマンドラインからの構成

コマンドラインからMCPサーバーを使用する場合は、 cortex mcp add コマンドを使用します。例:

アクション

コマンド

stdioサーバーを追加

cortex mcp add git-server uvx mcp-server-git

HTTPサーバーを追加

cortex mcp add api-server https://api.example.com --type http

環境変数付きで追加

cortex mcp add my-server npx my-mcp-server -e API_KEY=secret

ヘッダー付きで追加

cortex mcp add my-server https://api.example.com -H "Authorization: Bearer token"

MCPツールの使用

構成が完了すると、Cortex Code CLIセッションでMCPツールが自動的に利用可能になります。自然言語コマンドを使ってそれらを呼び出します。

Show me recent GitHub pull requests
Create a Jira ticket for this bug
Query the PostgreSQL database for user activity
Copy

初回使用時に権限がリクエストされます。~/.snowflake/cortex/permissions.json のデフォルトを構成します。

{
  "allow": ["mcp__github__read_file", "mcp__github__list_repos"],
  "deny": ["mcp__github__delete_repo"]
}
Copy

サンプルMCP構成

次の例は、一般的なユースケース用のMCPサーバー構成です。

Gitサーバー(stdio)

{
  "mcpServers": {
    "git": {
      "type": "stdio",
      "command": "uvx",
      "args": ["mcp-server-git", "--repository", "/path/to/repo"]
    }
  }
}
Copy

OAuthを使用したHTTP API

{
  "mcpServers": {
    "my-api": {
      "type": "http",
      "url": "https://api.example.com/mcp",
      "oauth": {
        "client_id": "my-client-id",
        "redirect_port": 8585,
        "scope": "openid mcp"
      }
    }
  }
}
Copy

ヘッダー付きSSEサーバー

{
  "mcpServers": {
    "realtime": {
      "type": "sse",
      "url": "https://realtime.example.com/events",
      "headers": {
        "Authorization": "Bearer ${API_TOKEN}",
        "X-Custom-Header": "value"
      },
      "timeout": 30000
    }
  }
}
Copy

Sourcegraphの統合

{
  "mcpServers": {
    "sourcegraph": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@sourcegraph/mcp-server"],
      "env": {
        "SRC_ACCESS_TOKEN": "${SOURCEGRAPH_TOKEN}",
        "SRC_ENDPOINT": "https://sourcegraph.company.com"
      }
    }
  }
}
Copy

MCPのトラブルシューティング

サーバーが接続しない
  • セッション中に /mcp をチェックしてリストされていることを確認する

  • cortex mcp start <サーバー> を使用して接続をテストする

  • 環境変数で認証情報が正しく設定されていることを確認する

  • cat ~/.snowflake/cortex/logs/mcp.log を使用してヒントを得るためにログをレビューする

ツールが表示されない
  • cortex mcp list を実行して構成を確認する

  • ツール名が有効であることを確認する(英数字、アンダースコア、ハイフンのみを含む)

  • ツール名が64文字より短いことを確認する

OAuthの問題
  • キャッシュされたトークンをクリアする: rm ~/.snowflake/cortex/mcp_oauth/{server}*

  • 再接続して新しいOAuthフローをトリガーする

  • リダイレクトポートが利用可能であることを確認する(デフォルト8585)

環境変数が展開されない
  • $VAR ではなく ${VAR} 構文(中括弧付き)を使用する

  • シェルで 変数が設定されていることを確認する( echo $VAR

  • 変数名の誤入力をチェックする

MCPのベストプラクティス

  • 説明的なサーバー名を使用することによってツールの名前空間をクリアにする

  • 適切なタイムアウトを設定する:ツールリストのデフォルトは10分

  • 安全な認証情報:ハードコードされたシークレットではなく、環境変数を使用する

  • 接続をテスト:サーバーに依存する前に cortex mcp start を使用する