MCPとは(Model Context Protocol)
MCP(Model Context Protocol)は、Claude Codeに外部ツールやサービスを接続するための標準プロトコルです。MCPを使うことで、Claude CodeがGitHub、Slack、データベース、ブラウザなど、様々な外部システムと連携できるようになります。
MCPで何ができるようになるか
MCPサーバーを追加することで、Claude Codeの能力が大幅に拡張されます。
| カテゴリ | できること | 例 |
|----------|------------|-----|
| バージョン管理 | GitHub/GitLabの操作 | PRの作成、Issue管理 |
| コミュニケーション | チャットツール連携 | Slackへの通知、メッセージ送信 |
| データベース | DB直接操作 | クエリ実行、スキーマ確認 |
| ブラウザ | Web操作 | スクレイピング、自動テスト |
| ファイル | 高度なファイル操作 | 画像処理、PDF操作 |
| API | 外部サービス連携 | Notion、Jira、Figmaなど |
MCPの仕組み
MCPはクライアント-サーバーモデルで動作します。
Claude Code(クライアント)
↓ MCPプロトコル
MCPサーバー(GitHub, Slack, etc.)
↓ 各サービスのAPI
外部サービス
Claude Codeが「GitHubにPRを作成して」と指示を受けると:
- Claude CodeがMCPプロトコルでGitHub MCPサーバーに依頼
- MCPサーバーがGitHub APIを呼び出してPRを作成
- 結果がClaude Codeに返され、ユーザーに報告
人気のMCPサーバー一覧
公式MCPサーバー
Anthropicおよびコミュニティが提供する主要なMCPサーバーです。
| サーバー名 | 用途 | 提供元 |
|------------|------|--------|
| filesystem | ファイル操作 | 公式 |
| github | GitHub操作 | 公式 |
| gitlab | GitLab操作 | 公式 |
| slack | Slack連携 | 公式 |
| postgres | PostgreSQL | 公式 |
| sqlite | SQLite | 公式 |
| puppeteer | ブラウザ操作 | 公式 |
| playwright | ブラウザ自動化 | コミュニティ |
filesystem(ファイル操作)
ローカルファイルの読み書きを行います。Claude Code標準のファイル操作より高度な操作が可能です。
# インストール
claude mcp add filesystem -s user -- \
npx -y @modelcontextprotocol/server-filesystem /path/to/allowed/dir
できること:
- 特定ディレクトリへのアクセス制限
- 大量ファイルの一括操作
- バイナリファイルの操作
github(GitHub操作)
GitHubのリポジトリ、Issue、Pull Requestを操作します。
# インストール
claude mcp add github -s user \
-e GITHUB_PERSONAL_ACCESS_TOKEN=ghp_xxxxxxxxxxxx \
-- npx -y @modelcontextprotocol/server-github
できること:
- PRの作成・レビュー・マージ
- Issueの作成・クローズ
- ブランチの作成・削除
- コードの検索
Personal Access Tokenの作成方法:
- GitHubにログイン
- Settings → Developer settings → Personal access tokens → Tokens (classic)
- Generate new token → 必要なスコープを選択(repo, read:org推奨)
slack(Slack連携)
Slackへのメッセージ送信やチャンネル管理を行います。
# インストール
claude mcp add slack -s user \
-e SLACK_BOT_TOKEN=xoxb-xxxxxxxxxxxx \
-- npx -y @modelcontextprotocol/server-slack
できること:
- チャンネルへのメッセージ送信
- DM送信
- チャンネル一覧の取得
- メッセージの検索
Slack Bot Tokenの取得方法:
- Slack APIにアクセス
- Create New App → From scratch
- OAuth & Permissions → Bot Token Scopes で必要な権限を追加
- Install to Workspace → Bot User OAuth Token をコピー
postgres / sqlite(データベース)
データベースへの直接アクセスを提供します。
# PostgreSQL
claude mcp add postgres -s user \
-e DATABASE_URL=postgresql://user:pass@localhost:5432/dbname \
-- npx -y @modelcontextprotocol/server-postgres
# SQLite
claude mcp add sqlite -s user \
-- npx -y @modelcontextprotocol/server-sqlite /path/to/database.db
できること:
- SQLクエリの実行
- テーブル構造の確認
- データの取得・更新
注意: 本番データベースへの接続は慎重に。READ ONLYユーザーの使用を推奨。
playwright(ブラウザ自動化)
Playwrightを使ったブラウザ操作を行います。
# インストール
claude mcp add playwright -s user \
-- npx -y @anthropic/mcp-server-playwright
できること:
- Webページのスクレイピング
- フォームの自動入力
- スクリーンショットの取得
- E2Eテストの実行
MCPサーバーのインストール方法
基本構文
claude mcp add <サーバー名> [オプション] -- <コマンド>
スコープオプション
MCPサーバーはスコープを指定してインストールします。
| オプション | 説明 | 設定ファイル |
|------------|------|--------------|
| -s local | 現在のプロジェクトのみ | .mcp.json |
| -s project | プロジェクト共有 | .mcp.json(Git管理) |
| -s user | 全プロジェクトで利用 | ~/.claude/mcp.json |
使い分けの目安:
-s local: プロジェクト固有の設定(個人用)-s project: チームで共有したい設定-s user: どのプロジェクトでも使うツール(GitHub, Slackなど)
環境変数の設定
APIキーなどは-eオプションで環境変数として渡します。
claude mcp add github -s user \
-e GITHUB_PERSONAL_ACCESS_TOKEN=ghp_xxxx \
-e GITHUB_ENTERPRISE_URL=https://github.mycompany.com \
-- npx -y @modelcontextprotocol/server-github
設定ファイルの直接編集
~/.claude/mcp.jsonを直接編集することも可能です。
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxxxxxxxxxxx"
}
},
"slack": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-slack"],
"env": {
"SLACK_BOT_TOKEN": "xoxb-xxxxxxxxxxxx"
}
}
}
}
MCPサーバーの管理コマンド
一覧表示
# インストール済みサーバーを一覧表示
claude mcp list
詳細確認
# 特定サーバーの詳細を確認
claude mcp get github
削除
# サーバーを削除
claude mcp remove github
セッション内での確認
Claude Code起動中に、利用可能なMCPツールを確認できます。
/mcp
MCPサーバーの自作
既存のMCPサーバーで要件を満たせない場合、自作することも可能です。
最小構成のMCPサーバー(Node.js)
// server.js
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
const server = new Server({
name: "my-custom-server",
version: "1.0.0",
}, {
capabilities: {
tools: {}
}
});
// ツールを定義
server.setRequestHandler("tools/list", async () => ({
tools: [{
name: "hello",
description: "挨拶を返す",
inputSchema: {
type: "object",
properties: {
name: { type: "string", description: "名前" }
},
required: ["name"]
}
}]
}));
// ツールの実行
server.setRequestHandler("tools/call", async (request) => {
if (request.params.name === "hello") {
const name = request.params.arguments.name;
return {
content: [{ type: "text", text: `こんにちは、${name}さん!` }]
};
}
});
// サーバー起動
const transport = new StdioServerTransport();
await server.connect(transport);
インストール
claude mcp add my-server -s local -- node /path/to/server.js
トラブルシューティング
MCPサーバーが動作しない
# サーバーの状態を確認
claude mcp list
# ログを確認
claude --mcp-debug
「Tool not found」エラー
MCPサーバーが正しく起動していない可能性があります。
# サーバーを再インストール
claude mcp remove github
claude mcp add github -s user \
-e GITHUB_PERSONAL_ACCESS_TOKEN=ghp_xxxx \
-- npx -y @modelcontextprotocol/server-github
環境変数が読み込まれない
環境変数は-eオプションで明示的に渡す必要があります。シェルの環境変数は自動では引き継がれません。
パフォーマンスの問題
MCPサーバーが多すぎると、起動時にすべて読み込まれるためパフォーマンスが低下します。
対策:
- 不要なサーバーは削除する
ENABLE_TOOL_SEARCH=trueを設定して動的検索モードにする
export ENABLE_TOOL_SEARCH=true
claude
セキュリティ上の注意点
APIキーの管理
- APIキーをコードや設定ファイルに直接書かない(環境変数を使う)
- 定期的にキーをローテーションする
- 必要最小限の権限だけを付与する
データベース接続
- 本番DBには接続しない(READ ONLYユーザーを使う)
- 機密データが含まれるテーブルへのアクセスを制限する
ファイルシステムアクセス
- filesystemサーバーには必要なディレクトリのみ許可する
- ホームディレクトリ全体を許可しない
まとめ
MCPを活用することで、Claude Codeの能力を大幅に拡張できます。
MCPサーバー導入のチェックリスト
- [ ] 必要なMCPサーバーを特定
- [ ] APIキー・トークンを取得
- [ ] 適切なスコープ(local/project/user)を選択
- [ ] インストールコマンドを実行
- [ ] 動作確認(
/mcpコマンド) - [ ] セキュリティ設定の確認
おすすめの導入順序
- GitHub: PRやIssueの操作に便利
- PostgreSQL/SQLite: データベース操作が必要なら
- Slack: チーム通知に便利
- Playwright: Web操作・テストが必要なら
関連記事
- [Claude Codeとは?使い方・始め方・料金を徹底解説](/posts/what-is-claude-code/)
- [Claude Codeの始め方【インストールから初回実行まで】](/posts/getting-started/)
- [CLAUDE.mdの書き方完全ガイド](/posts/claude-md-guide/)
- [Claude Codeの料金プラン徹底比較](/posts/pricing-guide/)