Claude Code の MCP サーバー設定完全ガイド|推奨サーバー一覧と実装例

Claude Code の MCP サーバー設定完全ガイド|推奨サーバー一覧と実装例

AI Beat(エーアイビート)編集部です。

「Claude Code で MCP サーバーを使いたいが、設定方法がわからない」「どのサーバーを入れればいいのかリストが見当たらない」という声を最近よく聞きます。MCP(Model Context Protocol)の登場以降、Claude Code の拡張性は大幅に上がりましたが、設定手順が散在していてまとまった情報源がないのが現状です。

編集部で実際に Claude Code 上で filesystem・git・github・playwright の各サーバーをセットアップし、日常の開発フローに組み込んで検証しました。その経験をもとに、概念の解説から具体的な設定例、セキュリティ上の注意点まで一本にまとめました。

この記事では、以下の内容を解説します。

  • MCP とは何か、なぜ Claude Code に重要なのか
  • 推奨 MCP サーバー一覧(filesystem / git / github / playwright / postgres ほか)とユースケース
  • 環境別(macOS / Linux / Windows WSL)セットアップ手順
  • カスタム MCP サーバーの自作方法
  • セキュリティ・認可のベストプラクティス

※ 本記事は 2026 年 4 月時点の情報をもとにしています。MCP 仕様およびサーバー実装は更新が頻繁なため、最新情報は各公式ドキュメントをご確認ください。

MCP(Model Context Protocol)とは

MCP(Model Context Protocol)とは

MCP(Model Context Protocol)とは、AI モデルが外部ツールやデータソースと標準化された方法でやり取りするための通信プロトコルです。

2024 年 11 月、Anthropic がオープンソースとして公開しました。それ以前は AI アシスタントがファイルシステムを読んだり、データベースに問い合わせたりするには、各ツールごとに個別のインテグレーションを実装する必要がありました。MCP はその「バラバラなインテグレーション問題」を、単一のオープン規格で解決します。

MCP が解決する課題

従来の AI インテグレーションには 3 つの壁がありました。第一に、各ツールへのアクセスを AI 側で個別実装する必要があること。第二に、ツールのバージョンや API が変わるたびに対応コードを書き直すこと。第三に、異なる AI プロバイダー間でインテグレーションを使い回せないこと。

MCP はこれを「クライアント–サーバーモデル」で置き換えます。AI(クライアント)は MCP サーバーに対して標準メッセージを送るだけ。サーバー側は受け取ったリクエストをそれぞれのツール(ファイルシステム、Git、データベース等)に橋渡しします。AI を変えてもサーバーはそのまま使えます。

MCP の基本アーキテクチャ

コンポーネント役割具体例
MCP HostAI モデルを内包するアプリClaude Code、Claude Desktop
MCP Clientサーバーとの接続を管理するモジュールClaude Code 内のクライアント実装
MCP Serverツール・リソースを公開するプロセスfilesystem-server、git-server 等
Transport Layer通信方式stdio(ローカル)、SSE(リモート)

MCP の公式仕様は Model Context Protocol 公式サイトで確認できます。JSON-RPC 2.0 をベースとした軽量な設計で、stdio と HTTP+SSE の 2 種類のトランスポートをサポートしています。

Claude Code での MCP 概要

Claude Code での MCP 概要

Claude Code は Anthropic が提供するターミナルベースの AI コーディングアシスタントです。MCP サポートが組み込まれており、設定ファイルに数行書くだけで外部サーバーと連携できます。

Claude Code における MCP の位置づけ

Claude Code 単体では、会話コンテキスト内のテキストしか扱えません。MCP を使うことで「ローカルファイルを直接読む」「Git ログを参照する」「データベースに問い合わせる」「ブラウザを操作する」といった操作がチャット内でシームレスに行えるようになります。

編集部で実際に試したところ、filesystem サーバーを設定するだけで「このリポジトリの src/ 以下にある全 TypeScript ファイルのインポート構造を分析して」という依頼に対して、Claude Code がファイルを自律的に走査して回答するようになりました。手元で試す前は「どこまでできるのか」半信半疑でしたが、想像より格段に深い分析が返ってきて驚きました。

設定ファイルの場所と形式

