• 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/スキル
SKILLClaude Codedevelopment

mcp-integration

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

このスキルは、ユーザーが以下のような場合に使用します: - 「MCPサーバーを追加したい」と言った場合 - 「MCPを統合したい」と言った場合 - 「プラグインでMCPを設定したい」と言った場合 - 「.mcp.jsonを使いたい」と言った場合 - 「Model Context Protocol(外部ツールやサービスとの通信規格)をセットアップしたい」と言った場合 - 「外部サービスに接続したい」と言った場合 - 「${CLAUDE_PLUGIN_ROOT}とMCPについて」に触れた場合 - MCPサーバーのタイプ(SSE、stdio、HTTP、WebSocket などの通信方式)について議論している場合 このスキルは、Model Context Protocol(外部ツールやサービスとの通信規格)サーバーをClaudeコードプラグインに統合するための包括的なガイダンスを提供します。これにより、外部ツールやサービスとの連携が可能になります。

原文を表示

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サーバー設定方法

プラグインは2つの方法でMCPサーバーをバンドルできます:

方法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"]
    }
  }
}

利点:

  • 単一の設定ファイル
  • シンプルな単一サーバープラグインに最適

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(Server-Sent Events)

OAuth認証に対応したホストされたMCPサーバーに接続します。クラウドサービスに最適です。

設定:

{
  "hosted-service": {
    "type": "sse",
    "url": "https://mcp.example.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:自律型エージェント

エージェント(自動実行する支援者)が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サーバー接続試行
  • ツール検出ログ
  • 認証フロー
  • ツール呼び出しエラー

一般的な問題

**サ

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