結論: Claude Code × MCP(Model Context Protocol)連携は claude mcp add コマンド1行で始められ、GitHub・Notion・Slack・Linear・Filesystem・Database・カスタムの7パターンを.mcp.jsonに記述するだけで構成できます。OAuth認可フローとスコープ制限を正しく設定すれば法人の本番環境でも安全に運用できます。
この記事の要点(2026年8月時点の公式ドキュメントで再検証済み):
claude mcp addのstdio/http/sse各トランスポート、--scope local|project|user、.mcp.jsonの書き方を実機(Claude Code CLI)で動作確認したフラグ一覧付きで解説- OAuth 2.0認可フロー・スコープ制限・動的ヘッダー認証(headersHelper)の3段階セキュリティ設計と、
claude mcp loginによるコマンドライン認証 - MCPリソースの@メンション参照、プラグイン経由MCPサーバーなど2026年8月時点の最新仕様を追加
- よくある失敗4パターン(OAuth設定ミス・認証ループ・scope過剰・シークレット漏洩)と回避策
対象読者: Claude Codeで外部ツール連携を検討しているエンジニア・DX担当者・法人IT管理者
読了後にできること: 今日中に自社環境に合ったMCPサーバーを選んで.mcp.jsonを作成し、Claude Codeと外部ツールの連携を開始できる
「MCPって便利そうなのに、セキュリティが心配で本番に入れられない」
先日、ある製造業のDX担当者から相談を受けました。GitHub MCP自体は設定できたものの、「Slackのトークンをjsonファイルに直書きしてよいのか」「OAuth認可画面が出てきたけど何を許可しているのか分からない」と不安を抱えたまま止まっているというケースでした。
実はこれ、MCP導入あるあるなんです。設定の基本は簡単なのですが、OAuth認可フローとスコープ設計を理解していないと、必要以上の権限を渡してしまったり、逆に認証ループにはまったりします。法人環境で安心してMCPを使うには、仕組みを正しく理解した上で設計することが重要です。
この記事では、MCP仕様の基礎から7パターンの実装例、OAuth認可フロー、よくある失敗と回避策まで、公式ドキュメントに基づいて徹底解説します。コピペ可能な設定ファイル5つ付きで、今日から実装に入れます。
MCPとは何か — 公式仕様から読み解く基礎知識
MCP(Model Context Protocol)は、Anthropicが2024年末に公開したオープン標準プロトコルです。公式MCPレジストリでは2026年5月時点で9,652件のサーバーが登録されており(出典: MCP公式レジストリAPI集計、参照日: 2026-08-29)、OpenAI・Google・VS Code・Cursorなど主要なAIツールにも採用されています。なお2026年8月時点でこれ以降の公式レジストリの最新集計は確認できていません。Glama・PulseMCP・SmitheryなどのサードパーティレジストリではAugust時点で1万件を大きく超える件数が公開されていますが、放置・重複登録も多く含まれるため参考値として扱ってください。
一言で言うと「AIのUSB-Cポート」です。USB-Cが機器の種類を問わず統一規格で繋げるように、MCPはAIアプリケーションとあらゆる外部システムを統一規格で接続します。
MCP アーキテクチャの3層構造
公式仕様(modelcontextprotocol.io/docs/learn/architecture、参照日: 2026-06-04)によると、MCPは次の3つの参加者で構成されます。
| 役割 | 説明 | 具体例 |
|---|---|---|
| MCPホスト | AIアプリ本体。複数のMCPクライアントを管理 | Claude Code、Claude Desktop、Cursor |
| MCPクライアント | 各サーバーとの1対1接続を維持するコンポーネント | Claude Code内部で自動生成 |
| MCPサーバー | 外部ツールや機能を提供するプログラム | GitHub MCP、Slack MCP等 |
データ層とトランスポート層の2層構造で動作します。データ層はJSON-RPC 2.0ベースのプロトコルで、ツール(Tool)・リソース(Resource)・プロンプト(Prompt)の3種類のプリミティブを提供します。トランスポート層はstdio(ローカルプロセス)とStreamable HTTP(リモートサーバー)の2方式をサポートします。
MCPの3つのプリミティブ
MCPサーバーが提供できる機能は次の3種類です(公式仕様準拠、参照日: 2026-06-04)。
- Tools(ツール): AIが実行できる関数。ファイル操作、API呼び出し、DB更新など
- Resources(リソース): コンテキスト情報の提供源。ファイル内容、DBレコード、APIレスポンスなど
- Prompts(プロンプト): 再利用可能なテンプレート。システムプロンプト、few-shotサンプルなど
2026年8月時点でtool search(ツール検索)は既定で有効です。Claude CodeはMCP接続時にすべてのツール定義を事前ロードせず、Claudeがタスクで必要になったタイミングでオンデマンド検索・取得する仕組みに変わっています。これによりMCPサーバーを何個追加しても文脈窓(コンテキストウィンドウ)への影響を最小限に抑えられ、サーバーごとのツール数上限も設けられていません(出典: code.claude.com/docs/ja/mcp、参照日: 2026-08-29)。挙動は環境変数 ENABLE_TOOL_SEARCH で調整できます。
| 設定値 | 動作 |
|---|---|
| 未設定(既定) | すべてのMCPツールを遅延ロードし、必要時にオンデマンド取得 |
true | 常に遅延ロード。プロキシ経由でもベータヘッダーを送信 |
auto | ツール定義がコンテキストウィンドウの10%以内なら事前ロード、超える分だけ遅延 |
auto:N | しきい値を任意のパーセンテージ(0-100)に変更(例: auto:5) |
false | すべて事前ロード(遅延なし) |
頻繁に使う少数のツールだけは常時ロードしたい場合、.mcp.jsonのサーバー設定に "alwaysLoad": true を追加すると、そのサーバーのツールはツール検索を経由せずセッション開始時から利用可能になります。
MCPの全体像についてはAIエージェント導入完全ガイドでもエージェント連携の観点から解説しています。
MCPサーバー3つのスコープと.mcp.jsonの基本構造
まず設定の前に「どこに設定を書くか」を決めます。Claude Codeには3つのスコープがあります(出典: code.claude.com/docs/en/mcp、参照日: 2026-06-04)。
| スコープ | 保存場所 | チームで共有 | 用途 |
|---|---|---|---|
| local(デフォルト) | ~/.claude.json | しない | 個人の開発環境・実験的設定 |
| project | プロジェクトルートの.mcp.json | する(Git管理) | チーム全員が使うツール連携 |
| user | ~/.claude.json | しない | 全プロジェクト横断で使う個人設定 |
法人環境での推奨は「project スコープ」です。.mcp.jsonをGitにコミットすることで、チーム全員が同じMCP設定でClaude Codeを使えます。ただしAPIキーは.mcp.jsonに直書きせず、環境変数で渡すのが鉄則です。
「claude mcp 設定」で検索して古い記事が出てきたら要注意: local スコープは以前「project」、user スコープは以前「global」という名称でした(出典: code.claude.com/docs/ja/mcp、参照日: 2026-08-29)。旧ドキュメントや古いブログ記事の --scope project(個人用の意味)と、現行の「project スコープ」(.mcp.jsonでチーム共有する意味)は指しているものが違うので混同しないでください。同名サーバーが複数スコープに存在する場合の優先順位は「local > project > user > プラグイン提供 > claude.aiコネクタ」の順です。
コピペ可能: claude mcp add コマンド構文早見表(2026年8月時点)
実際にローカルのClaude Code CLI(claude mcp add --help)で動作確認したフラグ一覧です。
| フラグ | 意味 |
|---|---|
-t, --transport <stdio|sse|http> | トランスポート種別。未指定時はstdio。SSEは非推奨(HTTP優先) |
-s, --scope <local|project|user> | 設定の保存先スコープ(既定はlocal) |
-e, --env <KEY=value...> | stdioサーバーに渡す環境変数 |
-H, --header <文字列...> | HTTP/SSEサーバーに渡すヘッダー(例: Authorization: Bearer ...) |
--callback-port <port> | OAuthコールバックのポート固定(企業のリダイレクトURI事前登録向け) |
--client-id / --client-secret | Dynamic Client Registration非対応サーバー向けの事前設定OAuth認証情報 |
# stdio型(ローカルプロセス)
claude mcp add my-server -e API_KEY=xxx -- npx my-mcp-server
# HTTP型(リモート・推奨トランスポート)
claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
# HTTP型+認証ヘッダー
claude mcp add --transport http corridor https://app.corridor.dev/api/mcp \
--header "Authorization: Bearer YOUR_TOKEN"
# JSON設定から一発追加(add-json)
claude mcp add-json weather-api '{"type":"http","url":"https://api.weather.com/mcp"}'stdioサーバーを追加する時は --(ダブルダッシュ)で自コマンドのオプションとサーバー実行コマンドを区切ります。-- の前は claude mcp add 自身のオプション、後ろはサーバーにそのまま渡るという役割分担です。
コピペ可能: 基本的な.mcp.jsonの構造
{
"mcpServers": {
"サーバー名": {
"type": "http",
"url": "https://mcp.example.com/mcp"
},
"ローカルサーバー名": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-example"],
"env": {
"API_KEY": "${API_KEY}"
}
}
}
}重要な注意点: 2026年現在、Claude Codeの旧ドキュメントには .claude/mcp.json という記述が残っていますが、正しいパスはプロジェクトルート直下の .mcp.json です(出典: code.claude.com/docs/en/mcp、参照日: 2026-06-04)。
7パターンMCPサーバー導入ガイド
パターン1: GitHub MCP — コードレビューとPR自動化
GitHub公式MCPサーバー(remote HTTP型)。Personal Access Token(PAT)をAuthorizationヘッダーで渡します。
# CLIで追加(local スコープ)
claude mcp add --transport http github https://api.githubcopilot.com/mcp/
--header "Authorization: Bearer YOUR_GITHUB_PAT".mcp.jsonに直接書く場合(project スコープ、チーム共有向け):
{
"mcpServers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "Bearer ${GITHUB_TOKEN}"
}
}
}
}設定後、Claude Codeで使えるようになる操作例:
- 「ENG-4521のissueを実装してdevelopブランチにPRを作って」
- 「先週の自分のコミットを一覧表示して」
- 「PR #123のコードレビューをして改善点を教えて」
トークン権限の最小化: PATはFine-grained tokenを使い、「対象リポジトリのみ」「Read/Writeのみ必要な権限」に絞ること。全リポジトリ・全権限のClassic tokenは使わない。
GitHub MCPをClaude Codeに導入する4ステップ(実例)
- GitHubでFine-grained PATを発行: github.com/settings/personal-access-tokens を開き、対象リポジトリのみ選択し、Pull requests/Issues/Contentsなど必要な権限だけをRead/Writeで付与してトークンを発行する
- Claude CodeにMCPサーバーを追加:
claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \ --header "Authorization: Bearer YOUR_GITHUB_PAT" - 接続確認: Claude Code内で
/mcpを実行し、githubサーバーが接続済み(ツール数が表示される状態)になっているか確認する。claude mcp listでも一覧確認できる - 動作テスト: 「PR #123のコードレビューをして改善点を教えて」のように具体的な指示を出し、実際にGitHub上のデータを取得できているか確認する
チームで共有する場合は --scope project を付けて.mcp.jsonに書き込み、トークン部分だけ ${GITHUB_TOKEN} の環境変数参照に変えてGit管理する(本文中の.mcp.json記述例を参照)。
パターン2: Notion MCP — ドキュメント管理とタスク連携
Notion公式MCP(remote HTTP型)。NotionはBearerトークン認証ではなくOAuth認証のみサポートします。
# まずサーバーを追加
claude mcp add --transport http notion https://mcp.notion.com/mcp
# 次にClaude Code内でOAuth認証
/mcp
# → Notionが「要認証」として表示される → ブラウザでOAuth承認.mcp.json記述例:
{
"mcpServers": {
"notion": {
"type": "http",
"url": "https://mcp.notion.com/mcp"
}
}
}OAuth認証後のClaude Code使用例:
- 「プロジェクト管理DBの未完了タスクを一覧表示して」
- 「今日の会議メモをNotionの議事録DBに追加して」
- 「仕様書ページに先ほどの実装内容を追記して」
パターン3: Slack MCP — チームコミュニケーション連携
Slack公式MCP(remote HTTP型、OAuth認証)。スコープを必要最小限に制限することが重要です。
{
"mcpServers": {
"slack": {
"type": "http",
"url": "https://mcp.slack.com/mcp",
"oauth": {
"scopes": "channels:read chat:write search:read"
}
}
}
}oauth.scopes で許可スコープを明示的に制限しています。これはRFC 6749の scope パラメータに準拠した指定です(出典: code.claude.com/docs/en/mcp、参照日: 2026-06-04)。
Claude Codeでの使用例:
- 「#devチャンネルの今日のメッセージをサマリーして」
- 「Figmaの新デザインをSlack #designチャンネルに通知して」
パターン4: Linear MCP — プロジェクト管理連携
Linear公式MCP(remote HTTP型)。APIキーをAuthorizationヘッダーで渡します。
{
"mcpServers": {
"linear": {
"type": "http",
"url": "https://mcp.linear.app/mcp",
"headers": {
"Authorization": "Bearer ${LINEAR_API_KEY}"
}
}
}
}Claude Codeでの使用例:
- 「自分にアサインされた未完了issueを一覧表示して」
- 「このバグのissueをLinearに作成してdevelopチームにアサインして」
パターン5: Filesystem MCP — ローカルファイル操作
ローカルストレージへの安全なアクセスをClaude Codeに提供します。stdio型(ローカルプロセス)。
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/username/projects/myproject",
"/Users/username/documents/specs"
]
}
}
}アクセス許可するパスを明示的に列挙することで、想定外のパスへのアクセスを防ぎます。
パターン6: Database MCP — PostgreSQL/MySQL接続
DBhub経由でPostgreSQLに接続するstdio型MCP。接続文字列には読み取り専用ユーザーを使うことを強く推奨します。
{
"mcpServers": {
"database": {
"command": "npx",
"args": [
"-y",
"@bytebase/dbhub",
"--dsn",
"postgresql://readonly_user:[email protected]:5432/analytics"
]
}
}
}研修先の現場では「本番DBに書き込み権限のあるユーザーをMCPに渡して事故が起きかけた」という事例がありました。DBMCPには必ず読み取り専用ユーザーを作成して設定することを徹底してください。
パターン7: Custom MCP Server — 社内システム連携
社内の独自APIやシステムをMCP化する方法です。Python SDKを使った最小実装例:
# custom_mcp_server.py
from mcp import Server
from mcp.server.stdio import stdio_server
app = Server("custom-internal-api")
@app.tool()
async def get_customer_info(customer_id: str) -> str:
"""社内顧客管理DBから顧客情報を取得"""
# 社内APIを呼ぶロジック
response = await internal_api.get(f"/customers/{customer_id}")
return response.json()
@app.tool()
async def create_support_ticket(
customer_id: str,
subject: str,
description: str
) -> str:
"""サポートチケットを作成"""
# チケット作成API
result = await internal_api.post("/tickets", {
"customer_id": customer_id,
"subject": subject,
"description": description
})
return f"チケット作成完了: #{result['ticket_id']}"
if __name__ == "__main__":
import asyncio
asyncio.run(stdio_server(app))# .mcp.json への登録
{
"mcpServers": {
"internal-crm": {
"command": "python3",
"args": ["/path/to/custom_mcp_server.py"],
"env": {
"INTERNAL_API_URL": "${INTERNAL_API_URL}",
"INTERNAL_API_KEY": "${INTERNAL_API_KEY}"
}
}
}
}社内CRMとClaude Codeを連携した法人での活用例として「顧客IDを伝えるだけで過去の問い合わせ履歴・購入履歴・対応状況を瞬時に把握できる」という使い方があります。想定シナリオとして構成したものですが、このパターンのMCPは顧客サポートや営業の現場で特に効果的です。
番外編: プラグイン経由でMCPサーバーを配布する(2026年8月時点の最新機能)
Custom MCP Serverを自作せず、Anthropicの公式プラグイン機能でMCPサーバーをスキャフォルド(雛形生成)することもできます(出典: code.claude.com/docs/ja/mcp、参照日: 2026-08-29)。
# 公式プラグインをインストール
/plugin install mcp-server-dev@claude-plugins-official
# マーケットプレイスが見つからない場合は先に登録
/plugin marketplace add anthropics/claude-plugins-official
# 対話形式でMCPサーバーをビルド
/mcp-server-dev:build-mcp-serverプラグインにMCPサーバーをバンドルしておくと、プラグインを有効化した瞬間に全メンバーへ同じMCPツールが自動配布されます。プラグインルートの.mcp.jsonまたはplugin.json内に、${CLAUDE_PLUGIN_ROOT}(プラグインのインストール先)というプレースホルダーを使ってサーバーを定義します。
{
"mcpServers": {
"database-tools": {
"command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",
"args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"]
}
}
}プラグイン提供のMCPツールは mcp__plugin_<プラグイン名>_<サーバー名>__<ツール名> という完全名で呼び出されます。権限ルールやスキルの許可ツールリストでプラグイン提供ツールを指定する時は、この完全名を使う必要があります(ベアのサーバー名だけを書いたルールは発火しません)。プラグイン導入・無効化は /mcp ではなく /reload-plugins で反映します。
OAuth認可フロー完全解説 — MCP OAuth Authorization
Notion・Slack・Sentry等のリモートMCPサーバーを使う際に必要なOAuth 2.0認可フローについて詳しく説明します(出典: code.claude.com/docs/en/mcp、参照日: 2026-06-04)。
OAuth認可の基本フロー(5ステップ)
- サーバー追加:
claude mcp add --transport http サーバー名 URLでサーバーを登録 - 認証チェック:
/mcpコマンドでサーバーの認証ステータスを確認。「要認証」と表示されたらOAuthフローへ - ブラウザ認可: 自動的にブラウザが開き、外部サービスのOAuth認可画面が表示される。許可するスコープを確認して承認
- コールバック処理: 認可完了後、
http://localhost:PORT/callbackにリダイレクトされClaude Codeがトークンを受け取る - トークン保存: 認証トークンはシステムキーチェーン(macOS)またはcredentialsファイルに安全に保存され、自動更新される
Claude Codeは、サーバーが 401 Unauthorized または 403 Forbidden を返した時点でOAuth認証が必要と判断し、/mcp パネルにフラグを立てます。
コマンドラインから認証する(claude mcp login)
claude mcp login <サーバー名> を使うと、対話セッション内で /mcp パネルを開かなくても、シェルから直接OAuthフローを実行できます(実機のClaude Code CLIで動作確認済み)。
# 設定済みサーバーのOAuth認証を実行
claude mcp login sentry
# ブラウザが使えない環境(SSH/ヘッドレス)では認可URLを表示させる
claude mcp login sentry --no-browser
# 保存済みの認証情報をクリアする
claude mcp logout sentrySSHセッション中やディスプレイサーバーのないLinux環境では、Claude Codeが自動でブラウザなしのフローを検出し、認可URLを出力します。ローカルマシンでそのURLを開き、ブラウザのアドレスバーに表示された完全なリダイレクトURLをターミナルに貼り付けて認証を完了させます(ssh -t で接続していることが前提です)。
コールバックポートの固定(企業環境向け)
企業のセキュリティポリシーで特定のリダイレクトURIを事前登録する必要がある場合は、--callback-port で固定できます。
# コールバックポートを固定してサーバー追加
claude mcp add --transport http
--callback-port 8080
my-server https://mcp.example.com/mcp
# 事前設定済みOAuthクレデンシャル(Dynamic Client Registration非対応サーバー向け)
claude mcp add --transport http
--client-id your-client-id --client-secret --callback-port 8080
my-server https://mcp.example.com/mcpスコープ制限で最小権限の原則を実現
OAuthのスコープは「必要最小限」に絞るのが鉄則です。oauth.scopes フィールドで制限できます(RFC 6749 §3.3準拠)。
{
"mcpServers": {
"slack": {
"type": "http",
"url": "https://mcp.slack.com/mcp",
"oauth": {
"scopes": "channels:read chat:write search:read"
}
},
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/",
"oauth": {
"scopes": "repo:read pull_request:write"
}
}
}
}動的ヘッダー認証(社内SSO・Kerberos対応)
OAuthが使えない社内認証(Kerberos、短期トークン、社内SSO)の場合は headersHelper で対応できます。
{
"mcpServers": {
"internal-api": {
"type": "http",
"url": "https://mcp.internal.example.com",
"headersHelper": "/opt/bin/get-mcp-auth-headers.sh"
}
}
}headersHelperコマンドはJSON形式のヘッダーオブジェクトをstdoutに出力する必要があります。接続毎に実行されるため、短期トークンの動的生成にも対応できます。
MCPリソースを@メンションで直接参照する
MCPサーバーが公開する「リソース」(ファイル・DB行・チケット等のデータ)は、ツール呼び出しを介さず、チャット入力欄で直接@メンションして読み込ませることができます(出典: code.claude.com/docs/ja/mcp、参照日: 2026-08-29)。
# 書式: @サーバー名:プロトコル://リソースパス
@github:issue://123
@postgres:table://users
@sentry:issue://PROJECT-1@ を入力するとリソース一覧がオートコンプリートで表示され、選択したリソースの中身がそのままプロンプトのコンテキストに追加されます。ツール呼び出し(Claudeが判断して実行する)と違い、@メンションは「このデータを今すぐ読み込ませる」というユーザー側の明示的な指示です。対応しているかどうかはMCPサーバー側の実装次第で、すべてのサーバーがリソースを公開しているわけではありません。
また、MCPサーバーはプロンプト(定型指示)を提供でき、スラッシュコマンドとして /mcp__サーバー名__プロンプト名 の形式で呼び出せます。よく使う定型作業(週次レポート生成など)をサーバー側にプロンプトとして登録しておくと、チーム全員が同じ手順で実行できます。
この記事の内容、自社の業務でも回したい?
AI顧問(月次伴走)が、貴社の業務に合わせて導入から定着まで並走します。研修4,000名以上・支援100社以上の実績。まずは30分の壁打ちから。
5ステップ実装フロー — 初めてのMCP導入から本番稼働まで
- スコープ設計: 「個人のみ」「チーム全員」「全プロジェクト」のどれかを決め、保存場所(
~/.claude.json/.mcp.json)を選択する - サーバー選定: Anthropicディレクトリ(claude.ai/directory)で対象サービスのMCPサーバーを検索し、HTTP型(推奨)かstdio型かを確認する
- 認証方式の確定: Bearer Token / OAuth 2.0 / 動的ヘッダーのどれを使うか確認し、最小権限のスコープを設計する
- .mcp.json作成・環境変数設定: APIキー・トークンは絶対に直書きせず環境変数(
${ENV_VAR})で参照する。claude mcp listで認識を確認 - 動作確認・セキュリティレビュー:
/mcpでツール一覧を確認。OAuth認証を完了し、必要最小限のスコープで動くことをテストする
Claude Codeのセキュリティ設定全般についてはClaude Codeセキュリティ設定完全ガイドで詳しく解説しています。
法人向けセキュリティ設計 — プロジェクトスコープ運用ベストプラクティス
チームでMCPを使う場合の設計指針をまとめます。
シークレット管理の3原則
- APIキーは環境変数で渡す:
${GITHUB_TOKEN}のような参照形式を使い、.mcp.jsonにAPIキー本文は書かない - .mcp.jsonは.gitignoreしない: project スコープの.mcp.jsonはGit管理対象にする(チーム共有のため)。ただし内容にシークレットが入っていないことを必ず確認する
- CIではenv secretsを使う: GitHub Actionsのsecrets、AWSのSecrets Manager等から環境変数として注入する
マネージドMCP設定(Enterprise向け)
企業のIT管理者がメンバー全員に使えるMCPサーバーを一元管理する場合、managed-mcp.json による配布と allowedMcpServers / deniedMcpServers による許可制御が可能です。特定のMCPサーバーのみ許可し、外部への接続を制限するホワイトリスト管理ができます。
{
"allowedMcpServers": ["github", "notion", "linear"],
"deniedMcpServers": ["*"]
}この例では github・notion・linear の3サーバーのみを許可し、それ以外(ワイルドカード *)はすべて拒否します。メンバーが個人で claude mcp add した未承認サーバーも、このポリシーに反する場合は起動時にブロックされます。設定ファイルはOS標準の管理対象ディレクトリ(macOSなら/Library/Application Support/ClaudeCode/等)に配置し、エンドユーザーの権限では書き換えられないようにするのが基本です。
プロンプトインジェクション対策
外部コンテンツ(Webページ、ドキュメント、メッセージ)を取得するMCPサーバーは、プロンプトインジェクションのリスクがあります(出典: code.claude.com/docs/en/security、参照日: 2026-06-04)。対策として:
- 信頼できる公式サーバーのみを使う(Anthropicディレクトリで確認済みのもの)
- 外部コンテンツを取得するサーバーの出力は鵜呑みにせず確認する
- 書き込み系ツール(PR作成、メッセージ送信等)には明示的な確認ステップを設ける
【要注意】MCP設定よくある失敗パターン4選
失敗1: OAuth設定ミス — 「Dynamic Client Registration非対応」エラー
❌ よくある間違い: OAuthが必要なサーバーをBearerトークンで設定しようとする、または「Dynamic Client Registration非対応」エラーでOAuthが通らない
⭕ 正しいアプローチ: エラーが出たらサーバーの開発者ポータルでOAuthアプリを登録し、クライアントIDと秘密鍵を取得してから --client-id と --client-secret フラグを使って設定する
# 解決手順
# 1. サービスの開発者ポータルでOAuthアプリ登録
# 2. リダイレクトURI: http://localhost:8080/callback を登録
# 3. クライアントIDと秘密鍵を取得して以下を実行
claude mcp add --transport http
--client-id your-client-id --client-secret --callback-port 8080
my-server https://mcp.example.com/mcpなぜ重要か: このエラーはサーバー側の認証フローに従わないと永遠に解決しません。Notionのように「OAuthのみ対応」のサービスにBearerトークンを渡しても認証できません。
失敗2: 認証ループ — ブラウザが何度も開く
❌ よくある間違い: headers.Authorization でトークンを設定しているのに、/mcp を開くたびにOAuth認証画面が再表示される
⭕ 正しいアプローチ: 2つの原因が考えられます。①トークンが正しくない・期限切れ → サーバー側で新しいトークンを発行する。②headers.Authorization をサーバー側が拒否している → ヘッダーを削除してOAuthフローを使う
顧問先の企業でこの問題を見た時、Authorization ヘッダーに間違えて古いトークンを入力していたことが原因でした。Claude Codeはヘッダーが拒否された場合、OAuthにフォールバックせず「接続失敗」として扱います。ヘッダーとOAuthを混在させないのが安全です。
失敗3: scope過剰設定 — 必要以上の権限を渡す
❌ よくある間違い: oauth.scopes を設定せず、デフォルトのスコープ(全権限)を許可してしまう
⭕ 正しいアプローチ: 必ず oauth.scopes で必要な権限だけを列挙する。後から 403 insufficient_scope が出たらスコープを広げればよい。最初から全権限を渡すのはNG
# NG: スコープ未設定(全権限が渡る可能性)
{
"slack": {
"type": "http",
"url": "https://mcp.slack.com/mcp"
}
}
# OK: 最小スコープを明示
{
"slack": {
"type": "http",
"url": "https://mcp.slack.com/mcp",
"oauth": {
"scopes": "channels:read chat:write"
}
}
}失敗4: シークレット漏洩 — APIキーのcommit
❌ よくある間違い: .mcp.jsonにAPIキーを直書きしてGitにコミットしてしまう
⭕ 正しいアプローチ: 必ず ${ENV_VAR} 形式で環境変数参照にする。万が一コミットしてしまったらGitリポジトリの履歴から削除し、即座にAPIキーを無効化・再発行する
# NG: シークレット直書き
{
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "Bearer ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
# OK: 環境変数参照
{
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "Bearer ${GITHUB_TOKEN}"
}
}
}過去に研修受講者の一人が誤って本番GitHubトークンを.mcp.jsonに直書きしてpushしてしまったケースがありました(想定シナリオ)。事前に .gitignore に追加するか、git-secretsのようなツールで防ぐ習慣をつけてください。
MCPサーバー管理コマンド一覧
日常的に使うCLIコマンドを整理します(出典: code.claude.com/docs/en/mcp、参照日: 2026-06-04)。
# サーバー一覧表示(接続状態も確認)
claude mcp list
# 特定サーバーの詳細確認(OAuth設定・承認状態)
claude mcp get github
# サーバー削除
claude mcp remove github
# JSON設定から直接追加
claude mcp add-json weather-api '{"type":"http","url":"https://api.weather.com/mcp"}'
# Claude Desktop の設定からインポート(macOS/WSL)
claude mcp add-from-claude-desktop
# プロジェクトスコープの承認リセット
claude mcp reset-project-choices
# Claude Code内でサーバー状態確認(ツール数・認証状態)
/mcpclaude.aiで設定したMCPコネクターはClaude Codeでも自動的に利用可能です。ただしこの機能はClaude.aiアカウントログイン時のみ有効で、APIキー認証時は無効です。
Claude CodeをMCPサーバーとして使う — 逆転の発想
Claude Code自体をMCPサーバーとして動かし、Claude DesktopやCursorからツールとして呼び出すこともできます。
# Claude CodeをMCPサーバーとして起動
claude mcp serveClaude Desktop(claude_desktop_config.json)への登録:
{
"mcpServers": {
"claude-code": {
"type": "stdio",
"command": "/usr/local/bin/claude",
"args": ["mcp", "serve"],
"env": {}
}
}
}この設定により、Claude DesktopからClaude Codeのファイル操作・編集・コマンド実行ツールを呼び出せます。複数のAIツールを組み合わせたエージェントワークフロー構築に活用できます。
MCPとCodexの違い — Claude Code vs Codex の視点から
Claude CodeとCodex(OpenAI)では、MCP対応の深さが異なります。
| 項目 | Claude Code(MCP) | Codex(Tools/Plugins) |
|---|---|---|
| 標準規格 | MCP(オープン標準) | OpenAIプラグイン形式 |
| 利用可能サーバー数 | 9,400以上(2026年6月) | 公式プラグインのみ |
| OAuth対応 | OAuth 2.0標準対応 | APIキー認証が主 |
| カスタムサーバー | Python/Node.js SDKで自作可 | OpenAPI仕様書が必要 |
| スコープ管理 | oauth.scopesで細粒度制御 | プラグイン単位の管理 |
MCPはオープン標準のため、一度MCPサーバーを作れば Claude Code・Cursor・VS Copilotなど複数のAIツールで使い回せます。これがClaude CodeとMCPの組み合わせが法人導入で選ばれる大きな理由の一つです。
ツール比較の詳細はCodex AGENTS.md完全ガイドもご参照ください。
MCP導入前に確認すべき組織要件チェックリスト
法人でMCPを本番環境に導入する前に、以下の項目を確認してください。特にセキュリティポリシーや情報管理規定がある組織では見落としがちなポイントをまとめました。
- □ 外部サービスへの接続許可: 社内セキュリティポリシーで外部MCPサーバーへの接続が許可されているか。ファイアウォール設定の確認も必要
- □ APIキーの管理規定: 発行したAPIキーの管理台帳、有効期限、失効手順が定まっているか
- □ アクセスログ: MCPツール経由でどのデータにアクセスしたかのログを記録・監査できるか
- □ スコープの承認フロー: OAuthスコープの変更に情報セキュリティ担当の承認が必要か
- □ データ分類: MCPが接続するシステムに機密データ(個人情報、顧客情報等)が含まれる場合、法的コンプライアンス要件を確認
- □ インシデント対応手順: APIキー漏洩や不正アクセスを検知した場合の対応手順が整備されているか
「便利だからすぐ使いたい」という気持ちはよく分かりますが、100社以上のAI研修・導入支援の経験から言うと、この事前チェックをスキップして後から制度整備に追われるケースを何度も見てきました。最初の30分を組織要件確認に使うだけで、後の運用が格段に楽になります。
あわせて読みたい
まとめ:今日から始める3つのアクション
- 今日やること: GitHubかNotionのMCPサーバーを1つ追加して
/mcpでツール一覧を確認する。まず「繋がる感覚」を掴む - 今週中: チームで使うツール連携を.mcp.jsonでproject スコープに設定し、APIキーを環境変数に切り出してGit管理する
- 今月中: 社内固有のシステムをCustom MCP化し、Claude Codeから業務システムを直接操作できる環境を構築する
MCPの設定は一度理解すれば難しくありません。今日まず1つのサーバーを繋いでみて、「指示1つで外部ツールを操作できる」感覚を体験してみてください。
参考・出典
- Connect Claude Code to tools via MCP — Anthropic(Claude Code公式ドキュメント)(参照日: 2026-06-04)
- MCP経由でClaude Codeをツールに接続する — Anthropic公式ドキュメント(日本語版)(参照日: 2026-08-29・claude mcp add構文、スコープ名称変更、OAuth login、ツール検索、プラグイン経由MCP等を本記事更新時に再確認)
- Architecture overview — Model Context Protocol公式(参照日: 2026-06-04)
- What is the Model Context Protocol (MCP)? — modelcontextprotocol.io(参照日: 2026-06-04)
- Introducing the Model Context Protocol — Anthropic公式ブログ(参照日: 2026-06-04)
著者: 佐藤傑(さとう・すぐる)
株式会社Uravation代表取締役。X(@SuguruKun_ai)フォロワー約10万人。
100社以上の企業向けAI研修・導入支援。著書『AIエージェント仕事術』(SBクリエイティブ)。
SoftBank IT連載7回執筆(NewsPicks最大1,125ピックス)。
ご質問・ご相談は お問い合わせフォーム からお気軽にどうぞ。
監修:株式会社Uravation(生成AI活用書籍シリーズ累計51,400部の著者チームが運営。自社7メディアの実運用でAI検索からの引用・流入を継続計測し、その知見に基づいて編集しています。仕様・料金が変わりやすい領域のため、重要な意思決定の前には各公式情報の最新版をご確認ください)
この記事の内容を社内展開する方へ: Claude Code × ビジネス活用 実践ガイド(無料・PDF 14ページ) をダウンロードできます。
Claude Code / Codex を“自社の業務”で使いこなすなら
週1回60分のマンツーマンで、御社の実務をその場で自動化。設計から定着まで、業務に合わせて伴走します。
- 30分・オンライン
- 売り込みでなく業務診断
- 完全マンツーマン
お問い合わせフォームから24時間以内にUravation担当者がご返信します。



