blog
AIブログ
claude code mcp|2026年版ガイド
Claude Code MCPとは何か:AIコーディングを拡張する仕組みの全体像
Claude Code(クロードコード)を日常業務で使い込んでいると、ある壁にぶつかる。「ファイルは書き換えられるのに、外部サービスのデータが取れない」「ブラウザを操作させたい」「社内ツールと連携したい」——そこで登場するのがMCP(Model Context Protocol)だ。MCPはAnthropicが策定したオープン規格で、AIモデルと外部ツール・データソースを標準化されたプロトコルで繋ぐ仕組みである。Claude CodeにMCPを組み合わせると、ターミナル上のAIエージェントが単なるコード生成機から、外部APIを叩き・DBを参照し・ブラウザを制御する「実務エージェント」へと変貌する。本記事では、MCPの仕組みから具体的なサーバーの追加手順、実務での活用パターン、トラブルシュートまでを一気通貫で解説する。
MCPの基本概念:なぜClaude Codeに必要なのか
MCPを理解する最短ルートは「AIのためのUSB規格」というアナロジーだ。USBが登場する前、周辺機器ごとに独自ドライバが必要だったように、AI×外部ツール連携もかつてはツールごとに個別実装が必要だった。MCPはその接続口を標準化し、どのAIモデルでも同じプロトコルで外部機能を呼び出せるようにした。
Claude Codeの文脈では、MCPは「Claude Codeが呼び出せる能力の拡張パック」として機能する。Claude Code自体はファイルシステム操作・コマンド実行・コード生成といったコア能力を持つが、MCPサーバーを追加することで以下のような能力が付け加わる。
- GitHubのIssueやPRをリアルタイムで参照・操作する
- PostgreSQL / SQLiteなどのデータベースにクエリを投げる
- Webブラウザを制御してスクレイピングやE2Eテストを実行する
- SlackやNotionへの書き込み・読み取りを行う
- 外部APIのドキュメントを動的に取得して実装に活かす
MCPのアーキテクチャ:ホスト・クライアント・サーバー
(ホスト/クライアント)
(JSON-RPC 2.0 over
stdio / SSE)
(GitHub / DB / Browser
など各種)
(API・DB・Web等)
MCPは3層構造で動作する。ホスト(Claude Code)がユーザーの指示を受け取り、必要なツールを呼び出す判断を行う。MCPクライアントはホストに組み込まれており、サーバーとの通信セッションを管理する。MCPサーバーは外部ツールやデータソースへの実際のアクセスを担当し、Claude Codeからは独立したプロセスとして動作する。通信にはJSON-RPC 2.0を使用し、ローカルプロセス間通信(stdio)またはHTTP/SSE経由で接続される。
Claude CodeへのMCPサーバーの追加方法
実務で最も重要なのは「どうやって設定するか」だ。Claude CodeのMCP設定には、大きく分けてコマンドラインからの追加と設定ファイルへの直接記述の2つのアプローチがある。
方法①:claude mcp addコマンドを使う(推奨)
最も手軽な方法がclaude mcp addコマンドだ。ターミナルでClaude Codeを起動する前に、以下のように実行する。
# 基本構文
claude mcp add <サーバー名> <コマンド> [引数...]
# 例:ファイルシステムMCPサーバーを追加
claude mcp add filesystem npx -y @modelcontextprotocol/server-filesystem /path/to/allowed/dir
# 例:GitHub MCPサーバーを追加(環境変数を渡す場合)
claude mcp add github -e GITHUB_TOKEN=ghp_xxxxxxxxxxxx -- npx -y @modelcontextprotocol/server-github
追加したサーバーの一覧はclaude mcp listで確認でき、削除はclaude mcp remove <サーバー名>で行う。
方法②:設定ファイル(.mcp.json)に直接記述する
プロジェクトチームで設定を共有したい場合や、複数のサーバーをまとめて管理したい場合は、設定ファイルへの直接記述が便利だ。Claude Codeの設定ファイルは複数のスコープで管理される。
| スコープ | ファイルパス | 用途 |
|---|---|---|
| プロジェクト(共有) | .mcp.json(リポジトリルート) |
チームで共有するサーバー設定 |
| プロジェクト(ローカル) | .claude/settings.local.json |
個人のローカル設定(gitignore推奨) |
| グローバル | ~/.claude.json |
全プロジェクト共通の個人設定 |
以下はプロジェクトルートの.mcp.jsonの記述例だ。
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/project"],
"type": "stdio"
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
},
"type": "stdio"
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"POSTGRES_CONNECTION_STRING": "${DATABASE_URL}"
},
"type": "stdio"
}
}
}
環境変数は${VARIABLE_NAME}形式で参照できる。APIキーやパスワードなどの機密情報はファイルにハードコードせず、必ず環境変数経由で渡すのが鉄則だ。
方法③:SSE(Server-Sent Events)型のリモートサーバーに接続する
ローカルで起動するstdioサーバーではなく、リモートで稼働するHTTP/SSEサーバーに接続することも可能だ。
{
"mcpServers": {
"remote-tool": {
"type": "sse",
"url": "https://your-mcp-server.example.com/sse",
"headers": {
"Authorization": "Bearer ${API_TOKEN}"
}
}
}
}
リモートサーバー方式は、チーム全員が同じMCPサーバーを共有したい場合や、クラウド上の社内ツールと連携する場合に有効だ。ただし通信経路のセキュリティ(TLS・認証)に特に注意が必要になる。
主要なMCPサーバーとClaude Codeでの活用パターン
Anthropicおよびコミュニティが提供する主要なMCPサーバーと、Claude Codeでの具体的な使い方を整理する。
| MCPサーバー | パッケージ名 | 主な機能 | Claude Codeでの典型的な用途 |
|---|---|---|---|
| Filesystem | @modelcontextprotocol/server-filesystem |
ファイル読み書き・ディレクトリ操作 | 指定ディレクトリ外への安全なアクセス制限 |
| GitHub | @modelcontextprotocol/server-github |
Issue/PR操作・コード検索・リポジトリ管理 | Issue内容を読んでそのままコード修正→PRを作成 |
| PostgreSQL | @modelcontextprotocol/server-postgres |
SQLクエリ実行・スキーマ参照 | 実DBのスキーマを読ませてマイグレーション・クエリ最適化 |
| Brave Search | @modelcontextprotocol/server-brave-search |
Web検索 | 最新ライブラリのドキュメント・CVE情報を動的取得 |
| Puppeteer | @modelcontextprotocol/server-puppeteer |
Chromiumブラウザ制御・スクリーンショット | E2Eテストの自動化・UIのビジュアルデバッグ |
| Slack | @modelcontextprotocol/server-slack |
メッセージ送受信・チャンネル管理 | デプロイ完了や障害検知の結果をSlackに自動通知 |
| Memory | @modelcontextprotocol/server-memory |
セッション横断の情報永続化 | プロジェクトの設計判断・技術的負債メモを蓄積 |
| Sentry | @sentry/mcp-server |
エラー・イベント情報取得 | 本番エラーのスタックトレースを読ませてそのまま修正 |