Claude Code の MCP 設定は claude.json(または .claude/settings.json)で管理します。設定ファイルの優先度はプロジェクトローカル > ユーザーグローバルの順です。

// ~/.claude.json(グローバル設定の例)
{
  "mcpServers": {
    "サーバー名": {
      "command": "実行コマンド",
      "args": ["引数1", "引数2"],
      "env": {
        "環境変数名": "値"
      }
    }
  }
}

公式ドキュメントの MCP 設定リファレンスは Anthropic 公式 Claude Code MCP ガイドで確認できます。

  • 設定ファイルは JSON 形式。コメント(//)は標準 JSON では使えないため、実際のファイルには書かないこと
  • プロジェクトルートの .claude/settings.json に書くとリポジトリ単位で設定を管理できる
  • グローバル設定(~/.claude.json)はすべてのプロジェクトに適用される

推奨 MCP サーバー一覧

推奨 MCP サーバー一覧

Anthropic 公式および OSS コミュニティが公開している MCP サーバーを、用途別に整理しました。公式 MCP Servers リポジトリでは 20 以上のリファレンス実装が公開されています。

filesystem — ローカルファイル操作

最も基本的なサーバーです。指定したディレクトリ以下のファイルを読み書きする権限を Claude Code に与えます。

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/yourname/projects",
        "/Users/yourname/Documents"
      ]
    }
  }
}

args の末尾にアクセスを許可するディレクトリを列挙します。ホームディレクトリ全体(/)を渡すのはセキュリティリスクになるため、プロジェクトディレクトリに限定することを推奨します。

git — Git リポジトリ操作

コミット履歴の閲覧、ファイルの diff 取得、ブランチ操作などを Claude Code から直接行えるようにします。

{
  "mcpServers": {
    "git": {
      "command": "uvx",
      "args": [
        "mcp-server-git",
        "--repository",
        "/Users/yourname/projects/myrepo"
      ]
    }
  }
}

uvx を使う場合は Python の uv パッケージマネージャーが必要です。npm 経由で使いたい場合は @modelcontextprotocol/server-git も利用できます。

github — GitHub API 連携

Issue・PR の作成・更新、リポジトリの検索、コードの参照などを Claude Code 経由で行えます。GitHub Actions のトリガーにも対応しています。

{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": ""
      }
    }
  }
}

PAT(Personal Access Token)は最小権限で発行してください。読み取り専用ユースケースなら repo:read のみで十分です。トークンを設定ファイルに直書きするのは避け、環境変数経由で渡す構成が理想です(後述のセキュリティセクション参照)。

playwright — ブラウザ自動操作

Web ページのスクリーンショット取得、フォームの入力、ボタンのクリックなど、ブラウザ操作を Claude Code に委ねられます。E2E テストの自動生成にも活用できます。

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": ["-y", "@playwright/mcp@latest"]
    }
  }
}

Playwright の MCP サーバーは Microsoft の公式リポジトリで管理されています。ヘッドレス/ヘッドありの切り替えはサーバー起動時のオプションで指定できます。

postgres — データベース操作

PostgreSQL データベースに対して SELECT クエリを発行し、スキーマを確認したり、データを分析したりできます。

{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-postgres",
        "postgresql://username:password@localhost/dbname"
      ]
    }
  }
}

接続文字列にパスワードを含める場合は、設定ファイルを Git 管理から除外する(.gitignore に追加する)か、env フィールドで環境変数参照にしてください。

その他の注目サーバー

サーバー名主な用途パッケージ
fetch任意の URL を取得・テキスト変換@modelcontextprotocol/server-fetch
memory会話をまたいだ知識グラフの保持@modelcontextprotocol/server-memory
slackSlack チャンネルの読み書き@modelcontextprotocol/server-slack
google-driveGoogle Drive のファイル参照@modelcontextprotocol/server-gdrive
brave-searchWeb 検索(Brave Search API)@modelcontextprotocol/server-brave-search
sqliteSQLite DB の操作@modelcontextprotocol/server-sqlite
💡 ワンポイント 編集部では「まず filesystem と git の 2 本から始める」ことを推奨しています。この 2 つを入れるだけでも、ローカルコードのレビューや変更差分の確認が Claude Code 上で完結するようになり、開発体験が大きく変わります。

環境別セットアップ手順

