未分類

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

AI Beat編集部

Claude Code の MCP サーバー設定完全ガイド|推奨サーバー一覧と実装例
目次
  1. MCP(Model Context Protocol)とは
  2. MCP が解決する課題
  3. MCP の基本アーキテクチャ
  4. Claude Code での MCP 概要
  5. Claude Code における MCP の位置づけ
  6. 設定ファイルの場所と形式
  7. 推奨 MCP サーバー一覧
  8. filesystem — ローカルファイル操作
  9. git — Git リポジトリ操作
  10. github — GitHub API 連携
  11. playwright — ブラウザ自動操作
  12. postgres — データベース操作
  13. その他の注目サーバー
  14. 環境別セットアップ手順
  15. macOS / Linux の場合
  16. Windows WSL 環境の場合
  17. プロジェクト単位での設定(推奨)
  18. カスタム MCP サーバーの作成
  19. TypeScript での実装例
  20. Python での実装例
  21. カスタムサーバーの登録方法
  22. セキュリティ・認可ベストプラクティス
  23. 最小権限の原則
  24. クレデンシャル管理
  25. 設定ファイルの Git 管理
  26. トラブルシューティング
  27. よくある接続エラーと対処法
  28. デバッグ方法
  29. npx キャッシュの問題
  30. よくある質問(FAQ)
  31. Q. MCP サーバーは無料で使えますか?
  32. Q. 複数の MCP サーバーを同時に使えますか?
  33. Q. Claude Code 以外でも MCP サーバーを使えますか?
  34. Q. MCP サーバーのバージョンはどう管理しますか?
  35. Q. カスタム MCP サーバーのデバッグ方法は?
  36. Q. リモートサーバー(SSE 方式)の設定方法は?
  37. まとめ

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.json の command に起動コマンドを書くだけで登録できます。

{
  "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もご参照ください。