このスキルは、ユーザーが「MCPサーバーを追加する」「MCPを統合する」「プラグインでMCPを設定する」「.mcp.jsonを使う」「Model Context Protocol(外部システムとの連携機能)をセットアップする」「外部サービスに接続する」などと依頼したり、「${CLAUDE_PLUGIN_ROOT}とMCP」に言及したり、MCPサーバーの種類(SSE、stdio、HTTP、WebSocket)について話題にしたときに使用します。 Claude Codeプラグインに Model Context Protocol サーバーを統合し、外部のツールやサービスを利用できるようにするための包括的なガイダンスを提供します。
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)を使うと、Claude Code プラグインが外部サービスや API と連携でき、構造化された方法でツールにアクセスできます。MCP 統合を使って、外部サービスの機能を Claude Code 内のツールとして提供します。
主な機能:
プラグインは MCP サーバーを 2 つの方法で組み込めます。
プラグインのルートディレクトリに .mcp.json を作成します。
{
"database-tools": {
"command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",
"args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],
"env": {
"DB_URL": "${DB_URL}"
}
}
}
メリット:
plugin.json に mcpServers フィールドを追加します。
{
"name": "my-plugin",
"version": "1.0.0",
"mcpServers": {
"plugin-api": {
"command": "${CLAUDE_PLUGIN_ROOT}/servers/api-server",
"args": ["--port", "8080"]
}
}
}
メリット:
ローカルの MCP サーバーを子プロセスとして実行します。ローカルツールとカスタムサーバーに最適です。
設定:
{
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/allowed/path"],
"env": {
"LOG_LEVEL": "debug"
}
}
}
使用例:
プロセス管理:
OAuth 対応のホスト型 MCP サーバーに接続します。クラウドサービスに最適です。
設定:
{
"hosted-service": {
"type": "sse",
"url": "https://mcp.example.com/sse"
}
}
使用例:
認証:
トークン認証を使う REST API ベースの MCP サーバーに接続します。
設定:
{
"api-service": {
"type": "http",
"url": "https://api.example.com/mcp",
"headers": {
"Authorization": "Bearer ${API_TOKEN}",
"X-Custom-Header": "value"
}
}
}
使用例:
リアルタイムの双方向通信が必要な 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__plugin_<プラグイン名>_<サーバー名>__<ツール名>
例:
asanaasanacreate_taskmcp__plugin_asana_asana__asana_create_taskコマンドのフロントマターで特定の MCP ツールを事前許可:
---
allowed-tools: [
"mcp__plugin_asana_asana__asana_create_task",
"mcp__plugin_asana_asana__asana_search_tasks"
]
---
ワイルドカード(使用は控えめに):
---
allowed-tools: ["mcp__plugin_asana_asana__*"]
---
ベストプラクティス: セキュリティのため、ワイルドカードではなく特定のツールを事前許可してください。
自動起動:
ライフサイクル:
mcp__plugin_...__... として利用可能サーバーの確認:
/mcp コマンドで、プラグイン提供のサーバーを含むすべてのサーバーを確認できます。
OAuth は Claude Code が自動で処理します。
{
"type": "sse",
"url": "https://mcp.example.com/sse"
}
初回使用時にユーザーがブラウザで認証します。追加設定は不要です。
静的またはクラウド環境変数のトークン:
{
"type": "http",
"url": "https://api.example.com",
"headers": {
"Authorization": "Bearer ${API_TOKEN}"
}
}
必要な環境変数を README に記載してください。
設定を MCP サーバーに渡す:
{
"command": "python",
"args": ["-m", "my_mcp_server"],
"env": {
"DATABASE_URL": "${DB_URL}",
"API_KEY": "${API_KEY}",
"LOG_LEVEL": "info"
}
}
コマンドが MCP ツールをユーザー操作とともに使用:
# コマンド: create-item.md
---
allowed-tools: ["mcp__plugin_name_server__create_item"]
---
手順:
1. ユーザーから項目の詳細を取得
2. mcp__plugin_name_server__create_item を使用
3. 作成を確認
使用場面: MCP 呼び出しの前に検証や前処理を追加する場合。
エージェント(自動処理プログラム)が MCP ツールを自動で使用:
# エージェント: data-analyzer.md
分析プロセス:
1. mcp__plugin_db_server__query でデータを照会
2. 結果を処理・分析
3. インサイトレポートを生成
使用場面: ユーザー操作なしに複数ステップの MCP ワークフローを実行する場合。
複数の MCP サーバーを統合:
{
"github": {
"type": "sse",
"url": "https://mcp.github.com/sse"
},
"jira": {
"type": "sse",
"url": "https://mcp.jira.com/sse"
}
}
使用場面: 複数のサービスにまたがるワークフロー。
常に安全な接続を使用してください。
✅ "url": "https://mcp.example.com/sse"
❌ "url": "http://mcp.example.com/sse"
すべきこと:
してはいけないこと:
必要な MCP ツールだけを事前許可:
✅ allowed-tools: [
"mcp__plugin_api_server__read_data",
"mcp__plugin_api_server__create_item"
]
❌ allowed-tools: ["mcp__plugin_api_server__*"]
MCP サーバーが利用できない場合に対応:
失敗した MCP 操作に対応:
MCP 設定を検証:
MCP サーバーは必要時に接続:
類似リクエストはまとめてください。
# 良い例: フィルタ付きの単一クエリ
tasks = search_tasks(project="X", assignee="me", limit=50)
# 避けるべき例: 多数の個別クエリ
for id in task_ids:
task = get_task(id)
.mcp.json で MCP サーバーを設定.claude-plugin/)/mcp を実行してサーバーが表示されることを確認claude --debug ログで接続問題を確認/mcp 出力にツールが表示されるclaude --debug
以下を確認してください:
サーバーが接続しない:
ツールが利用できない:
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:
Plugins can bundle MCP servers in two ways:
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:
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:
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:
Process management:
Connect to hosted MCP servers with OAuth support. Best for cloud services.
Configuration:
{
"hosted-service": {
"type": "sse",
"url": "https://mcp.example.com/sse"
}
}
Use cases:
Authentication:
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:
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:
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.
When MCP servers provide tools, they're automatically prefixed:
Format: mcp__plugin_<plugin-name>_<server-name>__<tool-name>
Example:
asanaasanacreate_taskmcp__plugin_asana_asana__asana_create_taskPre-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.
Automatic startup:
Lifecycle:
mcp__plugin_...__...Viewing servers:
Use /mcp command to see all servers including plugin-provided ones.
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.
Static or environment variable tokens:
{
"type": "http",
"url": "https://api.example.com",
"headers": {
"Authorization": "Bearer ${API_TOKEN}"
}
}
Document required environment variables in README.
Pass configuration to MCP server:
{
"command": "python",
"args": ["-m", "my_mcp_server"],
"env": {
"DATABASE_URL": "${DB_URL}",
"API_KEY": "${API_KEY}",
"LOG_LEVEL": "info"
}
}
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.
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.
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.
Always use secure connections:
✅ "url": "https://mcp.example.com/sse"
❌ "url": "http://mcp.example.com/sse"
DO:
DON'T:
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__*"]
Handle MCP server unavailability:
Handle failed MCP operations:
Validate MCP configuration:
MCP servers connect on-demand:
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)
.mcp.json.claude-plugin/)/mcp to verify server appearsclaude --debug logs for connection issues/mcp outputclaude --debug
Look for:
Server not connecting:
Tools not available:
/mcp to see available toolsAuthentication failing:
| 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 |
DO:
DON'T:
For detailed information, consult:
references/server-types.md - Deep dive on each server typereferences/authentication.md - Authentication patterns and OAuthreferences/tool-usage.md - Using MCP tools in commands and agentsWorking examples in examples/:
stdio-server.json - Local stdio MCP serversse-server.json - Hosted SSE server with OAuthhttp-server.json - REST API with token authclaude --debug and /mcp commandTo add MCP integration to a plugin:
.mcp.json at plugin root with configuration/mcp commandFocus on stdio for custom/local servers, SSE for hosted services with OAuth.
原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。