環境別セットアップ手順

MCP サーバーの設定は OS ごとにパスの書き方が異なります。以下に macOS・Linux・Windows WSL それぞれの手順をまとめました。

macOS / Linux の場合

前提として Node.js(v18 以上)と npm が必要です。npx コマンドが使えることを確認してから進めてください。

  1. Claude Code をインストールnpm install -g @anthropic-ai/claude-code で最新版を取得します
  2. 設定ファイルを作成~/.claude.json が存在しない場合は新規作成します
  3. mcpServers セクションを追加。上記の設定例を参考に、使用したいサーバーを記述します
  4. Claude Code を再起動。設定の再読み込みにはセッションの再起動が必要です
  5. 接続確認/mcp コマンドで接続済みサーバーの一覧と状態を確認できます
# Node.js のバージョン確認
node --version  # v18.0.0 以上が必要

# Claude Code インストール
npm install -g @anthropic-ai/claude-code

# 設定ファイルの作成(存在しない場合)
touch ~/.claude.json

# Claude Code 起動後、MCP 接続確認
> /mcp

Windows WSL 環境の場合

Windows では WSL 2(Ubuntu 推奨)上での動作を推奨します。Claude Code は Windows ネイティブより WSL での動作が安定しています。

# WSL 内での Node.js セットアップ(nvm 使用推奨)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install 20
nvm use 20

# Claude Code インストール
npm install -g @anthropic-ai/claude-code

# 設定ファイルはWSLのホームディレクトリに作成
# ~/.claude.json(WSL側のパスを使う)

Windows のファイルシステム(C: ドライブ等)を filesystem サーバーに渡す場合は、WSL からのパス表記(/mnt/c/Users/yourname/)を使います。

プロジェクト単位での設定(推奨)

チームで開発する場合は、プロジェクトルートの .claude/settings.json に設定を書いてリポジトリに含めると、メンバー全員が同じ MCP 環境を使えます。

# プロジェクトルートで実行
mkdir -p .claude
cat > .claude/settings.json << 'EOF'
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "."
      ]
    },
    "git": {
      "command": "uvx",
      "args": ["mcp-server-git", "--repository", "."]
    }
  }
}
EOF

機密情報(PAT・DB パスワード)を含む設定は .claude/settings.local.json に書き、.gitignore で除外します。公開リポジトリへのクレデンシャル混入を防ぐための標準パターンです。

カスタム MCP サーバーの作成

カスタム MCP サーバーの作成

既存のサーバーにない機能が必要な場合、MCP SDK を使って独自サーバーを実装できます。TypeScript と Python の両方で SDK が提供されています。

TypeScript での実装例

社内 API や独自データソースに接続するカスタムサーバーを TypeScript で作る最小構成です。

// package.json に追加
// "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" }

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-custom-server", version: "1.0.0" },
  { capabilities: { tools: {} } }
);

// ツール一覧を返す
server.setRequestHandler(ListToolsRequestSchema, async () => ({
  tools: [
    {
      name: "get_data",
      description: "社内 API からデータを取得します",
      inputSchema: {
        type: "object",
        properties: {
          query: { type: "string", description: "検索クエリ" },
        },
        required: ["query"],
      },
    },
  ],
}));

// ツールを実行する
server.setRequestHandler(CallToolRequestSchema, async (request) => {
  if (request.params.name === "get_data") {
    const query = request.params.arguments?.query as string;
    // ここで実際の API 呼び出しを行う
    const result = await fetchFromInternalAPI(query);
    return { content: [{ type: "text", text: JSON.stringify(result) }] };
  }
  throw new Error(`Unknown tool: ${request.params.name}`);
});

async function main() {
  const transport = new StdioServerTransport();
  await server.connect(transport);
}

main().catch(console.error);

Python での実装例

データサイエンス系のツールや Python 製の既存ライブラリと連携する場合は Python SDK が便利です。

# pip install mcp

from mcp.server import Server
from mcp.server.stdio import stdio_server
from mcp.types import Tool, TextContent

app = Server("my-python-server")

@app.list_tools()
async def list_tools():
    return [
        Tool(
            name="analyze_data",
            description="pandas でデータを分析します",
            inputSchema={
                "type": "object",
                "properties": {
                    "filepath": {"type": "string"},
                },
                "required": ["filepath"],
            },
        )
    ]

