🐍

Claude Code Sub-Agents入門 - 4つのAIエージェントを並列実行してDiscord MCPを作った話

に公開

はじめに

最近、Claude CodeにSub-Agents(サブエージェント)という機能があることを知りました。これは特定のタスクに特化したAIアシスタントを作成し、並列で実行できる機能です。

今回はこのSub-Agentsを活用して、Discord APIを操作するMCPサーバーを自作してみました。CursorやClaude DesktopからDiscordを対話式に操作できるようになります。

この記事では以下について解説します:

  • Sub-Agentsの概要とSkillsとの違い
  • サブエージェントの作成方法
  • 実際の開発でSub-Agentsをどう活用したか
  • 完成したDiscord MCPの紹介

対象読者・前提条件

対象読者:

  • Claude Codeを使っている方
  • Sub-Agentsに興味がある方
  • MCPサーバーを自作してみたい方

前提条件:

  • Claude Code(CLI版)の基本的な使用経験
  • PythonまたはTypeScriptの基礎知識
  • MCPの概念を知っている(知らなくても大丈夫)

環境

  • Claude Code v2.0.1
  • Python 3.11+
  • FastMCP 2.0.0+

Sub-Agentsとは

Sub-Agentsは、Claude Codeの中で特定のタスクを担当する専門化されたAIアシスタントです。

主な特徴:

  • 独立したコンテキスト: 各サブエージェントは独自のコンテキストウィンドウを持つ
  • 並列実行: 複数のサブエージェントを同時に実行可能
  • ツール制限: エージェントごとに使用できるツールを制限できる
  • モデル選択: sonnet、haiku、opusなどモデルを指定可能

Sub-AgentsとSkillsの違い

Claude Codeには「Sub-Agents」と「Skills」という2つの拡張機能があります。似ているようで、目的が異なります。

観点 Sub-Agents Skills
目的 特定タスクを別コンテキストで実行 知識・手順の提供
コンテキスト 独立(メインと分離) 共有(メインに読み込まれる)
並列実行 ○ 可能 × 不可
実行方式 別のClaudeインスタンスが動く 情報としてClaudeに渡される
利用可能範囲 Claude Codeのみ Claude Code、Claude.ai、API

使い分けの指針

Skillsを使うべき場面:

  • コーディング規約を守らせたい
  • プロジェクト固有のルールを定義したい
  • 特定の知識・手順を提供したい

Sub-Agentsを使うべき場面:

  • 別コンテキストで調査・作業させたい
  • 並列で複数タスクを実行したい
  • MCPツールを特定タスクだけに使わせたい

今回のDiscord MCP開発では、技術調査やコードレビューを並列で行いたかったので、Sub-Agentsを選択しました。

作成したSub-Agents

今回の開発用に4つのProject agentsを作成しました。

作成したサブエージェント一覧
作成したサブエージェント一覧。User agentsとProject agentsが分けて表示される

1. mcp-expert

MCP(Model Context Protocol)の仕様・実装パターンを調査するエージェント。

---
name: mcp-expert
description: MCPの仕様、実装パターン、ベストプラクティスを調査。MCPサーバー開発時に使用。
tools: Read, Grep, Glob, Bash, WebSearch, WebFetch
model: sonnet
---

FastMCPの最新実装方法や、MCP公式仕様を調べてくれます。

2. discord-api-expert

Discord APIの専門家エージェント。

---
name: discord-api-expert
description: Discord API、discord.py、discord.jsの専門家。Discord連携機能の実装時に使用。
tools: Read, Grep, Glob, Bash, WebSearch, WebFetch
model: sonnet
---

REST API仕様、Rate limiting、Intents設定などDiscord特有の知識を持っています。

3. security-reviewer

セキュリティ観点でのコードレビュー専門エージェント。

---
name: security-reviewer
description: セキュリティ観点でのコードレビュー。トークン管理、認証、脆弱性を確認。
tools: Read, Grep, Glob, Bash
model: sonnet
---

トークンのハードコード、環境変数の使用、入力バリデーションなどをチェックします。

4. test-runner

テスト実行と失敗修正を担当するエージェント。

---
name: test-runner
description: テストの実行と失敗時の修正。コード変更後に使用。
tools: Read, Edit, Bash, Grep, Glob
model: sonnet
---

