Claude CodeでMCPを使うと、何が変わるのか

室谷
テキトー教師
室谷
テキトー教師
室谷Claudeがそのまま各サービスにアクセスして作業を進めてくれる。
テキトー教師- 課題管理(JIRAのissueを読んで実装、GitHubのPRを作成)
- 監視・分析(Sentryのエラーログを確認、SentryとStatsigを横断して分析)
- データベース操作(PostgreSQLに直接クエリを実行)
- デザイン連携(FigmaのデザインをSlackから取得してコードに反映)
- ワークフロー自動化(Gmailで特定ユーザーへの招待メールを下書き作成)
- 外部イベントへの反応(Telegramのメッセージ、CI結果、Webhookへの自動応答)
室谷エージェントとして24時間働かせるイメージに近づきますね。
MCPの「スコープ」概念を理解する

テキトー教師
室谷
テキトー教師| スコープ | 保存場所 | 用途 |
|---|---|---|
| local(デフォルト) | ~/.claude.json(プロジェクトパスごと) | 自分専用・現在のプロジェクトのみ。機密情報を含む設定に向く |
| project | プロジェクトルートの .mcp.json | チーム全員で共有(gitに含める)。全員が同じMCPツールを使える |
| user | ~/.claude.json(全プロジェクト共通) | 複数プロジェクトをまたいで個人が使うサーバーに向く |
室谷
テキトー教師projectスコープで .mcp.json を書いてgitにコミットすれば、全員が同じMCPを使えるようになります。「新メンバーが来たらMCPの設定を口頭で共有する」みたいな作業がなくなるので、ここはぜひ活用してほしいですね。
室谷local か user スコープに入れましょう。 .mcp.json(projectスコープ)にAPIキーを直書きしてgitにpushするのは絶対NG・・・。環境変数で渡す設計にするのが正解です。
テキトー教師.mcp.json では環境変数の展開もサポートされています。${VAR_NAME} という書き方でシェルの環境変数を参照できますし、${VAR:-デフォルト値} という形でフォールバックも指定できます。{
"mcpServers": {
"api-server": {
"type": "http",
"url": "${API_BASE_URL:-https://api.example.com}/mcp",
"headers": {
"Authorization": "Bearer ${API_KEY}"
}
}
}
}
室谷.mcp.json をgitに上げつつ、実際のAPIキーは各自の環境変数から読む、という設計が作れます。MCPサーバーを追加する3つの方法
テキトー教師
室谷
テキトー教師# Option 1: リモートHTTPサーバー(推奨)
claude mcp add --transport http <名前> <URL>
# 例: Notionに接続
claude mcp add --transport http notion https://mcp.notion.com/mcp
# Bearerトークン付き
claude mcp add --transport http secure-api https://api.example.com/mcp \
--header "Authorization: Bearer your-token"
# Option 2: リモートSSEサーバー(非推奨・廃止予定)
# 可能であればHTTPに移行を推奨
claude mcp add --transport sse <名前> <URL>
# Option 3: ローカルstdioサーバー(ローカルプロセスとして動く)
claude mcp add [オプション] <名前> -- <コマンド> [引数...]
# 例: Airtableサーバーを追加
claude mcp add --transport stdio --env AIRTABLE_API_KEY=YOUR_KEY airtable \
-- npx -y airtable-mcp-server
室谷
テキトー教師--transport、--env、--scope、--header)はすべてサーバー名より前に指定しなければいけません。サーバー名の後に
--(ダブルダッシュ)を入れると、その後がMCPサーバーへ渡すコマンドとして解釈されます。
室谷
テキトー教師npx を使うローカルMCPサーバーは、cmd /c のラッパーが必要です。# Windows環境でのstdioサーバー追加例
claude mcp add --transport stdio my-server -- cmd /c npx -y @some/package
室谷設定を管理するコマンド一覧
室谷# 設定済みのサーバー一覧
claude mcp list
# 特定サーバーの詳細を確認
claude mcp get github
# サーバーを削除
claude mcp remove github
# Claude Code起動中にサーバーの状態確認
/mcp
テキトー教師/mcp コマンドはClaude Codeのセッション中に使うコマンドです。接続しているMCPサーバーの一覧、接続状態、ツールの数と詳細が確認できます。これ、意外と知られていない機能で、コミュニティのメンバーさんに教えると「知らなかった」ってなりますね(笑)
室谷
室谷
テキトー教師MCP Tool Searchでコンテキスト問題を解決する

