MCPサーバーでClaude Codeを拡張する ― 外部ツール連携ガイド
Model Context Protocolで無限の拡張性を手に入れる
はじめに
MCP(Model Context Protocol)は、Claude Codeの機能を外部ツールやデータソースと接続して拡張するためのオープンプロトコルです。データベースへの直接クエリ、GitHub操作、Web検索など、Claude Code単体ではできない操作を可能にします。
この記事では、MCPの仕組みから、人気のMCPサーバーの設定方法、カスタムツールの作成、セキュリティ対策までを包括的に解説します。
MCPとは何か
Model Context Protocol(MCP)は、Anthropicが策定したオープンスタンダードで、AIアシスタントと外部ツール・データソースを接続するための通信規格です。
MCPの基本概念
- オープンプロトコル:誰でもMCPサーバーを作成・共有できる
- ツールの拡張:Claude Codeに新しいツール(機能)を追加できる
- データ接続:外部のデータベースやAPIにAIが直接アクセスできる
- 標準化:異なるAIアシスタント間で互換性のあるツール定義
MCPがない場合 vs ある場合
| 操作 | MCPなし | MCPあり |
|---|---|---|
| データベース操作 | SQLファイルを書いて手動実行 | AIが直接クエリを実行 |
| GitHub操作 | CLIコマンドを手動で実行 | AIがPR作成・レビューを直接実行 |
| Web検索 | ブラウザで検索して結果を貼り付け | AIが検索結果を直接取得 |
| ファイルシステム | 基本的な読み書きのみ | 高度なファイル操作や監視 |
| 外部API | curlコマンドを手動実行 | AIが直接APIを呼び出し |
MCPの仕組み
MCPはクライアント-サーバーアーキテクチャで動作します。
MCPの動作フロー
- サーバー起動:MCPサーバープロセスが起動し、利用可能なツールを公開
- 接続確立:Claude Code(MCPクライアント)がサーバーに接続
- ツール一覧の取得:利用可能なツールの名前・引数・説明をClaude Codeが受け取る
- ユーザーの指示:ユーザーがタスクを指示
- ツール呼び出し:AIが適切なMCPツールを選択して呼び出す
- 結果の返却:MCPサーバーがツールの実行結果をAIに返す
- 応答の生成:AIが結果を踏まえてユーザーに応答
アーキテクチャ図
┌─────────────┐ JSON-RPC ┌──────────────────┐
│ Claude Code │ ◄────────────► │ MCPサーバー │
│ (MCPクライアント)│ │ (ツール提供側) │
└─────────────┘ └──────────────────┘
│
▼
┌──────────────────┐
│ 外部サービス │
│ DB / API / FS │
└──────────────────┘
MCPサーバーの設定方法
MCPサーバーの設定はclaude mcp addコマンドで行います。設定は.mcp.json(プロジェクト単位)または~/.claude.json(グローバル)に保存されます。
基本的な設定構文
{
"mcpServers": {
"サーバー名": {
"command": "実行コマンド",
"args": ["引数1", "引数2"],
"env": {
"環境変数名": "値"
}
}
}
}
設定の要素
| 要素 | 説明 | 例 |
|---|---|---|
| command | MCPサーバーの実行コマンド | "npx", "python", "node" |
| args | コマンドの引数 | ["-m", "mcp-server-sqlite"] |
| env | 環境変数 | APIキー、DBパス等 |
設定の反映
# 設定ファイルを編集後、Claude Codeを再起動
# または、claude mcp コマンドで管理
claude mcp add サーバー名 -- コマンド 引数
# 例:SQLite MCPサーバーを追加
claude mcp add sqlite -- npx -y @anthropic/mcp-server-sqlite --db-path ./db/myapp.db
# 設定済みのMCPサーバーを確認
claude mcp list
# MCPサーバーを削除
claude mcp remove サーバー名
人気のMCPサーバー
1. Filesystem(ファイルシステム)
用途:高度なファイル操作
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/project"]
}
}
}
提供されるツール:ファイル検索、ディレクトリ一覧、ファイル移動、メタデータ取得など。Claude Codeの組み込みファイル操作よりも高度な操作が可能です。
2. GitHub
用途:GitHub操作の自動化
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxxxxxxxxxxx"
}
}
}
}
提供されるツール:リポジトリ操作、Issue作成・管理、Pull Request作成・レビュー、コミット履歴の取得など。
3. SQLite
用途:データベースの直接操作
{
"mcpServers": {
"sqlite": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-server-sqlite", "--db-path", "./db/myapp.db"]
}
}
}
提供されるツール:SQLクエリ実行、テーブル一覧、スキーマ確認、データ挿入・更新・削除。AIがSQLを生成して直接実行できます。
4. Brave Search
用途:Web検索
{
"mcpServers": {
"brave-search": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-brave-search"],
"env": {
"BRAVE_API_KEY": "your-api-key"
}
}
}
}
提供されるツール:Web検索、ニュース検索。AIがリアルタイムの情報を検索して回答に反映できます。
5. Fetch(Webフェッチ)
用途:WebページやAPIの取得
{
"mcpServers": {
"fetch": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-server-fetch"]
}
}
}
提供されるツール:URLからのコンテンツ取得。APIドキュメントの取得、Webページの内容確認などに活用できます。
MCPサーバー比較表
| サーバー | 主な機能 | APIキー | おすすめ度 |
|---|---|---|---|
| Filesystem | ファイル操作 | 不要 | ★★★ |
| GitHub | GitHub API | 必要 | ★★★ |
| SQLite | DB操作 | 不要 | ★★★ |
| Brave Search | Web検索 | 必要 | ★★☆ |
| Fetch | Web取得 | 不要 | ★★☆ |
カスタムMCPツールの作成
既存のMCPサーバーで足りない場合は、自分でカスタムMCPサーバーを作成できます。
Node.jsでの基本構造
// my-mcp-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: "check_website_status",
description: "指定されたWebサイトのステータスコードを確認します",
inputSchema: {
type: "object",
properties: {
url: {
type: "string",
description: "確認するURL"
}
},
required: ["url"]
}
}
]
}));
// ツールの実装
server.setRequestHandler("tools/call", async (request) => {
if (request.params.name === "check_website_status") {
const { url } = request.params.arguments;
try {
const response = await fetch(url);
return {
content: [{
type: "text",
text: `URL: ${url}\nStatus: ${response.status}\nOK: ${response.ok}`
}]
};
} catch (error) {
return {
content: [{
type: "text",
text: `Error: ${error.message}`
}],
isError: true
};
}
}
});
// サーバー起動
const transport = new StdioServerTransport();
await server.connect(transport);
カスタムサーバーの登録
# カスタムサーバーを登録
claude mcp add my-custom -- node /path/to/my-mcp-server.js
セキュリティの考慮事項
MCPサーバーは外部リソースにアクセスするため、セキュリティに十分注意する必要があります。
セキュリティチェックリスト
- 信頼できるソースのみ使用:公式または信頼できる開発者のMCPサーバーのみインストール
- 最小権限の原則:MCPサーバーに必要最小限の権限のみ付与
- APIキーの管理:環境変数やシークレット管理ツールを使用。設定ファイルにハードコードしない
- ネットワークアクセス制限:不要な外部通信を制限
- データベースは読み取り専用を検討:本番DBに接続する場合は読み取り専用ユーザーを使用
- 定期的なアップデート:MCPサーバーのセキュリティパッチを適用
APIキーの安全な管理
# 悪い例:設定ファイルにAPIキーを直接記述
{
"env": {
"API_KEY": "sk-xxxxxxxxxxxxx" # 危険!
}
}
# 良い例:環境変数を参照
{
"env": {
"API_KEY": "${MY_API_KEY}" # 環境変数から取得
}
}
# 環境変数の設定(.bashrc等)
export MY_API_KEY="sk-xxxxxxxxxxxxx"
実践的なユースケース
ケース1: データベース駆動の開発
SQLite MCPサーバーを使って、AIがデータベースの内容を確認しながらコードを書くワークフロー。
# Claude Codeでの会話例
> newsテーブルの構造を確認して、最新5件のニュースを
> 表示するPHP関数を書いてください
# AIが内部的にMCPツールを使って:
# 1. テーブルのスキーマを確認
# 2. 実際のデータを確認
# 3. データに合った適切なコードを生成
ケース2: GitHubワークフロー自動化
GitHub MCPサーバーを使って、Issue管理からPR作成までをAIが一貫して行うワークフロー。
# Claude Codeでの会話例
> Issue #42のバグを修正して、修正内容のPRを作成してください
# AIが内部的に:
# 1. GitHub MCPでIssue #42の内容を取得
# 2. バグの原因を調査・修正
# 3. コミットを作成
# 4. GitHub MCPでPRを作成(Issue #42への参照を含む)
ケース3: リアルタイム情報を使った開発
Fetch MCPサーバーを使って、最新のAPIドキュメントを参照しながら連携コードを書くワークフロー。
# Claude Codeでの会話例
> Stripe APIの最新ドキュメントを確認して、
> 決済処理の実装を更新してください
# AIが内部的に:
# 1. Fetch MCPでStripeのAPIドキュメントを取得
# 2. 最新の仕様を確認
# 3. 既存コードを最新仕様に合わせて更新
まとめ
MCPサーバーによるClaude Code拡張のポイント:
- MCPの本質:AIと外部ツール・データを接続するオープンプロトコル
- 設定方法:settings.jsonまたは
claude mcp addコマンドで登録 - 人気サーバー:Filesystem、GitHub、SQLite、Brave Search、Fetch
- カスタム作成:Node.jsやPythonでMCP SDKを使って独自サーバーを構築可能
- セキュリティ:信頼できるソースのみ使用、最小権限、APIキーの安全な管理
- 実践活用:DB駆動開発、GitHub自動化、リアルタイム情報参照などで開発効率を向上
まずはSQLite MCPサーバーなど、APIキー不要のサーバーから試してみましょう。MCPの威力を実感したら、プロジェクトに合ったカスタムサーバーの作成にも挑戦してみてください。