実務でよく使う組み合わせ:GitHub + Postgres + Brave Search
弊社(クリスタルメソッド)での実運用では、GitHub MCP + PostgreSQL MCP + Brave Search MCPの3点セットが最も費用対効果の高い組み合わせとして定着している。典型的なワークフローは以下のとおりだ。
- 「Issue #142を解決して」とClaude Codeに依頼する
- GitHub MCPがIssueの詳細・コメント・関連PRを自動取得する
- Postgres MCPで実際のDBスキーマを参照しながらコードを生成する
- 不明な外部ライブラリがあればBrave SearchでAPIドキュメントを取得する
- コードを書き、テストを走らせ、GitHub MCPでPRを作成して完了する
この一連の流れが、Claude Code単体では不可能なレベルで自律的に処理される。Issueを開いてコードを読み替えてPRを出す作業が、ほぼ無人で完結する体験は、使い始めると開発フローへの影響が大きい。
カスタムMCPサーバーの自作:Claude Codeを社内ツールと繋ぐ
既存の公開サーバーでカバーできない社内システムとの連携には、カスタムMCPサーバーの自作が必要になる。MCPのSDKはPython・TypeScript・Kotlinなど複数言語で提供されている。
TypeScript(Node.js)での最小実装例
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import {
ListToolsRequestSchema,
CallToolRequestSchema,
} from "@modelcontextprotocol/sdk/types.js";
const server = new Server(
{ name: "my-internal-tool", version: "1.0.0" },
{ capabilities: { tools: {} } }
);
// 利用可能なツールを宣言
server.setRequestHandler(ListToolsRequestSchema, async () => ({
tools: [
{
name: "get_ticket",
description: "社内チケットシステムからチケット情報を取得する",
inputSchema: {
type: "object",
properties: {
ticket_id: { type: "string", description: "チケットID(例: TKT-123)" },
},
required: ["ticket_id"],
},
},
],
}));
// ツールの実行ハンドラ
server.setRequestHandler(CallToolRequestSchema, async (request) => {
if (request.params.name === "get_ticket") {
const { ticket_id } = request.params.arguments as { ticket_id: string };
// 実際の社内APIを呼び出す処理をここに記述
const ticketData = await fetchInternalTicket(ticket_id);
return {
content: [{ type: "text", text: JSON.stringify(ticketData, null, 2) }],
};
}
throw new Error(`Unknown tool: ${request.params.name}`);
});
const transport = new StdioServerTransport();
await server.connect(transport);
作成したカスタムサーバーをClaude Codeに登録する際は、以下のようにコマンドで起動先を指定する。
claude mcp add my-internal-tool node /path/to/my-mcp-server/dist/index.js
MCPサーバーで定義できる3種類の機能
MCPサーバーが提供できる機能は仕様上3種類に分類されている。用途に合わせて使い分けることで、Claude Codeへの情報提供の質が上がる。
| 種類 | 概要 | AIによる制御 | 典型的な用途 |
|---|---|---|---|
| Tools | AIが能動的に実行できる関数 | AIが判断して呼び出す | API呼び出し・DBクエリ・ファイル操作 |
| Resources | AIが参照できるデータ・コンテンツ | アプリケーション側が制御 | ドキュメント・設定ファイル・ログ |
| Prompts | 再利用可能なプロンプトテンプレート | ユーザーが選択して使用 | 定型作業のワークフロー定義 |
MCPのセキュリティ:実務で押さえるべき注意点
MCPはClaude Codeの能力を大きく拡張するが、それはリスクの拡大も意味する。外部サービスへのアクセス権をAIエージェントに渡す以上、セキュリティの考慮は必須だ。
最小権限の原則を徹底する
MCPサーバーに渡す権限は、そのタスクに必要な最小限にとどめる。例えばGitHub MCPには読み取り専用のトークンを渡し、PR作成など書き込み操作が必要な場合のみwrite権限のトークンを使う、という運用が望ましい。PostgreSQL MCPには読み取り専用のDBユーザーを割り当て、SELECT以外は実行できないようにするのが実務での基本だ。
APIキー・認証情報の管理
設定ファイル(.mcp.json)にAPIキーをハードコードすることは絶対に避ける。環境変数経由で渡す設計にし、.envファイルは必ず.gitignoreに追加する。チーム開発では.mcp.json自体は環境変数のキー名だけを記述してgitに含め、実際の値は各自の環境変数またはシークレット管理サービスで管理する方式を推奨する。
MCPサーバーの信頼性評価
公開されているMCPサーバーをすべて無条件に信頼することは危険だ。コミュニティ製サーバーを導入する際は以下を確認する習慣をつけておきたい。
- ソースコードが公開されており読めるか(npmのリポジトリを確認)
- メンテナーが信頼できる組織・個人か(GitHubスター数・コミット履歴)
- 要求するパーミッションがユースケースと釣り合っているか
- 通信先が意図した外部サービスのみか(不審なエンドポイントへの通信がないか)
プロンプトインジェクション対策
MCPサーバーを通じて取得した外部データ(Issueのテキスト、DBの内容、Webページのテキスト等)には、悪意あるプロンプトが埋め込まれている可能性がある(プロンプトインジェクション攻撃)。Claude Code自体にも一定の防御機能はあるが、外部データを信頼せず、重要なオペレーション(本番DBの削除・外部への大量送信等)は必ず人間の確認ステップを挟む設計にすることが重要だ。Claude Codeの--dangerously-skip-permissionsフラグは、テスト環境以外では使わない。
MCPの設定と動作確認:よくあるトラブルと解決策