@app.call_tool()
async def call_tool(name: str, arguments: dict):
    if name == "analyze_data":
        import pandas as pd
        df = pd.read_csv(arguments["filepath"])
        summary = df.describe().to_string()
        return [TextContent(type="text", text=summary)]

async def main():
    async with stdio_server() as streams:
        await app.run(streams[0], streams[1], app.create_initialization_options())

if __name__ == "__main__":
    import asyncio
    asyncio.run(main())

TypeScript SDK の詳細は MCP TypeScript SDK リポジトリを、Python SDK は MCP Python SDK リポジトリを参照してください。

カスタムサーバーの登録方法

作成したサーバーは通常のサーバーと同様に claude.jsoncommand に起動コマンドを書くだけで登録できます。

{
  "mcpServers": {
    "my-custom": {
      "command": "node",
      "args": ["/path/to/my-server/dist/index.js"]
    },
    "my-python": {
      "command": "python",
      "args": ["/path/to/my-server/server.py"]
    }
  }
}

セキュリティ・認可ベストプラクティス

セキュリティ・認可ベストプラクティス

MCP サーバーに広い権限を与えすぎると、意図しないファイルの読み書きや外部 API へのアクセスが発生するリスクがあります。以下の原則を守ってください。

最小権限の原則

  • filesystem サーバー:アクセス許可ディレクトリはプロジェクト単位に絞る。ホームディレクトリ全体や / は渡さない
  • github サーバー:PAT のスコープは用途に応じた最小スコープのみ付与する。書き込みが不要なら read-only で発行
  • postgres サーバー:DB ユーザーは READ-ONLY 権限で作成し、本番 DB への直接接続は避ける
  • playwright サーバー:社内認証情報を扱うページへのアクセスには注意。ブラウザプロファイルの分離を推奨

クレデンシャル管理

API キーやパスワードを設定ファイルに直書きするのは避けましょう。推奨する管理方法は以下の 3 つです。

方法設定例推奨度
環境変数(シェル)GITHUB_PAT=xxx claude のように起動時に渡す★★★(推奨)
.env ファイルローカルの .env.local に書いて .gitignore 除外★★☆(許容)
設定ファイルへの直書き.claude.json に直接記載★☆☆(非推奨)
# 環境変数で渡す例(シェル起動スクリプトや .env.local を使う)
export GITHUB_PERSONAL_ACCESS_TOKEN="ghp_xxxxxxxxxxxx"
export DATABASE_URL="postgresql://user:pass@localhost/mydb"

# または .env.local に記載して gitignore に追加
echo "GITHUB_PERSONAL_ACCESS_TOKEN=ghp_xxx" >> .env.local
echo ".env.local" >> .gitignore

設定ファイルの Git 管理

プロジェクト設定(.claude/settings.json)は Git で管理して共有しますが、ローカルの秘密情報を含む .claude/settings.local.json は必ず .gitignore に追加してください。

# .gitignore に追加
.claude/settings.local.json
.env.local
*.env
💡 ワンポイント GitHub のシークレットスキャン機能は PAT や API キーが誤ってコミットされると即座に検知・通知します。それでも、一度でも push したトークンは失効させて再発行するのが原則です。設定ファイルの git add 前に git diff --staged で内容を確認するクセをつけましょう。

トラブルシューティング

トラブルシューティング

MCP サーバーを設定しても接続できない場合の確認手順をまとめました。

よくある接続エラーと対処法

エラー / 症状原因対処法
サーバーが一覧に表示されないJSON の構文エラーcat ~/.claude.json | python3 -m json.tool で構文チェック
「command not found」npx / uvx がインストールされていないwhich npx で確認。Node.js のインストールから
タイムアウトエラーサーバープロセスが起動に時間がかかる初回は npx がパッケージをダウンロードするため待つ
Permission denied(filesystem)指定パスへのアクセス権がないディレクトリの権限を ls -la で確認
認証エラー(github)PAT の権限不足 or 期限切れGitHub 設定で PAT のスコープと有効期限を確認

デバッグ方法

Claude Code の /mcp コマンドを実行すると、接続済みサーバーの一覧と各サーバーのステータス(connected / error)が表示されます。エラー状態のサーバーはエラーメッセージも表示されるため、問題の特定に使えます。

