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)とは、AI モデルが外部ツールやデータソースと標準化された方法でやり取りするための通信プロトコルです。
2024 年 11 月、Anthropic がオープンソースとして公開しました。それ以前は AI アシスタントがファイルシステムを読んだり、データベースに問い合わせたりするには、各ツールごとに個別のインテグレーションを実装する必要がありました。MCP はその「バラバラなインテグレーション問題」を、単一のオープン規格で解決します。
MCP が解決する課題
従来の AI インテグレーションには 3 つの壁がありました。第一に、各ツールへのアクセスを AI 側で個別実装する必要があること。第二に、ツールのバージョンや API が変わるたびに対応コードを書き直すこと。第三に、異なる AI プロバイダー間でインテグレーションを使い回せないこと。
MCP はこれを「クライアント–サーバーモデル」で置き換えます。AI(クライアント)は MCP サーバーに対して標準メッセージを送るだけ。サーバー側は受け取ったリクエストをそれぞれのツール(ファイルシステム、Git、データベース等)に橋渡しします。AI を変えてもサーバーはそのまま使えます。
MCP の基本アーキテクチャ
| コンポーネント | 役割 | 具体例 |
|---|---|---|
| MCP Host | AI モデルを内包するアプリ | 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 は 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 ガイドで確認できます。
|
推奨 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 |
| slack | Slack チャンネルの読み書き | @modelcontextprotocol/server-slack |
| google-drive | Google Drive のファイル参照 | @modelcontextprotocol/server-gdrive |
| brave-search | Web 検索(Brave Search API) | @modelcontextprotocol/server-brave-search |
| sqlite | SQLite DB の操作 | @modelcontextprotocol/server-sqlite |
| 💡 ワンポイント 編集部では「まず filesystem と git の 2 本から始める」ことを推奨しています。この 2 つを入れるだけでも、ローカルコードのレビューや変更差分の確認が Claude Code 上で完結するようになり、開発体験が大きく変わります。 |
環境別セットアップ手順

MCP サーバーの設定は OS ごとにパスの書き方が異なります。以下に macOS・Linux・Windows WSL それぞれの手順をまとめました。
macOS / Linux の場合
前提として Node.js(v18 以上)と npm が必要です。npx コマンドが使えることを確認してから進めてください。
- Claude Code をインストール。
npm install -g @anthropic-ai/claude-codeで最新版を取得します - 設定ファイルを作成。
~/.claude.jsonが存在しない場合は新規作成します - mcpServers セクションを追加。上記の設定例を参考に、使用したいサーバーを記述します
- Claude Code を再起動。設定の再読み込みにはセッションの再起動が必要です
- 接続確認。
/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 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)

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