pytestを実行し、失敗があれば原因を分析して修正してくれます。

サブエージェントの作成方法

/agents コマンド(推奨)

Claude Code内で /agents と入力すると、対話的にサブエージェントを作成・管理できます。

mcp-expertの作成確認画面
mcp-expertの作成確認画面。Description、Tools、Model、System promptが表示される

入力画面

discord-api-expertの作成画面
discord-api-expertの作成画面。日本語でも入力可能

以下の項目を入力します:

  • name: エージェント名(英数字とハイフン)
  • description: いつ使うかの説明(Claudeがこれを見て判断)
  • tools: 使用可能なツール(省略すると全ツール)
  • model: 使用するモデル(sonnet、haiku、opus、inherit)
  • System prompt: エージェントの役割・振る舞いの定義

作成完了

作成後の確認画面
作成後の確認画面。保存するとすぐに利用可能

sキーまたはEnterで保存すると、すぐに利用可能になります。

Markdownファイルで直接作成

/agentsを使わず、Markdownファイルを直接作成することもできます。

ユーザーレベル(全プロジェクト共通):

~/.claude/agents/agent-name.md

プロジェクトレベル(そのプロジェクトのみ):

.claude/agents/agent-name.md

Discord MCP開発の実践

技術調査(並列実行)

仕様書をClaude Codeに渡すと、まずタスクを整理してくれました。

そして注目すべきは、2つのサブエージェントが並列で技術調査を開始したことです。

並列実行画面
mcp-expertとdiscord-api-expertが同時に調査を実行している様子

画面を見ると:

  • Task: FastMCP implementation research — mcp-expertが担当
  • Task: Discord API specifications research — discord-api-expertが担当

2つのTaskが同時に動いています。それぞれが独立したコンテキストでWeb検索やドキュメント調査を行い、結果をメインのClaudeに返しています。

Todoリストも自動で作成され、調査タスクに✅がついていきます:

  • ✅ FastMCPの最新実装パターンを調査(mcp-expert)
  • ✅ Discord REST API認証・Rate limit仕様を確認(discord-api-expert)
  • □ プロジェクト初期化
  • □ Discord APIクライアント実装
  • ...

この並列実行により、通常なら順番に行う調査が同時に完了し、開発スピードが大幅に向上しました。

各エージェントによるレビュー

実装完了後、4つのサブエージェント全員にリポジトリをレビューしてもらいました。

4つのサブエージェントがレビューを実行
4つのサブエージェントが順番にレビューを実行。それぞれの完了時間とツール使用回数が表示される

各エージェントの実行結果:

エージェント タスク ツール使用 トークン 時間
mcp-expert MCP実装レビュー 13回 40.3k 3m 57s
discord-api-expert Discord API統合レビュー 13回 42.8k 2m 52s
security-reviewer セキュリティレビュー 17回 45.1k 1m 54s
test-runner テスト実行・分析 31回 43.2k 4m 3s

それぞれが独立したコンテキストで動作し、専門的な観点からレビューしてくれます。

MCP Expert の発見事項:

  • ✅ FastMCP 2.0+の適切な使用
  • ✅ 非同期設計とエラーハンドリング
  • 💡 改善点: 型ヒントの強化、エラーレスポンス形式の統一

Discord API Expert の発見事項:

  • ✅ Discord API v10使用
  • ✅ レート制限実装、バリデーション充実
  • ⚠️ 重要な問題: レート制限処理の競合状態

Security Reviewer の発見事項:

  • トークン管理の確認
  • 入力バリデーションのチェック
  • 情報漏洩リスクの評価

Test Runner の発見事項:

  • テストの実行と結果分析
  • カバレッジの確認
  • 失敗テストの修正提案

このように、1つのプロンプトで4つの専門家に同時にレビューを依頼できるのがSub-Agentsの強みです。

実装〜完成

技術調査とレビューの結果を踏まえて、Claude Codeが実装を進めていきます。

実装完了後の画面
実装完了後の画面。プロジェクト構造と実装済みツールが表示される

最終的に以下の構成で完成しました:

