Claude Codeを拡張する: カスタムコマンドとMCP連携

Shunku

そのままでもClaude Codeは強力ですが、カスタムコマンドと外部ツール連携で拡張すると、真の可能性が開花します。カスタムスラッシュコマンドは再利用可能なプロンプトを作成し、MCP(Model Context Protocol)はClaude Codeをデータベース、API、サードパーティサービスに接続します。

カスタムスラッシュコマンド

スラッシュコマンドは、一般的なタスクを標準化する再利用可能なプロンプトテンプレートです。同じ複雑な指示を繰り返し入力する代わりに、一度コマンドを作成し、シンプルな/commandで呼び出します。

カスタムコマンドの作成

コマンドは.claude/commands/ディレクトリに保存されるMarkdownファイルです:

.claude/
└── commands/
    ├── review.md
    ├── test.md
    └── document.md

例: コードレビューコマンド

.claude/commands/review.md:

$ARGUMENTS のコードを以下の観点でレビューして:

## セキュリティ
- 入力バリデーションの脆弱性
- SQLインジェクションやXSSのリスク
- ハードコードされたシークレットや認証情報
- 認証/認可の問題

## パフォーマンス
- N+1クエリ問題
- 不要な再レンダリング(React)
- メモリリーク
- 非効率なアルゴリズム

## 保守性
- コードの重複
- 過度に複雑な関数
- エラーハンドリングの欠如
- 不明瞭な命名

見つかった各問題について、具体的な行番号と改善提案を提供して。

使用方法:

/review src/lib/auth.ts

$ARGUMENTSキーワードはコマンド名の後のすべてをキャプチャします。

コマンドの整理

目的別にコマンドを構造化:

.claude/commands/
├── code/
│   ├── review.md
│   ├── refactor.md
│   └── optimize.md
├── docs/
│   ├── readme.md
│   ├── api-docs.md
│   └── changelog.md
├── git/
│   ├── commit.md
│   └── pr.md
└── test/
    ├── unit.md
    └── e2e.md

個人用 vs. チーム用コマンド

場所 スコープ 共有?
.claude/commands/ プロジェクト はい(コミット)
~/.claude/commands/ 全プロジェクト いいえ(個人用)

チームコマンドはバージョン管理にコミットすべきです。個人コマンドはホームディレクトリに配置します。

実践的なコマンド例

テスト生成 .claude/commands/test.md:

$ARGUMENTS の包括的なテストを生成して:

1. まずファイルを読んで機能を理解
2. すべてのパブリック関数とメソッドを特定
3. 各関数について、以下をカバーするテストを作成:
   - ハッピーパスシナリオ
   - エッジケース(空の入力、null値、境界値)
   - エラー条件
4. プロジェクトの既存のテストパターンを使用
5. 適切な__tests__ディレクトリにテストを配置

ドキュメント作成 .claude/commands/document.md:

$ARGUMENTS のドキュメントを作成して:

1. コードを読んで目的を理解
2. すべてのexportにJSDoc/TSDocコメントを生成
3. モジュールにREADMEがなければ作成
4. 以下を含める:
   - 目的と概要
   - インストール/セットアップ(該当する場合)
   - 使用例
   - APIリファレンス
   - よくある落とし穴

コミット準備 .claude/commands/commit.md:

現在の変更をコミットする準備をして:

1. `git diff --staged`でステージされた変更を確認
2. `git diff`でステージされていない変更を確認
3. 含める価値のあるステージされていない変更があればステージ
4. Conventional Commitsに従ってコミットメッセージを作成:
   - type(scope): description
   - Types: feat, fix, docs, style, refactor, test, chore
5. 最初の行は50文字以内に
6. 本文では何をしたかではなく、なぜしたかを説明

Model Context Protocol(MCP)

MCPは、Claude Codeを外部ツールやデータソースに接続するオープンスタンダードです。MCPサーバーを通じて、Claudeは会話内でデータベースのクエリ、APIへのアクセス、ファイル管理、サービスとのやり取りができます。

MCPの仕組み

flowchart LR
    subgraph Claude["Claude Code"]
        CC["Claude Code"]
    end

    subgraph MCP["MCPサーバー"]
        DB["データベース<br/>サーバー"]
        GH["GitHub<br/>サーバー"]
        FS["ファイルシステム<br/>サーバー"]
        API["カスタムAPI<br/>サーバー"]
    end

    subgraph External["外部サービス"]
        PG["PostgreSQL"]
        GHA["GitHub API"]
        Files["ローカルファイル"]
        Svc["あなたのサービス"]
    end

    CC <--> DB
    CC <--> GH
    CC <--> FS
    CC <--> API

    DB <--> PG
    GH <--> GHA
    FS <--> Files
    API <--> Svc

    style Claude fill:#3b82f6,color:#fff
    style MCP fill:#8b5cf6,color:#fff
    style External fill:#22c55e,color:#fff

Claude CodeはMCPサーバーと通信し、MCPサーバーが外部サービスとやり取りします。このアーキテクチャにより、あらゆるサービスに対する直接的な統合コードを必要とせず、Claude Codeを拡張可能に保ちます。

MCPサーバーのインストール

リモートHTTPサーバー(クラウドサービス向け推奨):

claude mcp add --transport http github https://api.githubcopilot.com/mcp/

ローカルStdioサーバー(ローカルツール向け):

claude mcp add --transport stdio airtable -- npx -y airtable-mcp-server

環境変数付き:

claude mcp add --transport stdio db \
  --env DATABASE_URL=postgresql://localhost:5432/mydb \
  -- npx -y @bytebase/dbhub

