claude-skills/

Anthropic公式スキル・プラグインの日本語ディレクトリ

last sync 22h ago
スキルOfficialdevelopment

🔌mcp-integration

プラグイン
plugin-dev

説明

次のような場合に使用: ユーザーが「MCPサーバーを追加する」「MCPを統合する」「pluginにMCPを設定する」「.mcp.jsonを使用する」「Model Context Protocolをセットアップする」「外部サービスに接続する」と要求した場合、`${CLAUDE_PLUGIN_ROOT}` とMCPについて言及した場合、またはMCPサーバーの種類(SSE、stdio、HTTP、WebSocket)について話し合う場合。 外部ツールおよびサービス連携のために、Model Context ProtocolサーバーをClaude Code pluginへ統合するための包括的なガイダンスを提供します。

原文を表示

This skill should be used when the user asks to "add MCP server", "integrate MCP", "configure MCP in plugin", "use .mcp.json", "set up Model Context Protocol", "connect external service", mentions "${CLAUDE_PLUGIN_ROOT} with MCP", or discusses MCP server types (SSE, stdio, HTTP, WebSocket). Provides comprehensive guidance for integrating Model Context Protocol servers into Claude Code plugins for external tool and service integration.

ユースケース

  • MCPサーバーを追加するとき
  • MCPを統合するとき
  • pluginにMCPを設定するとき
  • .mcp.jsonを使用するとき
  • 外部サービスに接続するとき

本文(日本語訳)

Claude Code プラグイン向け MCP インテグレーション

概要

Model Context Protocol(MCP)は、構造化されたツールアクセスを提供することで、Claude Code プラグインが外部サービスや API と連携できるようにします。 外部サービスの機能を Claude Code 内のツールとして公開したい場合に MCP インテグレーションを使用します。

主な機能:

  • 外部サービス(データベース、API、ファイルシステム等)への接続
  • 単一サービスから 10 以上の関連ツールを提供
  • OAuth および複雑な認証フローの処理
  • 自動セットアップのための MCP サーバーのプラグインへのバンドル

MCP サーバーの設定方法

プラグインが MCP サーバーをバンドルする方法は 2 通りあります。

方法 1: 専用の .mcp.json(推奨)

プラグインルートに .mcp.json を作成します:

{
  "database-tools": {
    "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",
    "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],
    "env": {
      "DB_URL": "${DB_URL}"
    }
  }
}

メリット:

  • 関心の分離が明確
  • メンテナンスが容易
  • 複数サーバーに適している

方法 2: plugin.json へのインライン記述

plugin.jsonmcpServers フィールドを追加します:

{
  "name": "my-plugin",
  "version": "1.0.0",
  "mcpServers": {
    "plugin-api": {
      "command": "${CLAUDE_PLUGIN_ROOT}/servers/api-server",
      "args": ["--port", "8080"]
    }
  }
}

メリット:

  • 設定ファイルが 1 つにまとまる
  • シンプルなシングルサーバープラグインに適している

MCP サーバーの種類

stdio(ローカルプロセス)

ローカルの MCP サーバーを子プロセスとして実行します。 ローカルツールやカスタムサーバーに最適です。

設定例:

{
  "filesystem": {
    "command": "npx",
    "args": ["-y", "@modelcontextprotocol/server-filesystem", "/allowed/path"],
    "env": {
      "LOG_LEVEL": "debug"
    }
  }
}

ユースケース:

  • ファイルシステムへのアクセス
  • ローカルデータベースへの接続
  • カスタム MCP サーバー
  • NPM パッケージ化された MCP サーバー

プロセス管理:

  • Claude Code がプロセスを起動・管理
  • stdin/stdout 経由で通信
  • Claude Code の終了時にプロセスも終了

SSE(Server-Sent Events)

OAuth をサポートするホスト型 MCP サーバーに接続します。 クラウドサービスに最適です。

設定例:

{
  "asana": {
    "type": "sse",
    "url": "https://mcp.asana.com/sse"
  }
}