MCPサーバーが認識されない場合
Claude Codeを起動した際、/mcpスラッシュコマンドや設定メニューでサーバーが表示されない、あるいは「failed」ステータスになる場合の確認手順は以下のとおりだ。
ターミナルで
npx -y @modelcontextprotocol/server-githubなどを直接実行し、エラーが出ないか確認する
echo $GITHUB_TOKENなどで環境変数が実際に設定されているか確認する。未設定の場合サーバーは起動できない
cat .mcp.json | python3 -m json.toolなどでJSONの構文エラーを確認する。カンマや波括弧の誤りが原因になることが多い
claude --mcp-debugフラグつきで起動するとMCP関連のデバッグログが表示され、接続失敗の詳細が確認できる
npx clear-npx-cacheまたは~/.npm/_npxを削除して再試行する。古いバージョンのサーバーがキャッシュされていると問題が起きる場合がある
よくあるエラーと対処法
| エラー・症状 | 主な原因 | 対処法 |
|---|---|---|
| サーバーが「failed」と表示される | コマンドパスが不正・環境変数未設定 | コマンドを単体実行してエラーを確認 |
| ツールが呼び出されるが結果が返らない | タイムアウト・APIレート制限 | サーバーのログを確認・APIクォータを確認 |
| 「Tool not found」エラー | サーバーのバージョン不一致・設定ミス | パッケージを最新版に更新・ツール名を確認 |
| Filesystem MCPでアクセス拒否される | 許可ディレクトリの範囲外をアクセスしようとしている | 起動引数の許可パスを確認・修正する |
| SSEサーバーに接続できない | CORS設定・認証ヘッダー不正 | curlで直接エンドポイントを叩いてレスポンスを確認 |
Claude Code MCPの実務活用:上級テクニック
CLAUDE.mdとMCPの組み合わせで一貫した作業文脈を作る
Claude CodeのCLAUDE.md(プロジェクトのメモリファイル)にMCPの使い方に関するルールを記述しておくと、Claude Codeがどのサーバーをいつ呼び出すべきかの判断精度が上がる。弊社では以下のような記述をCLAUDE.mdに追加している。
## MCPツールの使用ルール
- GitHubのIssue番号が言及された場合は必ずGitHub MCPでIssue詳細を取得してから作業を開始する
- DBスキーマに関わる変更は必ずPostgres MCPで現在のスキーマを確認してから実装する
- 外部ライブラリのAPIを使う場合はBrave SearchでAPIドキュメントを確認する
- Slack通知はデプロイ完了・重大エラーの場合のみに限定する
複数MCPサーバーを連携させたエージェントワークフロー
MCPの本領は複数サーバーの組み合わせにある。Claude Codeは複数のMCPツールを一つのタスクの中で順に呼び出すことができる。例えば「本番障害の調査と修正」というタスクは以下のように処理される。
- Sentry MCPで直近のエラーイベントとスタックトレースを取得する
- GitHub MCPで関連コードの変更履歴(git blame / commits)を参照する
- Postgres MCPでエラー時のDB状態を確認するクエリを実行する
- コードを修正し、テストを実行する
- GitHub MCPでPRを作成し、Slack MCPで担当者に通知する
これらのステップが「本番障害を調査して修正PRを作って」という一文の依頼から自律的に実行される。実際に試してみると、手動でやると30〜60分かかっていた障害対応の初動調査と仮修正が数分で終わる場面が増えた。
MCPサーバーの承認制御:–permission-prompt-tool
Claude Codeはデフォルトでツール呼び出しの前に確認を求めるが、--permission-prompt-toolオプションで独自の承認ロジックを実装したMCPサーバーを指定することもできる。これにより、組織のポリシーに基づいた細粒度のアクセス制御が可能になる。CI/CD環境での自動化と、ヒューマンインザループの安全弁を両立させる際に有効だ。
まとめ
Claude Code MCPは、AIエージェントと外部世界を繋ぐための標準規格だ。設定の基本はclaude mcp addコマンドまたは.mcp.jsonへの記述であり、GitHub・PostgreSQL・Brave Searchなどの主要サーバーはnpxで手軽に追加できる。社内ツールとの連携が必要な場合はMCP SDKを使ってカスタムサーバーを自作することで、あらゆる外部システムをClaude Codeの能力として取り込める。
実務活用において最も重要なのは、最小権限の原則に基づく権限設計と、CLAUDE.mdによるコンテキスト管理の組み合わせだ。MCPの利便性とセキュリティは相反しない。適切に設計されたMCP環境は、開発者が「コードを書く作業」から「解決すべき問題を考える作業」に集中できるための、強力な実務基盤になる。
関連記事
- Claude Codeとは(総合ガイド)
- claude code api 料金
- claude code codex 比較
- claude code cursor 比較
- claude code hooks
Study about AI
AIについて学ぶ
-
claude code 権限設定|2026年版ガイド
Claude Code 権限設定の完全ガイド|実務で使える設定例と運用ノウハウ Claude Codeを業務で活用する際、最初の壁になるのが権限設定です。ファイ...
-
claude code 拡張機能|2026年版ガイド
Claude Code 拡張機能とは——できることと全体像 Claude Codeは、AnthropicのAIアシスタント「Claude」をターミナル上で動かす...
-
claude code 学習させない設定|2026年版ガイド
Claude Codeに学習させない設定とは何か Claude Codeを業務で使っていると「自分が入力したコードや会話内容がAnthropicのAI学習に使わ...