# Claude Code セッション内で実行
> /mcp
# 出力例:
# MCP Servers:
#   filesystem: connected (tools: read_file, write_file, list_directory ...)
#   git: connected (tools: git_log, git_diff, git_status ...)
#   github: error: Authentication failed

より詳細なログが必要な場合は、環境変数 MCP_LOG_LEVEL=debug を設定して Claude Code を起動します。サーバープロセスの標準エラー出力がログに流れるようになります。

npx キャッシュの問題

npx のキャッシュが古いバージョンを掴んでいる場合、最新の MCP サーバーパッケージが使われないことがあります。-y フラグを付けるのと合わせて、定期的にキャッシュをクリアしてください。

# npx キャッシュのクリア
npx clear-npx-cache

# または
rm -rf ~/.npm/_npx

よくある質問(FAQ)

よくある質問(FAQ)

Q. MCP サーバーは無料で使えますか?

A. Anthropic 公式および OSS コミュニティが提供する MCP サーバー自体は無料で使えます。ただし、github サーバーで GitHub API を使う場合の API 制限、postgres サーバーで接続する DB のコスト、brave-search サーバーで使う Brave Search API の費用(有料プラン)などは別途かかります。Claude Code 自体の利用料金については Anthropic の公式料金ページをご確認ください。

Q. 複数の MCP サーバーを同時に使えますか?

A. 使えます。mcpServers オブジェクトに複数のサーバーを列挙するだけで、すべて同時に起動します。ただしサーバーが多いほど起動時間が増えるため、実際に使うサーバーだけを設定することを推奨します。1 セッションで 5〜10 サーバーを同時起動している構成も動作します。

Q. Claude Code 以外でも MCP サーバーを使えますか?

A. 使えます。MCP はオープンな規格のため、Claude Desktop、Cursor、VS Code の Copilot Chat 拡張など、MCP クライアントを実装したアプリであれば同じサーバー設定をそのまま流用できます。これが MCP の最大のメリットの一つです。詳しくは MCP 公式のクライアント一覧ページをご覧ください。

Q. MCP サーバーのバージョンはどう管理しますか?

A. npx -y @modelcontextprotocol/server-filesystem のように -y フラグで latest を使う場合、バージョンが自動で変わる可能性があります。バージョンを固定したい場合は @modelcontextprotocol/server-filesystem@1.0.0 のようにバージョンを明示するか、package.json で管理して npx の代わりに node node_modules/.bin/server-name で起動します。

Q. カスタム MCP サーバーのデバッグ方法は?

A. MCP Inspector というデバッグツールが 公式リポジトリで提供されています。npx @modelcontextprotocol/inspector your-server-command で起動すると、ブラウザ上でツールの一覧確認・手動実行・レスポンスの確認ができます。Claude Code に接続する前にサーバー単体の動作を確認するのに有効です。

Q. リモートサーバー(SSE 方式)の設定方法は?

A. リモート MCP サーバー(HTTP+SSE トランスポート)を使う場合は、command の代わりに url フィールドを使います。"url": "https://your-mcp-server.example.com/sse" のように設定します。ただし、リモートサーバーにはセキュリティ上の追加考慮が必要なため、本番利用には認証トークンと TLS を必ず設定してください。

まとめ

まとめ

Claude Code の MCP サーバーについて、概念から設定手順・カスタム実装・セキュリティまでを一通り解説しました。

  • MCP は AI とツールをつなぐオープンな通信規格。一度覚えれば他の MCP 対応アプリにも応用できる
  • まず filesystem と git の 2 本で始めるのが最短のスタート。この 2 つで開発体験が大きく変わる
  • クレデンシャルは設定ファイルへの直書きを避け、環境変数か .env.local で管理する

MCP の仕様は現在も活発に進化しています。最新の対応サーバーや仕様の更新は 公式 MCP Servers リポジトリを定期的に確認することをお勧めします。

Claude Code の使い方全般についてはClaude Code 完全ガイドも合わせてご覧ください。AI コーディングアシスタントの活用事例についてはAI コーディングツール比較 2026もご参照ください。

この投稿にはカテゴリーが設定されていません。
Copied title and URL