MCPサーバーの管理

# 設定されているサーバー一覧
claude mcp list

# サーバーの詳細を取得
claude mcp get github

# サーバーを削除
claude mcp remove github

# Claude Code内でステータス確認
/mcp

MCPスコープ

スコープ ストレージ ユースケース
Local(デフォルト) プロジェクトごとの~/.claude.json 個人開発サーバー
Project リポジトリ内の.mcp.json チーム共有サーバー
User グローバルな~/.claude.json クロスプロジェクトツール

Projectスコープはチームコラボレーションに最適:

claude mcp add --transport http sentry --scope project https://mcp.sentry.dev/mcp

これによりコミット可能な.mcp.jsonが作成されます:

{
  "mcpServers": {
    "sentry": {
      "type": "http",
      "url": "https://mcp.sentry.dev/mcp"
    }
  }
}

人気のMCP連携

GitHub

claude mcp add --transport http github https://api.githubcopilot.com/mcp/

ユースケース:

  • 「PR #456をレビューして改善を提案」
  • 「見つかったバグのissueを作成」
  • 「自分にアサインされたオープンPRをすべて表示」

PostgreSQLデータベース

claude mcp add --transport stdio db -- npx -y @bytebase/dbhub \
  --dsn "postgresql://user:pass@localhost:5432/mydb"

ユースケース:

  • 「今月の総売上は?」
  • 「usersテーブルのスキーマを表示」
  • 「90日間注文していない顧客を見つけて」

Sentryエラーモニタリング

claude mcp add --transport http sentry https://mcp.sentry.dev/mcp

ユースケース:

  • 「今日最も多いエラーは?」
  • 「エラーABC123のスタックトレースを表示」
  • 「どのデプロイがこの新しいエラーを導入した?」

ファイルシステム

claude mcp add --transport stdio filesystem -- npx -y @modelcontextprotocol/server-filesystem

ユースケース:

  • 「srcディレクトリの変更を監視」
  • 「今日変更されたすべてのTypeScriptファイルをリスト」

認証

多くのMCPサーバーは認証を必要とします。サーバー追加後:

/mcp

サーバーを選択し、必要に応じてブラウザベースのOAuthフローに従います。

APIキー認証の場合:

claude mcp add --transport http api https://api.example.com/mcp \
  --header "Authorization: Bearer YOUR_API_KEY"

MCP設定での環境変数

.mcp.jsonファイルは環境変数の展開をサポート:

{
  "mcpServers": {
    "database": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@bytebase/dbhub", "--dsn", "${DATABASE_URL}"],
      "env": {
        "NODE_ENV": "development"
      }
    }
  }
}

${VAR}または${VAR:-default}構文を使用。

MCPリソース

MCPサーバーは@メンションで参照できるリソースを公開できます:

@github:issue://123 を分析して、@postgres:schema://users テーブル構造に
基づいて修正を提案して。

フォーマット: @server:protocol://resource/path

コマンドとMCPの組み合わせ

カスタムコマンドがMCP連携を活用すると、真の力が発揮されます。

Issue分析コマンド .claude/commands/analyze-issue.md:

GitHub issue #$ARGUMENTS を分析して:

1. GitHub MCPを使用してissueの詳細を取得
2. issueで言及されている関連コードファイルを読む
3. Sentryで関連エラーをチェック
4. 影響を受けるユーザー数をデータベースでクエリ
5. 以下を含む修正を提案:
   - 根本原因の分析
   - 実装アプローチ
   - テスト戦略
   - ロールバック計画

データベースマイグレーションコマンド .claude/commands/migrate.md:

以下のためのデータベースマイグレーションを作成: $ARGUMENTS

1. データベースMCPを使用して現在のスキーマをクエリ
2. マイグレーション(upとdown)を設計
3. マイグレーションファイルを作成
4. マイグレーションのテストを生成
5. 必要なデータ変換を文書化

ベストプラクティス

コマンド設計

  • 具体的に: 曖昧なコマンドは曖昧な結果を生む
  • 構造を含める: 番号付きステップがClaudeの作業をガイド
  • 出力形式を指定: 何が欲しいか正確に伝える
  • コンテキストを参照: $ARGUMENTSを効果的に使用

MCPセキュリティ

  • 認証情報には環境変数を使用
  • 必要なものだけにスコープを制限
  • 定期的にサーバーアクセスを監査
  • 可能な限り読み取り専用接続を使用

チームコラボレーション

  • 共有MCP設定のために**.mcp.jsonをコミット**
  • チームwikiでカスタムコマンドを文書化
  • チーム全体で命名を標準化
  • プロジェクトスコープに追加する前にパーミッションをレビュー

まとめ

Claude Codeを拡張することで、カスタマイズされた開発環境が作成されます:

拡張 目的 場所
カスタムコマンド 再利用可能なプロンプトテンプレート .claude/commands/
MCPサーバー 外部ツール連携 claude mcp add
MCPリソース 外部データ参照 @server:resource

主要な原則:

  • 繰り返しを自動化: 頻繁なタスク用にコマンドを作成
  • スタックに接続: データベース、API、サービスを統合
  • チームと共有: プロジェクトスコープの設定をコミット
  • セキュアに保つ: 認証情報には環境変数を使用
  • コマンドを反復改善: 何が機能するかに基づいて改善

Claude Codeの拡張性により、あらゆる開発ワークフローに適応できます。カスタムコマンドとMCP連携は、汎用アシスタントをプロジェクト固有のニーズに合わせた専門ツールに変えます。

参考資料