室谷
テキトー教師従来の問題:
- セッション開始時に全MCPツールの定義がコンテキストに読み込まれる
- MCPサーバーを増やすほどコンテキストが圧迫される
- 長い対話ほど使えるコンテキストが減っていく
Tool Search導入後:
- セッション開始時はツール名だけ読み込む(定義は遅延ロード)
- Claudeが必要なタイミングで検索して該当ツールだけコンテキストに入れる
- MCPサーバーをいくら増やしても初期コンテキスト消費はほぼゼロ
室谷ただ裏側でコンテキスト効率が全然違う。
テキトー教師ENABLE_TOOL_SEARCH で制御できます。| 設定値 | 動作 |
|---|---|
| (未設定) | 全MCPツールを遅延ロード。ANTHROPIC_BASE_URL が非公式ホストの場合は無効になる |
true | 非公式ホスト経由でも強制的に遅延ロード有効 |
auto | 閾値モード: コンテキストウィンドウの10%以内に収まる場合は先読み、超えたら遅延ロード |
auto:<N> | カスタム閾値(例: auto:5 で5%) |
false | 全ツールを先読み(Tool Search無効) |
室谷Haikuモデルは非対応。ここはチェックしておかないとです。
テキトー教師
室谷実践:人気のMCPサーバーを追加してみる
テキトー教師
室谷Sentry(エラー監視)との連携
# Sentryを追加
claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
# OAuth認証
/mcp
認証後はこういった指示が自然言語で出せるようになります。
直近24時間の主要エラーを確認して
エラーID abc123 のスタックトレースを見せて
どのデプロイでこの新しいエラーが発生し始めたか調べて
テキトー教師GitHub(コードレビュー・Issue管理)との連携
# GitHubを追加
claude mcp add --transport http github https://api.githubcopilot.com/mcp/
# OAuth認証
/mcp
PR #456をレビューして改善点を提案して
今見つけたバグ用のissueを作成して
自分にアサインされているPR一覧を表示して
室谷PostgreSQLデータベースとの連携
# PostgreSQLを追加(読み取り専用ユーザーを推奨)
claude mcp add --transport stdio db -- npx @bytebase/dbhub@latest --transport stdio --dsn "postgresql://readonly:[email protected]:5432/analytics"
今月の総売上は?
ordersテーブルのスキーマを表示して
90日間購入がないユーザーを抽出して
テキトー教師
室谷外部コンテンツをフェッチするMCPサーバーはプロンプトインジェクションのリスクもあるので注意が必要です。
リモートMCPサーバーの認証を設定する
室谷
テキトー教師- サーバーを追加:
claude mcp add --transport http sentry https://mcp.sentry.dev/mcp - セッション内で
/mcpを実行 - ブラウザが開くのでログイン
- 認証トークンは自動で保存・更新される
室谷
テキトー教師--callback-port でポートを固定します。# コールバックポートを固定して追加
claude mcp add --transport http \
--callback-port 8080 \
my-server https://mcp.example.com/mcp
室谷--client-id オプションで指定します。claude mcp add --transport http \
--client-id your-client-id --client-secret --callback-port 8080 \
my-server https://mcp.example.com/mcp
テキトー教師--client-secret フラグはインタラクティブに入力を促す形になっていて、シークレットが設定ファイルに直書きされないようになっています。セキュリティが考慮された設計ですね。Claude CodeをMCPサーバーとして使う
室谷
テキトー教師
室谷# Claude CodeをstdioのMCPサーバーとして起動
claude mcp serve
Claude Desktopで使う場合は claude_desktop_config.json にこう書きます。
{
"mcpServers": {
"claude-code": {
"type": "stdio",
"command": "claude",
"args": ["mcp", "serve"],
"env": {}
}
}
}
テキトー教師command フィールドは claude の実行ファイルを正しく参照していなければいけません。claude コマンドがシステムのPATHに通っていない場合はフルパスを指定します。# フルパスを調べるコマンド
which claude
調べたパスを設定に使います。
{
"mcpServers": {
"claude-code": {
"type": "stdio",
"command": "/full/path/to/claude",
"args": ["mcp", "serve"],
"env": {}
}
}
}
室谷spawn claude ENOENT というエラーになります。ここでハマる人が実際に多いので要注意です。
テキトー教師
室谷Claude.aiのMCPサーバーをClaude Codeで使う
テキトー教師
室谷
テキトー教師claude.ai/settings/connectors から行います。TeamプランとEnterpriseプランではadminのみが追加できます。Claude Codeで /mcp を実行すると、claude.aiから来たサーバーはその旨が表示されます。
# claude.ai MCPサーバーを無効化する場合
ENABLE_CLAUDEAI_MCP_SERVERS=false claude
室谷Claude Desktopから設定をインポートする
室谷claude mcp add-from-claude-desktop
テキトー教師
室谷server_1)。
テキトー教師JSON設定でMCPサーバーを追加する
室谷claude mcp add-json コマンドです。# 基本構文
claude mcp add-json <名前> '<JSON設定>'
# HTTPサーバーの例
claude mcp add-json weather-api '{"type":"http","url":"https://api.weather.com/mcp","headers":{"Authorization":"Bearer token"}}'
# stdioサーバーの例
claude mcp add-json local-weather '{"type":"stdio","command":"/path/to/weather-cli","args":["--api-key","abc123"],"env":{"CACHE_DIR":"/tmp"}}'
# OAuth付きHTTPサーバー
claude mcp add-json my-server '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' --client-secret
テキトー教師
室谷add-json で追加してください」と伝えれば確実です。コマンドのオプションを順番通りに覚えなくていいので、チームへの展開にも使いやすいですね。MCP出力の上限と大量データの扱い
テキトー教師
室谷# MCP出力上限を50,000トークンに設定
export MAX_MCP_OUTPUT_TOKENS=50000
claude
テキトー教師
室谷# 起動タイムアウトを10秒に設定
MCP_TIMEOUT=10000 claude
テキトー教師「MCPはコンテキストを食いすぎる」問題の現在地
室谷
テキトー教師
室谷
テキトー教師headersHelper という機能があります。コネクション時にコマンドを実行して認証ヘッダーを動的に生成できます。{
"mcpServers": {
"internal-api": {
"type": "http",
"url": "https://mcp.internal.example.com",
"headersHelper": "/opt/bin/get-mcp-auth-headers.sh"
}
}
}
室谷複数のMCPサーバーに1つのヘルパースクリプトを使い回せるよう、
CLAUDE_CODE_MCP_SERVER_NAME と CLAUDE_CODE_MCP_SERVER_URL という環境変数が渡されます。
テキトー教師動的なツール更新とチャンネル機能
室谷
テキトー教師list_changed 通知というやつですね。MCPサーバーがこの通知を送ると、Claude Codeが自動でツールの一覧を再取得します。セッションを再起動しなくてもサーバー側の変更が反映される、ということです。
室谷claude/channel ケーパビリティを宣言して、起動時に --channels フラグを付けると有効になります。
テキトー教師
室谷チームやエンタープライズでのMCP管理
テキトー教師
室谷
テキトー教師Option 1: 排他的制御(managed-mcp.json)
- IT管理者が設定したMCPサーバーのみ使用可能
- ユーザーが自分でMCPを追加することを禁止できる
Option 2: ポリシーベース制御(allowlist/denylist)
- allowedMcpServers: 使用を許可するサーバーのリスト
- deniedMcpServers: 使用を禁止するサーバーのリスト
- ユーザーによる追加は可能だが、許可リストのものだけ動く
室谷
テキトー教師*://api.github.com/* というワイルドカードで「GitHubの全APIエンドポイントは許可」みたいな書き方ができます。
室谷人気MCPサーバー詳解:開発現場でよく使われる連携パターン
室谷
テキトー教師ブラウザ・Webスクレイピング系
室谷
テキトー教師
室谷
テキトー教師# Brave Search MCPを追加(APIキーが必要)
claude mcp add --transport stdio brave-search \
--env BRAVE_API_KEY=your-api-key \
-- npx -y @modelcontextprotocol/server-brave-search
室谷Figma・デザイン系
室谷
テキトー教師
室谷AWS・クラウドインフラ系
テキトー教師# AWS Documentation MCPを追加
claude mcp add aws-documentation-mcp-server uvx "awslabs.aws-documentation-mcp-server@latest"
室谷
テキトー教師Context7:ドキュメント最新情報を取得する
室谷
テキトー教師# Context7 MCPを追加
claude mcp add --transport http context7 https://mcp.context7.com/mcp
室谷Sequential Thinking MCP:複雑な問題に段階的に取り組む
テキトー教師
室谷
テキトー教師ローカルMCPの設定ファイルを直接書く
テキトー教師claude mcp add コマンドではなく、設定ファイルを直接書くほうが管理しやすいという人もいます。特にチームで .mcp.json を共有する場合は、手動でファイルを書く方がわかりやすいです。
室谷.mcp.json を置くのがproject scopeの設定方法ですね。{
"mcpServers": {
"github": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN",
"ghcr.io/github/github-mcp-server"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_PERSONAL_ACCESS_TOKEN}"
}
},
"sentry": {
"type": "http",
"url": "https://mcp.sentry.dev/mcp"
}
}
}
テキトー教師${GITHUB_PERSONAL_ACCESS_TOKEN} は環境変数から展開されるので、トークンが設定ファイルに直書きされません。
室谷{
"mcpServers": {
"github_work": {
"command": "docker",
"args": ["-i", "--rm", "-e", "GITHUB_PERSONAL_ACCESS_TOKEN", "ghcr.io/github/github-mcp-server"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_WORK_TOKEN}"
}
},
"github_personal": {
"command": "docker",
"args": ["-i", "--rm", "-e", "GITHUB_PERSONAL_ACCESS_TOKEN", "ghcr.io/github/github-mcp-server"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_PERSONAL_TOKEN}"
}
}
}
}
テキトー教師github_work と github_personal に分けることで、Claude Codeにも「仕事のGitHubリポジトリを操作して」「個人のリポジトリを操作して」と区別して指示できるようになります。
室谷.mcp.json に書いておいて、チームでgit管理する。APIキーは各自の環境変数に入れてもらう。これがベストプラクティスだと思います。
Remote MCPを自作する
室谷
テキトー教師
室谷
テキトー教師Dify経由(ノーコード):
- DifyのワークフローをそのままリモートMCP化
- コードを書かずに既存のDifyフローを公開できる
- 素早くPoCを作るときに有効
Cloudflare Workers(コードあり):
- より柔軟で複雑な処理が可能
- HTTP/SSEのリモートMCPサーバーを作れる
- 本番環境での運用に向く
室谷MCPサーバーが動かないときのトラブルシューティング
テキトー教師
室谷/mcp コマンドで確認するのが最初のステップですね。よくある問題と対処法
問題1: サーバーが接続されない(Connection closed)
# 設定確認
claude mcp list
claude mcp get <サーバー名>
原因として多いのは:
- Windowsでnpx使用時に
cmd /cが抜けている claudeコマンドのフルパスが通っていない(Claude CodeをMCPサーバー化する場合)- 環境変数が設定されていない
テキトー教師cmd /c を忘れているケースは本当に多いですね(笑)。Connection closed というエラーが出たらまずここを疑ってください。問題2: MCPが認識されているが使えない
/mcp コマンドでサーバーの状態が Connected になっているか確認します。認証が必要なサーバーは Authenticate の選択肢が出ます。
室谷/mcp からブラウザで認証する手順が必要です。問題3: 出力が大きすぎて警告が出る
# 出力上限を増やす
export MAX_MCP_OUTPUT_TOKENS=50000
claude
10,000トークンを超えるとClaude Codeが警告を出します。データベースの大量クエリや詳細なレポートを扱う場合は上限を調整してください。
問題4: .mcp.json の環境変数が展開されない
環境変数が未設定の場合、デフォルト値のない ${VAR} の展開に失敗してClaude Codeが設定ファイルのパースに失敗します。.zshrc や .bashrc でシェルに環境変数を設定してから起動するのが確実です。
問題5: project scopeのMCPサーバーが承認を求める
project scope(.mcp.json)のサーバーは、セキュリティの観点からClaude Codeが初回起動時に承認を求めます。承認の選択をリセットしたい場合は:
claude mcp reset-project-choices
テキトー教師まとめ
テキトー教師
室谷
テキトー教師- スコープを正しく選ぶ: チーム共有はproject(.mcp.json)、個人設定はlocal/user、APIキーはgitに上げない
- Transport方式を選ぶ: クラウドサービスはHTTP(推奨)、ローカルツールはstdio
- Tool Searchを活かす: デフォルトで有効、コンテキスト消費を抑えつつ多くのMCPサーバーを使える
室谷claude mcp serve でClaude Code自体をMCPサーバー化できること、claude.aiで設定したMCPがそのままClaude Codeでも使えること、この2点は見落としがちなので覚えておきましょう。
テキトー教師
室谷