• Projects
  • Service
  • About
  • branding.bz
  • Podcast
  • Tips
  • FAQ
  • Recruit
  • Download
  • Contact
  • branding.bz(ブランド構築SaaS)
  • DESIGN NOW(デザインメディア)
  • X
  • LinkedIn
  • Spotify
  • Facebook

213-0011 神奈川県川崎市高津区久本3-6-7-303

© 2026 ID INC. All rights reserved

claude-skills/スキル
SKILLOfficialdevelopment

mcp-integration

プラグイン
plugin-dev
ソース
GitHub で見る ↗
説明

このスキルは、ユーザーが「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サーバーを追加するよう依頼されたとき
  • MCPを統合するよう依頼されたとき
  • プラグインでMCPを設定するよう依頼されたとき
  • .mcp.jsonを使うよう依頼されたとき
  • 外部サービスに接続するよう依頼されたとき
  • MCPサーバーの種類について話題になったとき
本文(日本語訳)

Claude Code プラグイン向けの MCP 統合

概要

モデルコンテキストプロトコル(MCP)を使うと、Claude Code プラグインが外部サービスや API と連携でき、構造化された方法でツールにアクセスできます。MCP 統合を使って、外部サービスの機能を Claude Code 内のツールとして提供します。

主な機能:

  • 外部サービス(データベース、API、ファイルシステム)への接続
  • 1つのサービスから 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.json に mcpServers フィールドを追加します。

{
  "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 がプロセスを生成・管理
  • 標準入出力を使って通信
  • Claude Code 終了時にプロセスも終了

SSE(サーバー送信イベント)

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

設定:

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

使用例:

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

認証:

  • OAuth フローは自動で処理
  • 初回使用時にユーザーに確認
  • トークンは Claude Code が管理

HTTP(REST API)

トークン認証を使う REST API ベースの 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: 自律型エージェント

エージェント(自動処理プログラム)が MCP ツールを自動で使用:

# エージェント: 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 の構文をチェック
  • 必要な環境変数を確認

パフォーマンスの考慮

オンデマンド読み込み

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

以下を確認してください:

  • MCP サーバー接続試行
  • ツール発見ログ
  • 認証フロー
  • ツール呼び出しエラー

よくある問題

サーバーが接続しない:

  • URL が正しいか確認
  • サーバーが実行中か確認(stdio)
  • ネットワーク接続を確認
  • 認証設定を確認

ツールが利用できない:

  • サーバーが正常に接続しているか確認
  • ツール名が
原文(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:

{
  "hosted-service": {
    "type": "sse",
    "url": "https://mcp.example.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

  • Official MCP Docs: https://modelcontextprotocol.io/
  • Claude Code MCP Docs: https://docs.claude.com/en/docs/claude-code/mcp
  • MCP SDK: @modelcontextprotocol/sdk
  • Testing: Use claude --debug and /mcp command

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 による自動翻訳です。