MCP サーバー
Model Context Protocol で Claude Code の機能を拡張し、外部ツールやサービスに接続
MCP サーバー¶
MCP(Model Context Protocol)は、Anthropic が提供するオープンスタンダードで、Claude Code を外部ツール、データベース、API、サービスに接続できます。MCP を使用することで、Claude Code の機能を大幅に拡張できます。
MCP とは?¶
基本概念¶
MCP は AI アシスタントと外部システム間の通信標準を定義するオープンプロトコルです。3 つのコアコンポーネントで構成されています:
| コンポーネント | 説明 | 例 |
|---|---|---|
| Tools(ツール) | 実行可能なアクション | データベースクエリ、リクエスト送信、ファイル操作 |
| Resources(リソース) | 読み取り可能なデータ | ファイル内容、API レスポンス、データベースレコード |
| Prompts(プロンプト) | 事前定義されたタスクテンプレート | コードレビューテンプレート、レポート生成テンプレート |
なぜ MCP が必要?¶
-
機能拡張:Claude が本来アクセスできないシステムにアクセス可能に
-
リアルタイムデータ:最新のドキュメント、データベース内容、API データを取得
-
自動化:デプロイの実行、通知の送信、リソースの管理
-
プライバシー:データはローカルで処理、クラウドへのアップロード不要
クイックスタート¶
MCP ステータスを確認¶
> /mcp
現在設定されている MCP サーバーのステータスを表示します。
MCP サーバーを追加¶
claude mcp add コマンドを使用:
# ファイルシステムサーバーを追加
claude mcp add filesystem npx -y @modelcontextprotocol/server-filesystem /path/to/directory
# SQLite データベースサーバーを追加
claude mcp add sqlite npx -y mcp-server-sqlite ./database.db
# カスタムサーバーを追加
claude mcp add my-server node /path/to/server.js
設定ファイル方式¶
プロジェクトルートに .mcp.json ファイルを作成することもできます:
{
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/allowed/path"]
},
"database": {
"command": "npx",
"args": ["-y", "mcp-server-sqlite", "./data.db"]
}
}
人気の MCP サーバー¶
ファイルシステム¶
ローカルファイルシステムにアクセス:
{
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/directory"]
}
}
機能:指定ディレクトリ内のファイルの読み取り、書き込み、検索。
SQLite データベース¶
SQLite データベースに接続:
{
"sqlite": {
"command": "npx",
"args": ["-y", "mcp-server-sqlite", "./database.db"]
}
}
機能:SQL クエリの実行、データベーススキーマの管理。
GitHub¶
GitHub リポジトリに接続:
{
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
}
}
}
機能:Issues、PR、リポジトリ操作の管理。
Context7(ドキュメント検索)¶
最新のライブラリドキュメントを取得:
{
"context7": {
"command": "npx",
"args": ["-y", "@context7/mcp-server"]
}
}
機能:任意のライブラリの最新ドキュメントとコード例を取得。
Supabase¶
Supabase バックエンドに接続:
{
"supabase": {
"command": "npx",
"args": ["-y", "@supabase/mcp-server"],
"env": {
"SUPABASE_URL": "${SUPABASE_URL}",
"SUPABASE_KEY": "${SUPABASE_KEY}"
}
}
}
機能:データベース操作、認証、ストレージ管理。
Docker¶
コンテナ管理:
{
"docker": {
"command": "npx",
"args": ["-y", "@docker/mcp-server"]
}
}
機能:コンテナ、イメージ、ネットワークの管理。
サーバータイプ¶
stdio(ローカルプロセス)¶
最も一般的なタイプで、ローカルサブプロセスとして実行:
{
"my-server": {
"command": "node",
"args": ["./server.js"],
"env": {
"API_KEY": "${API_KEY}"
}
}
}
特徴:
-
ローカルで実行、データはマシン内に留まる
-
Claude Code がプロセスのライフサイクルを管理
-
ファイルシステム、ローカルデータベースに最適
SSE(Server-Sent Events)¶
リモートホストされた MCP サーバーに接続:
{
"remote-server": {
"type": "sse",
"url": "https://mcp.example.com/sse"
}
}
特徴:
-
クラウドサービスに適している
-
OAuth 認証をサポート
-
ローカルインストール不要
HTTP¶
RESTful API 方式:
{
"api-server": {
"type": "http",
"url": "https://api.example.com/mcp",
"headers": {
"Authorization": "Bearer ${API_TOKEN}"
}
}
}
環境変数¶
MCP 設定は環境変数の置換をサポート:
{
"my-server": {
"command": "node",
"args": ["${CLAUDE_PLUGIN_ROOT}/server.js"],
"env": {
"DATABASE_URL": "${DATABASE_URL}",
"API_KEY": "${API_KEY}",
"DEFAULT_NAMESPACE": "${K8S_NAMESPACE:-default}"
}
}
}
構文:
-
${VAR}- 環境変数の値で置換 -
${VAR:-default}- 変数が未設定の場合はデフォルト値を使用
実践例¶
例 1:データベースクエリアシスタント¶
{
"postgres": {
"command": "npx",
"args": ["-y", "mcp-server-postgres"],
"env": {
"DATABASE_URL": "postgresql://user:pass@localhost/mydb"
}
}
}
使用例:
> 過去 7 日間の注文総額をクエリして
> 購入回数が最も多いユーザートップ 10 を見つけて
例 2:Kubernetes 運用¶
{
"kubernetes": {
"command": "node",
"args": ["./k8s-mcp-server.js"],
"env": {
"KUBECONFIG": "${KUBECONFIG}",
"K8S_NAMESPACE": "${K8S_NAMESPACE:-default}"
}
}
}
使用例:
> すべての Pod のステータスをリストして
> api-server デプロイメントを再起動して
> 最近のエラーログを表示して
例 3:マルチサーバー設定¶
{
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "./src"]
},
"database": {
"command": "npx",
"args": ["-y", "mcp-server-sqlite", "./data.db"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
}
}
}
トラブルシューティング¶
サーバーが起動しない¶
-
コマンドが正しくインストールされているか確認:
bash npx -y @modelcontextprotocol/server-filesystem --help -
環境変数が設定されているか確認:
bash echo $GITHUB_TOKEN -
Claude Code のログでエラーメッセージを確認
ツールが使用できない¶
-
/mcpでサーバーステータスを確認 -
設定ファイルの形式が正しいか確認(JSON 構文)
-
Claude Code を再起動して設定を再読み込み
権限の問題¶
-
ファイルパスに読み取り/書き込み権限があることを確認
-
データベース接続文字列が正しいことを確認
-
API トークンが有効で十分な権限があることを確認
セキュリティ推奨事項¶
-
最小権限の原則:必要なアクセスのみを付与
-
機密情報の保護:トークンとパスワードには環境変数を使用
-
パスアクセスの制限:ファイルシステムサーバーは必要なディレクトリのみを公開
-
キーの定期的なローテーション:API トークンを定期的に更新