discord-manage-mcp/
├── src/discord_mcp/
│   ├── __init__.py          # パッケージ初期化
│   ├── server.py            # MCPサーバーエントリポイント
│   ├── tools.py             # MCPツール定義
│   ├── discord_client.py    # Discord REST APIクライアント
│   ├── models.py            # Pydanticデータモデル
│   └── validators.py        # 入力バリデーション(セキュリティ対策)
├── tests/
│   ├── test_discord_client.py
│   └── test_tools.py
├── pyproject.toml           # プロジェクト設定
├── .env.example             # 環境変数テンプレート
└── .gitignore               # Git除外設定

完成したDiscord MCP

実装されたツール

Phase 1(基本機能):

ツール 説明
send_message メッセージ送信(Embed対応)
get_messages メッセージ取得
list_channels チャンネル一覧取得
add_reaction リアクション追加

Phase 2(拡張機能):

ツール 説明
create_thread スレッド作成
get_guild_members メンバー一覧取得
search_messages メッセージ検索

セキュリティ対策

security-reviewerの指摘を反映して、以下の対策を実装しました:

  • Snowflake ID形式のバリデーション
  • 入力値の長さ制限・サニタイズ
  • Rate limitヘッダーのエラーハンドリング
  • エラーメッセージの情報漏洩防止
  • .gitignoreによる認証情報の保護

動作確認

Cursorから実際にDiscord MCPのテストを実行してみました。

CursorからDiscord MCPをテスト
全てのテストが成功。チャンネル一覧取得、メッセージ送信、メッセージ取得が正常に動作

テスト結果:

機能 結果
チャンネル一覧取得 ✅ 成功(13チャンネル取得)
メッセージ送信 ✅ 成功(mcp-testチャンネルへ送信)
メッセージ取得 ✅ 成功(最新メッセージ確認)

Cursorを再起動すると、以下のMCPツールが使えるようになります:

  • mcp_discord-mcp_send_message - メッセージ送信
  • mcp_discord-mcp_get_messages - メッセージ取得
  • mcp_discord-mcp_list_channels - チャンネル一覧
  • mcp_discord-mcp_add_reaction - リアクション追加
  • mcp_discord-mcp_create_thread - スレッド作成
  • mcp_discord-mcp_get_guild_members - メンバー一覧
  • mcp_discord-mcp_search_messages - メッセージ検索

使い方

1. セットアップ:

# クローン
git clone https://github.com/danielvo594520/discord-manage-mcp.git
cd discord-manage-mcp

# 依存関係インストール
uv sync

# 環境変数設定
cp .env.example .env
# .envにDISCORD_BOT_TOKENを設定

2. MCP設定(Claude Desktop):

claude_desktop_config.json
{
  "mcpServers": {
    "discord-mcp": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/discord-manage-mcp", "discord-mcp"],
      "env": {
        "DISCORD_BOT_TOKEN": "your_bot_token",
        "DISCORD_DEFAULT_GUILD_ID": "your_default_guild_id"
      }
    }
  }
}

3. MCP設定(Cursor):

.cursor/mcp.json
{
  "mcpServers": {
    "discord-mcp": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/discord-manage-mcp", "discord-mcp"],
      "env": {
        "DISCORD_BOT_TOKEN": "your_bot_token",
        "DISCORD_DEFAULT_GUILD_ID": "your_default_guild_id"
      }
    }
  }
}

まとめ

Claude Code Sub-Agentsを使ってDiscord MCPサーバーを自作しました。

Sub-Agentsの活用ポイント

  1. 並列実行が強力: 技術調査を同時に行うことで開発スピードが向上
  2. 専門性の分離: mcp-expert、discord-api-expertのように役割を分けることで精度向上
  3. セキュリティレビューの自動化: security-reviewerで脆弱性を早期発見
  4. コンテキスト分離: メインの会話を汚さずに調査・作業ができる

Skills との使い分け

  • Skills: 知識・ルール・手順の提供(コーディング規約など)
  • Sub-Agents: 独立した作業の並列実行(調査、レビュー、テストなど)

両方を組み合わせることで、より効率的な開発ワークフローが構築できます。

今後の展望

  • TRPGツール用のMCPサーバー開発にも活用予定
  • Slack API専門のサブエージェント(既に作成済み)との連携

Sub-Agentsは、複雑なプロジェクトを効率的に進めるための強力なツールです。ぜひ試してみてください。

参考リンク

リバナレテックブログ

Discussion