ユースケース:

  • 公式ホスト型 MCP サーバー(Asana、GitHub 等)
  • MCP エンドポイントを持つクラウドサービス
  • OAuth ベースの認証
  • ローカルインストール不要

認証:

  • OAuth フローは自動処理
  • 初回使用時にユーザーへのプロンプトが表示される
  • トークンは Claude Code が管理

HTTP(REST API)

トークン認証を使用する RESTful MCP サーバーに接続します。

設定例:

{
  "api-service": {
    "type": "http",
    "url": "https://api.example.com/mcp",
    "headers": {
      "Authorization": "Bearer ${API_TOKEN}",
      "X-Custom-Header": "value"
    }
  }
}

ユースケース:

  • REST API ベースの MCP サーバー
  • トークンベースの認証
  • カスタム API バックエンド
  • ステートレスなやり取り

WebSocket(リアルタイム)

リアルタイムの双方向通信のために WebSocket MCP サーバーに接続します。

設定例:

{
  "realtime-service": {
    "type": "ws",
    "url": "wss://mcp.example.com/ws",
    "headers": {
      "Authorization": "Bearer ${TOKEN}"
    }
  }
}

ユースケース:

  • リアルタイムデータストリーミング
  • 持続的な接続
  • サーバーからのプッシュ通知
  • 低レイテンシーが求められる場面

環境変数の展開

すべての MCP 設定で環境変数の置換がサポートされています。

${CLAUDE_PLUGIN_ROOT} — プラグインディレクトリ(移植性のために常に使用):

{
  "command": "${CLAUDE_PLUGIN_ROOT}/servers/my-server"
}

ユーザー環境変数 — ユーザーのシェル環境から取得:

{
  "env": {
    "API_KEY": "${MY_API_KEY}",
    "DATABASE_URL": "${DB_URL}"
  }
}

ベストプラクティス: 必要な環境変数はすべてプラグインの README に記載してください。


MCP ツールの命名規則

MCP サーバーが提供するツールには、自動的にプレフィックスが付与されます。

フォーマット: mcp__plugin_<プラグイン名>_<サーバー名>__<ツール名>

例:

  • プラグイン: asana
  • サーバー: asana
  • ツール: create_task
  • フルネーム: mcp__plugin_asana_asana__asana_create_task

コマンドでの MCP ツールの使用

コマンドのフロントマターで特定の MCP ツールを事前許可します:

---
allowed-tools: [
  "mcp__plugin_asana_asana__asana_create_task",
  "mcp__plugin_asana_asana__asana_search_tasks"
]
---

ワイルドカード(使用は控えめに):

---
allowed-tools: ["mcp__plugin_asana_asana__*"]
---

ベストプラクティス: セキュリティのため、ワイルドカードではなく特定のツールを事前許可してください。


ライフサイクル管理

自動起動:

  • MCP サーバーはプラグインの有効化時に起動
  • 最初のツール使用前に接続が確立される
  • 設定変更後は再起動が必要

ライフサイクルの流れ:

  1. プラグインの読み込み
  2. MCP 設定の解析
  3. サーバープロセスの起動(stdio)または接続の確立(SSE/HTTP/WS)
  4. ツールの検出と登録
  5. mcp__plugin_...__... としてツールが利用可能になる

サーバーの確認: /mcp コマンドを使用すると、プラグインが提供するサーバーを含むすべてのサーバーを確認できます。


認証パターン

OAuth(SSE/HTTP)

OAuth は Claude Code が自動処理します:

{
  "type": "sse",
  "url": "https://mcp.example.com/sse"
}

ユーザーは初回使用時にブラウザで認証します。追加設定は不要です。

トークンベース(ヘッダー)

静的またはの環境変数によるトークン:

{
  "type": "http",
  "url": "https://api.example.com",
  "headers": {
    "Authorization": "Bearer ${API_TOKEN}"
  }
}

必要な環境変数は README に記載してください。

環境変数(stdio)

MCP サーバーへ設定を渡します:

{
  "command": "python",
  "args": ["-m", "my_mcp_server"],
  "env": {
    "DATABASE_URL": "${DB_URL}",
    "API_KEY": "${API_KEY}",
    "LOG_LEVEL": "info"
  }
}

インテグレーションパターン

パターン 1: シンプルなツールラッパー

コマンドがユーザーとのやり取りを介して MCP ツールを使用するパターン:

# コマンド: create-item.md
---
allowed-tools: ["mcp__plugin_name_server__create_item"]
---

手順:
1. ユーザーからアイテムの詳細を収集
2. mcp__plugin_name_server__create_item を使用
3. 作成を確認

次のような場合に使用: MCP 呼び出しの前にバリデーションや前処理を加えたい場合。

パターン 2: 自律型 Agent

Agent が MCP ツールを自律的に使用するパターン:

# Agent: data-analyzer.md

分析プロセス:
1. mcp__plugin_db_server__query でデータを照会
2. 結果を処理・分析
3. インサイトレポートを生成

次のような場合に使用: ユーザーの介入なしに複数ステップの MCP ワークフローを実行したい場合。

パターン 3: マルチサーバープラグイン

複数の MCP サーバーを統合するパターン:

{
  "github": {
    "type": "sse",
    "url": "https://mcp.github.com/sse"
  },
  "jira": {
    "type": "sse",
    "url": "https://mcp.jira.com/sse"
  }
}

次のような場合に使用: 複数のサービスにまたがるワークフローを扱う場合。


セキュリティのベストプラクティス

HTTPS/WSS の使用

常にセキュアな接続を使用してください:

✅ "url": "https://mcp.example.com/sse"
❌ "url": "http://mcp.example.com/sse"

トークン管理

すべきこと:

  • ✅ トークンには環境変数を使用する
  • ✅ 必要な環境変数を README に記載する
  • ✅ 認証は OAuth フローに任せる

してはいけないこと:

  • ❌ 設定ファイルにトークンをハードコーディングする
  • ❌ トークンを git にコミットする
  • ❌ ドキュメント内でトークンを共有する

権限のスコープ制限

必要な MCP ツールのみを事前許可してください:

✅ allowed-tools: [
  "mcp__plugin_api_server__read_data",
  "mcp__plugin_api_server__create_item"
]

❌ allowed-tools: ["mcp__plugin_api_server__*"]

エラー処理

接続エラー

MCP サーバーが利用できない場合の対処:

  • コマンドにフォールバック動作を実装する
  • 接続の問題をユーザーに伝える
  • サーバー URL と設定を確認する

ツール呼び出しエラー

MCP 操作の失敗時の対処:

  • MCP ツールを呼び出す前に入力をバリデーションする
  • 明確なエラーメッセージを提供する
  • レート制限やクォータを確認する

設定エラー

MCP 設定のバリデーション:

  • 開発中にサーバーの接続をテストする
  • JSON の構文を検証する
  • 必要な環境変数を確認する

パフォーマンスの考慮事項

遅延読み込み(Lazy Loading)

MCP サーバーはオンデマンドで接続されます:

  • 起動時にすべてのサーバーが接続されるわけではない
  • 最初のツール使用時に接続がトリガーされる
  • 接続プーリングは自動管理される

バッチ処理

可能な場合は類似リクエストをまとめてください:

# 良い例: フィルター付きの単一クエリ
tasks = search_tasks(project="X", assignee="me", limit=50)

# 避けるべき例: 個別クエリの繰り返し
for id in task_ids:
    task = get_task(id)

MCP インテグレーションのテスト

ローカルテスト

  1. .mcp.json に MCP サーバーを設定する
  2. プラグインをローカルにインストールする(.claude-plugin/
  3. /mcp を実行してサーバーが表示されることを確認する
  4. コマンド内でツール呼び出しをテストする
  5. 接続の問題は claude --debug のログを確認する

バリデーションチェックリスト

  • [ ] MCP 設定が有効な JSON である
  • [ ] サーバー URL が正しく、アクセス可能である
  • [ ] 必要な環境変数が文書化されている
  • [ ] /mcp の出力にツールが表示される
  • [ ] 認証が機能している(OAuth またはトークン)
  • [ ] コマンドからのツール呼び出しが成功する
  • [ ] エラーケースが適切に処理される

デバッグ

デバッグログの有効化

claude --debug
原文(English)を表示

MCP Integration for Claude Code Plugins

Overview

Model Context Protocol (MCP) enables Claude Code plugins to integrate with external services and APIs by providing structured tool access. Use MCP integration to expose external service capabilities as tools within Claude Code.

Key capabilities:

  • Connect to external services (databases, APIs, file systems)
  • Provide 10+ related tools from a single service
  • Handle OAuth and complex authentication flows
  • Bundle MCP servers with plugins for automatic setup

MCP Server Configuration Methods

Plugins can bundle MCP servers in two ways:

Method 1: Dedicated .mcp.json (Recommended)

Create .mcp.json at plugin root:

{
  "database-tools": {
    "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",
    "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],
    "env": {
      "DB_URL": "${DB_URL}"
    }
  }
}

Benefits:

  • Clear separation of concerns
  • Easier to maintain
  • Better for multiple servers

Method 2: Inline in plugin.json

Add mcpServers field to plugin.json:

{
  "name": "my-plugin",
  "version": "1.0.0",
  "mcpServers": {
    "plugin-api": {
      "command": "${CLAUDE_PLUGIN_ROOT}/servers/api-server",
      "args": ["--port", "8080"]
    }
  }
}

Benefits:

  • Single configuration file
  • Good for simple single-server plugins

MCP Server Types

stdio (Local Process)

Execute local MCP servers as child processes. Best for local tools and custom servers.

Configuration:

{
  "filesystem": {
    "command": "npx",
    "args": ["-y", "@modelcontextprotocol/server-filesystem", "/allowed/path"],
    "env": {
      "LOG_LEVEL": "debug"
    }
  }
}

Use cases:

  • File system access
  • Local database connections
  • Custom MCP servers
  • NPM-packaged MCP servers

Process management:

  • Claude Code spawns and manages the process
  • Communicates via stdin/stdout
  • Terminates when Claude Code exits

SSE (Server-Sent Events)

Connect to hosted MCP servers with OAuth support. Best for cloud services.

Configuration:

{
  "asana": {
    "type": "sse",
    "url": "https://mcp.asana.com/sse"
  }
}

Use cases:

  • Official hosted MCP servers (Asana, GitHub, etc.)
  • Cloud services with MCP endpoints
  • OAuth-based authentication
  • No local installation needed

Authentication:

  • OAuth flows handled automatically
  • User prompted on first use
  • Tokens managed by Claude Code

HTTP (REST API)

Connect to RESTful MCP servers with token authentication.

Configuration:

{
  "api-service": {
    "type": "http",
    "url": "https://api.example.com/mcp",
    "headers": {
      "Authorization": "Bearer ${API_TOKEN}",
      "X-Custom-Header": "value"
    }
  }
}

Use cases:

  • REST API-based MCP servers
  • Token-based authentication
  • Custom API backends
  • Stateless interactions

WebSocket (Real-time)

Connect to WebSocket MCP servers for real-time bidirectional communication.

Configuration:

{
  "realtime-service": {
    "type": "ws",
    "url": "wss://mcp.example.com/ws",
    "headers": {
      "Authorization": "Bearer ${TOKEN}"
    }
  }
}

Use cases:

  • Real-time data streaming
  • Persistent connections
  • Push notifications from server
  • Low-latency requirements

Environment Variable Expansion

All MCP configurations support environment variable substitution:

${CLAUDE_PLUGIN_ROOT} - Plugin directory (always use for portability):

{
  "command": "${CLAUDE_PLUGIN_ROOT}/servers/my-server"
}

User environment variables - From user's shell:

{
  "env": {
    "API_KEY": "${MY_API_KEY}",
    "DATABASE_URL": "${DB_URL}"
  }
}

Best practice: Document all required environment variables in plugin README.

MCP Tool Naming

When MCP servers provide tools, they're automatically prefixed:

Format: mcp__plugin_<plugin-name>_<server-name>__<tool-name>

Example:

  • Plugin: asana
  • Server: asana
  • Tool: create_task
  • Full name: mcp__plugin_asana_asana__asana_create_task

Using MCP Tools in Commands

Pre-allow specific MCP tools in command frontmatter:

---
allowed-tools: [
  "mcp__plugin_asana_asana__asana_create_task",
  "mcp__plugin_asana_asana__asana_search_tasks"
]
---

Wildcard (use sparingly):

---
allowed-tools: ["mcp__plugin_asana_asana__*"]
---

Best practice: Pre-allow specific tools, not wildcards, for security.

Lifecycle Management

Automatic startup:

  • MCP servers start when plugin enables
  • Connection established before first tool use
  • Restart required for configuration changes

Lifecycle:

  1. Plugin loads
  2. MCP configuration parsed
  3. Server process started (stdio) or connection established (SSE/HTTP/WS)
  4. Tools discovered and registered
  5. Tools available as mcp__plugin_...__...

Viewing servers: Use /mcp command to see all servers including plugin-provided ones.

Authentication Patterns

OAuth (SSE/HTTP)

OAuth handled automatically by Claude Code:

{
  "type": "sse",
  "url": "https://mcp.example.com/sse"
}

User authenticates in browser on first use. No additional configuration needed.

Token-Based (Headers)

Static or environment variable tokens:

{
  "type": "http",
  "url": "https://api.example.com",
  "headers": {
    "Authorization": "Bearer ${API_TOKEN}"
  }
}

Document required environment variables in README.

Environment Variables (stdio)

Pass configuration to MCP server:

{
  "command": "python",
  "args": ["-m", "my_mcp_server"],
  "env": {
    "DATABASE_URL": "${DB_URL}",
    "API_KEY": "${API_KEY}",
    "LOG_LEVEL": "info"
  }
}

Integration Patterns

Pattern 1: Simple Tool Wrapper

Commands use MCP tools with user interaction:

# Command: create-item.md
---
allowed-tools: ["mcp__plugin_name_server__create_item"]
---

Steps:
1. Gather item details from user
2. Use mcp__plugin_name_server__create_item
3. Confirm creation

Use for: Adding validation or preprocessing before MCP calls.

Pattern 2: Autonomous Agent

Agents use MCP tools autonomously:

# Agent: data-analyzer.md

Analysis Process:
1. Query data via mcp__plugin_db_server__query
2. Process and analyze results
3. Generate insights report

Use for: Multi-step MCP workflows without user interaction.

Pattern 3: Multi-Server Plugin

Integrate multiple MCP servers:

{
  "github": {
    "type": "sse",
    "url": "https://mcp.github.com/sse"
  },
  "jira": {
    "type": "sse",
    "url": "https://mcp.jira.com/sse"
  }
}

Use for: Workflows spanning multiple services.

Security Best Practices

Use HTTPS/WSS

Always use secure connections:

✅ "url": "https://mcp.example.com/sse"
❌ "url": "http://mcp.example.com/sse"

Token Management

DO:

  • ✅ Use environment variables for tokens
  • ✅ Document required env vars in README
  • ✅ Let OAuth flow handle authentication

DON'T:

  • ❌ Hardcode tokens in configuration
  • ❌ Commit tokens to git
  • ❌ Share tokens in documentation

Permission Scoping

Pre-allow only necessary MCP tools:

✅ allowed-tools: [
  "mcp__plugin_api_server__read_data",
  "mcp__plugin_api_server__create_item"
]

❌ allowed-tools: ["mcp__plugin_api_server__*"]

Error Handling

Connection Failures

Handle MCP server unavailability:

  • Provide fallback behavior in commands
  • Inform user of connection issues
  • Check server URL and configuration

Tool Call Errors

Handle failed MCP operations:

  • Validate inputs before calling MCP tools
  • Provide clear error messages
  • Check rate limiting and quotas

Configuration Errors

Validate MCP configuration:

  • Test server connectivity during development
  • Validate JSON syntax
  • Check required environment variables

Performance Considerations

Lazy Loading

MCP servers connect on-demand:

  • Not all servers connect at startup
  • First tool use triggers connection
  • Connection pooling managed automatically

Batching

Batch similar requests when possible:

# Good: Single query with filters
tasks = search_tasks(project="X", assignee="me", limit=50)

# Avoid: Many individual queries
for id in task_ids:
    task = get_task(id)

Testing MCP Integration

Local Testing

  1. Configure MCP server in .mcp.json
  2. Install plugin locally (.claude-plugin/)
  3. Run /mcp to verify server appears
  4. Test tool calls in commands
  5. Check claude --debug logs for connection issues

Validation Checklist

  • [ ] MCP configuration is valid JSON
  • [ ] Server URL is correct and accessible
  • [ ] Required environment variables documented
  • [ ] Tools appear in /mcp output
  • [ ] Authentication works (OAuth or tokens)
  • [ ] Tool calls succeed from commands
  • [ ] Error cases handled gracefully

Debugging

Enable Debug Logging

claude --debug

Look for:

  • MCP server connection attempts
  • Tool discovery logs
  • Authentication flows
  • Tool call errors

Common Issues

Server not connecting:

  • Check URL is correct
  • Verify server is running (stdio)
  • Check network connectivity
  • Review authentication configuration

Tools not available:

  • Verify server connected successfully
  • Check tool names match exactly
  • Run /mcp to see available tools
  • Restart Claude Code after config changes

Authentication failing:

  • Clear cached auth tokens
  • Re-authenticate
  • Check token scopes and permissions
  • Verify environment variables set

Quick Reference

MCP Server Types

Type Transport Best For Auth
stdio Process Local tools, custom servers Env vars
SSE HTTP Hosted services, cloud APIs OAuth
HTTP REST API backends, token auth Tokens
ws WebSocket Real-time, streaming Tokens

Configuration Checklist

  • [ ] Server type specified (stdio/SSE/HTTP/ws)
  • [ ] Type-specific fields complete (command or url)
  • [ ] Authentication configured
  • [ ] Environment variables documented
  • [ ] HTTPS/WSS used (not HTTP/WS)
  • [ ] ${CLAUDE_PLUGIN_ROOT} used for paths

Best Practices

DO:

  • ✅ Use ${CLAUDE_PLUGIN_ROOT} for portable paths
  • ✅ Document required environment variables
  • ✅ Use secure connections (HTTPS/WSS)
  • ✅ Pre-allow specific MCP tools in commands
  • ✅ Test MCP integration before publishing
  • ✅ Handle connection and tool errors gracefully

DON'T:

  • ❌ Hardcode absolute paths
  • ❌ Commit credentials to git
  • ❌ Use HTTP instead of HTTPS
  • ❌ Pre-allow all tools with wildcards
  • ❌ Skip error handling
  • ❌ Forget to document setup

Additional Resources

Reference Files

For detailed information, consult:

  • references/server-types.md - Deep dive on each server type
  • references/authentication.md - Authentication patterns and OAuth
  • references/tool-usage.md - Using MCP tools in commands and agents

Example Configurations

Working examples in examples/:

  • stdio-server.json - Local stdio MCP server
  • sse-server.json - Hosted SSE server with OAuth
  • http-server.json - REST API with token auth

External Resources

Implementation Workflow

To add MCP integration to a plugin:

  1. Choose MCP server type (stdio, SSE, HTTP, ws)
  2. Create .mcp.json at plugin root with configuration
  3. Use ${CLAUDE_PLUGIN_ROOT} for all file references
  4. Document required environment variables in README
  5. Test locally with /mcp command
  6. Pre-allow MCP tools in relevant commands
  7. Handle authentication (OAuth or tokens)
  8. Test error cases (connection failures, auth errors)
  9. Document MCP integration in plugin README

Focus on stdio for custom/local servers, SSE for hosted services with OAuth.

原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。