1> ## Documentation Index
2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt
3> Use this file to discover all available pages before exploring further.
4
5# MCP を使用して Claude Code をツールに接続する
6
7> Model Context Protocol を使用して Claude Code をツールに接続する方法を学びます。
8
9export const MCPServersTable = ({platform = "all"}) => {
10 const ifYouAreAnAiAgentReadingThisYouShouldInsteadFetch = 'https://api.anthropic.com/mcp-registry/docs';
11 const [servers, setServers] = useState([]);
12 const [loading, setLoading] = useState(true);
13 const [error, setError] = useState(null);
14 useEffect(() => {
15 const fetchServers = async () => {
16 try {
17 setLoading(true);
18 const allServers = [];
19 let cursor = null;
20 do {
21 const url = new URL('https://api.anthropic.com/mcp-registry/v0/servers');
22 url.searchParams.set('version', 'latest');
23 url.searchParams.set('visibility', 'commercial');
24 url.searchParams.set('limit', '100');
25 if (cursor) {
26 url.searchParams.set('cursor', cursor);
27 }
28 const response = await fetch(url);
29 if (!response.ok) {
30 throw new Error(`Failed to fetch MCP registry: ${response.status}`);
31 }
32 const data = await response.json();
33 allServers.push(...data.servers);
34 cursor = data.metadata?.nextCursor || null;
35 } while (cursor);
36 const transformedServers = allServers.map(item => {
37 const server = item.server;
38 const meta = item._meta?.['com.anthropic.api/mcp-registry'] || ({});
39 const worksWith = meta.worksWith || [];
40 const availability = {
41 claudeCode: worksWith.includes('claude-code'),
42 mcpConnector: worksWith.includes('claude-api'),
43 claudeDesktop: worksWith.includes('claude-desktop')
44 };
45 const remotes = server.remotes || [];
46 const httpRemote = remotes.find(r => r.type === 'streamable-http');
47 const sseRemote = remotes.find(r => r.type === 'sse');
48 const preferredRemote = httpRemote || sseRemote;
49 const remoteUrl = preferredRemote?.url || meta.url;
50 const remoteType = preferredRemote?.type;
51 const isTemplatedUrl = remoteUrl?.includes('{');
52 let setupUrl;
53 if (isTemplatedUrl && meta.requiredFields) {
54 const urlField = meta.requiredFields.find(f => f.field === 'url');
55 setupUrl = urlField?.sourceUrl || meta.documentation;
56 }
57 const urls = {};
58 if (!isTemplatedUrl) {
59 if (remoteType === 'streamable-http') {
60 urls.http = remoteUrl;
61 } else if (remoteType === 'sse') {
62 urls.sse = remoteUrl;
63 }
64 }
65 let envVars = [];
66 if (server.packages && server.packages.length > 0) {
67 const npmPackage = server.packages.find(p => p.registryType === 'npm');
68 if (npmPackage) {
69 urls.stdio = `npx -y ${npmPackage.identifier}`;
70 if (npmPackage.environmentVariables) {
71 envVars = npmPackage.environmentVariables;
72 }
73 }
74 }
75 return {
76 name: meta.displayName || server.title || server.name,
77 description: meta.oneLiner || server.description,
78 documentation: meta.documentation,
79 urls: urls,
80 envVars: envVars,
81 availability: availability,
82 customCommands: meta.claudeCodeCopyText ? {
83 claudeCode: meta.claudeCodeCopyText
84 } : undefined,
85 setupUrl: setupUrl
86 };
87 });
88 setServers(transformedServers);
89 setError(null);
90 } catch (err) {
91 setError(err.message);
92 console.error('Error fetching MCP registry:', err);
93 } finally {
94 setLoading(false);
95 }
96 };
97 fetchServers();
98 }, []);
99 const generateClaudeCodeCommand = server => {
100 if (server.customCommands && server.customCommands.claudeCode) {
101 return server.customCommands.claudeCode.replace('--transport streamable-http', '--transport http');
102 }
103 const serverSlug = server.name.toLowerCase().replace(/[^a-z0-9]/g, '-');
104 if (server.urls.http) {
105 return `claude mcp add ${serverSlug} --transport http ${server.urls.http}`;
106 }
107 if (server.urls.sse) {
108 return `claude mcp add ${serverSlug} --transport sse ${server.urls.sse}`;
109 }
110 if (server.urls.stdio) {
111 const envFlags = server.envVars && server.envVars.length > 0 ? server.envVars.map(v => `--env ${v.name}=YOUR_${v.name}`).join(' ') : '';
112 const baseCommand = `claude mcp add ${serverSlug} --transport stdio`;
113 return envFlags ? `${baseCommand} ${envFlags} -- ${server.urls.stdio}` : `${baseCommand} -- ${server.urls.stdio}`;
114 }
115 return null;
116 };
117 if (loading) {
118 return <div>Loading MCP servers...</div>;
119 }
120 if (error) {
121 return <div>Error loading MCP servers: {error}</div>;
122 }
123 const filteredServers = servers.filter(server => {
124 if (platform === "claudeCode") {
125 return server.availability.claudeCode;
126 } else if (platform === "mcpConnector") {
127 return server.availability.mcpConnector;
128 } else if (platform === "claudeDesktop") {
129 return server.availability.claudeDesktop;
130 } else if (platform === "all") {
131 return true;
132 } else {
133 throw new Error(`Unknown platform: ${platform}`);
134 }
135 });
136 return <>
137 <style jsx>{`
138 .cards-container {
139 display: grid;
140 gap: 1rem;
141 margin-bottom: 2rem;
142 }
143 .server-card {
144 border: 1px solid var(--border-color, #e5e7eb);
145 border-radius: 6px;
146 padding: 1rem;
147 }
148 .command-row {
149 display: flex;
150 align-items: center;
151 gap: 0.25rem;
152 }
153 .command-row code {
154 font-size: 0.75rem;
155 overflow-x: auto;
156 }
157 `}</style>
158
159 <div className="cards-container">
160 {filteredServers.map(server => {
161 const claudeCodeCommand = generateClaudeCodeCommand(server);
162 const mcpUrl = server.urls.http || server.urls.sse;
163 const commandToShow = platform === "claudeCode" ? claudeCodeCommand : mcpUrl;
164 return <div key={server.name} className="server-card">
165 <div>
166 {server.documentation ? <a href={server.documentation}>
167 <strong>{server.name}</strong>
168 </a> : <strong>{server.name}</strong>}
169 </div>
170
171 <p style={{
172 margin: '0.5rem 0',
173 fontSize: '0.9rem'
174 }}>
175 {server.description}
176 </p>
177
178 {server.setupUrl && <p style={{
179 margin: '0.25rem 0',
180 fontSize: '0.8rem',
181 fontStyle: 'italic',
182 opacity: 0.7
183 }}>
184 Requires user-specific URL.{' '}
185 <a href={server.setupUrl} style={{
186 textDecoration: 'underline'
187 }}>
188 Get your URL here
189 </a>.
190 </p>}
191
192 {commandToShow && !server.setupUrl && <>
193 <p style={{
194 display: 'block',
195 fontSize: '0.75rem',
196 fontWeight: 500,
197 minWidth: 'fit-content',
198 marginTop: '0.5rem',
199 marginBottom: 0
200 }}>
201 {platform === "claudeCode" ? "Command" : "URL"}
202 </p>
203 <div className="command-row">
204 <code>
205 {commandToShow}
206 </code>
207 </div>
208 </>}
209 </div>;
210 })}
211 </div>
212 </>;
213};
214
215Claude Code は、AI ツール統合のためのオープンソース標準である [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction) を通じて、数百の外部ツールとデータソースに接続できます。MCP サーバーは Claude Code にツール、データベース、API へのアクセスを提供します。
216
217別のツール(課題追跡ツールや監視ダッシュボードなど)からチャットにデータをコピーしている場合は、サーバーを接続してください。接続すると、Claude は貼り付けたものから作業する代わりに、そのシステムを直接読み取り、操作できます。
218
219## MCP でできること
220
221MCP サーバーが接続されている場合、Claude Code に以下のことを依頼できます:
222
223* **課題追跡ツールから機能を実装する**:「JIRA の課題 ENG-4521 に記載されている機能を追加し、GitHub に PR を作成してください。」
224* **監視データを分析する**:「Sentry と Statsig をチェックして、ENG-4521 に記載されている機能の使用状況を確認してください。」
225* **データベースをクエリする**:「PostgreSQL データベースに基づいて、ENG-4521 機能を使用した 10 人のランダムなユーザーのメールアドレスを検索してください。」
226* **デザインを統合する**:「Slack に投稿された新しい Figma デザインに基づいて、標準メールテンプレートを更新してください。」
227* **ワークフローを自動化する**:「新機能に関するフィードバックセッションに招待する 10 人のユーザーに Gmail ドラフトを作成してください。」
228* **外部イベントに対応する**:MCP サーバーは [チャネル](/ja/channels) として機能することもでき、セッションにメッセージをプッシュするため、Claude は離席中に Telegram メッセージ、Discord チャット、または webhook イベントに対応できます。
229
230## 人気のある MCP サーバー
231
232Claude Code に接続できる一般的に使用される MCP サーバーをいくつか紹介します:
233
234<Warning>
235 サードパーティの MCP サーバーは自己責任で使用してください。Anthropic はこれらすべてのサーバーの正確性またはセキュリティを検証していません。
236 インストールする MCP サーバーを信頼していることを確認してください。
237 信頼できないコンテンツを取得する可能性のある MCP サーバーを使用する場合は特に注意してください。これらはプロンプトインジェクションのリスクにさらされる可能性があります。
238</Warning>
239
240<MCPServersTable platform="claudeCode" />
241
242<Note>
243 **特定の統合が必要ですか?** [GitHub で数百以上の MCP サーバーを検索](https://github.com/modelcontextprotocol/servers)するか、[MCP SDK](https://modelcontextprotocol.io/quickstart/server) を使用して独自のサーバーを構築してください。
244</Note>
245
246## MCP サーバーのインストール
247
248MCP サーバーは、ニーズに応じて 3 つの異なる方法で設定できます:
249
250### オプション 1:リモート HTTP サーバーを追加する
251
252HTTP サーバーはリモート MCP サーバーに接続するための推奨オプションです。これはクラウドベースのサービスに最も広くサポートされているトランスポートです。
253
254```bash theme={null}
255# 基本的な構文
256claude mcp add --transport http <name> <url>
257
258# 実際の例:Notion に接続する
259claude mcp add --transport http notion https://mcp.notion.com/mcp
260
261# Bearer トークンを使用した例
262claude mcp add --transport http secure-api https://api.example.com/mcp \
263 --header "Authorization: Bearer your-token"
264```
265
266### オプション 2:リモート SSE サーバーを追加する
267
268<Warning>
269 SSE(Server-Sent Events)トランスポートは非推奨です。利用可能な場合は HTTP サーバーを使用してください。
270</Warning>
271
272```bash theme={null}
273# 基本的な構文
274claude mcp add --transport sse <name> <url>
275
276# 実際の例:Asana に接続する
277claude mcp add --transport sse asana https://mcp.asana.com/sse
278
279# 認証ヘッダーを使用した例
280claude mcp add --transport sse private-api https://api.company.com/sse \
281 --header "X-API-Key: your-key-here"
282```
283
284### オプション 3:ローカル stdio サーバーを追加する
285
286Stdio サーバーはマシン上でローカルプロセスとして実行されます。システムへの直接アクセスやカスタムスクリプトが必要なツールに最適です。
287
288```bash theme={null}
289# 基本的な構文
290claude mcp add [options] <name> -- <command> [args...]
291
292# 実際の例:Airtable サーバーを追加する
293claude mcp add --transport stdio --env AIRTABLE_API_KEY=YOUR_KEY airtable \
294 -- npx -y airtable-mcp-server
295```
296
297<Note>
298 **重要:オプションの順序**
299
300 すべてのオプション(`--transport`、`--env`、`--scope`、`--header`)はサーバー名の**前に**来る必要があります。`--`(ダブルダッシュ)はサーバー名を MCP サーバーに渡されるコマンドと引数から分離します。
301
302 例:
303
304 * `claude mcp add --transport stdio myserver -- npx server` → `npx server` を実行します
305 * `claude mcp add --transport stdio --env KEY=value myserver -- python server.py --port 8080` → 環境に `KEY=value` を設定して `python server.py --port 8080` を実行します
306
307 これにより、Claude のフラグとサーバーのフラグの間の競合を防ぎます。
308</Note>
309
310### サーバーの管理
311
312設定後、これらのコマンドで MCP サーバーを管理できます:
313
314```bash theme={null}
315# すべての設定済みサーバーをリストする
316claude mcp list
317
318# 特定のサーバーの詳細を取得する
319claude mcp get github
320
321# サーバーを削除する
322claude mcp remove github
323
324# (Claude Code 内)サーバーのステータスを確認する
325/mcp
326```
327
328### 動的ツール更新
329
330Claude Code は MCP `list_changed` 通知をサポートしており、MCP サーバーが切断して再接続することなく、利用可能なツール、プロンプト、リソースを動的に更新できます。MCP サーバーが `list_changed` 通知を送信すると、Claude Code はそのサーバーから利用可能な機能を自動的に更新します。
331
332### 自動再接続
333
334HTTP または SSE サーバーがセッション中に切断された場合、Claude Code は指数バックオフで自動的に再接続します:最大 5 回の試行、1 秒の遅延から始まり、毎回 2 倍になります。サーバーは再接続が進行中の間、`/mcp` では保留中として表示されます。5 回の失敗した試行の後、サーバーは失敗としてマークされ、`/mcp` から手動で再試行できます。Stdio サーバーはローカルプロセスであり、自動的には再接続されません。
335
336同じバックオフは、HTTP または SSE サーバーが起動時に初期接続に失敗した場合にも適用されます。v2.1.121 以降、Claude Code は 5xx レスポンス、接続拒否、タイムアウトなどの一時的なエラーで初期接続を最大 3 回再試行し、それでも接続できない場合はサーバーを失敗としてマークします。認証エラーと見つからないエラーは、解決するために設定変更が必要なため、再試行されません。
337
338### チャネルでメッセージをプッシュする
339
340MCP サーバーはセッションに直接メッセージをプッシュすることもでき、Claude が CI 結果、監視アラート、チャットメッセージなどの外部イベントに対応できます。これを有効にするには、サーバーが `claude/channel` 機能を宣言し、起動時に `--channels` フラグでオプトインします。公式にサポートされているチャネルを使用するには [チャネル](/ja/channels) を参照するか、独自に構築するには [チャネルリファレンス](/ja/channels-reference) を参照してください。
341
342<Tip>
343 ヒント:
344
345 * `--scope` フラグを使用して、設定が保存される場所を指定します:
346 * `local`(デフォルト):現在のプロジェクトでのみ利用可能(古いバージョンでは `project` と呼ばれていました)
347 * `project`:`.mcp.json` ファイルを通じてプロジェクト内のすべてのユーザーと共有
348 * `user`:すべてのプロジェクト全体で利用可能(古いバージョンでは `global` と呼ばれていました)
349 * `--env` フラグで環境変数を設定します(例:`--env KEY=value`)
350 * `MCP_TIMEOUT` 環境変数を使用して MCP サーバーのスタートアップタイムアウトを設定します(例:`MCP_TIMEOUT=10000 claude` は 10 秒のタイムアウトを設定します)
351 * Claude Code は MCP ツール出力が 10,000 トークンを超えると警告を表示します。この制限を増やすには、`MAX_MCP_OUTPUT_TOKENS` 環境変数を設定します(例:`MAX_MCP_OUTPUT_TOKENS=50000`)
352 * `/mcp` を使用して、OAuth 2.0 認証が必要なリモートサーバーで認証します
353</Tip>
354
355### プラグイン提供の MCP サーバー
356
357[プラグイン](/ja/plugins) は MCP サーバーをバンドルでき、プラグインが有効になると自動的にツールと統合を提供します。プラグイン MCP サーバーはユーザーが設定したサーバーと同じように機能します。
358
359**プラグイン MCP サーバーの仕組み**:
360
361* プラグインはプラグインルートの `.mcp.json` または `plugin.json` 内でインラインで MCP サーバーを定義します
362* プラグインが有効になると、その MCP サーバーが自動的に起動します
363* プラグイン MCP ツールは手動で設定された MCP ツールと一緒に表示されます
364* プラグインサーバーはプラグインのインストールを通じて管理されます(`/mcp` コマンドではありません)
365
366**プラグイン MCP 設定の例**:
367
368プラグインルートの `.mcp.json` 内:
369
370```json theme={null}
371{
372 "mcpServers": {
373 "database-tools": {
374 "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",
375 "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],
376 "env": {
377 "DB_URL": "${DB_URL}"
378 }
379 }
380 }
381}
382```
383
384または `plugin.json` 内でインライン:
385
386```json theme={null}
387{
388 "name": "my-plugin",
389 "mcpServers": {
390 "plugin-api": {
391 "command": "${CLAUDE_PLUGIN_ROOT}/servers/api-server",
392 "args": ["--port", "8080"]
393 }
394 }
395}
396```
397
398**プラグイン MCP 機能**:
399
400* **自動ライフサイクル**:セッション起動時に、有効なプラグインのサーバーが自動的に接続されます。セッション中にプラグインを有効または無効にする場合は、`/reload-plugins` を実行して MCP サーバーを接続または切断してください
401* **環境変数**:バンドルされたプラグインファイルに `${CLAUDE_PLUGIN_ROOT}` を使用し、プラグイン更新を通じて保持される [永続的な状態](/ja/plugins-reference#persistent-data-directory) に `${CLAUDE_PLUGIN_DATA}` を使用します
402* **ユーザー環境アクセス**:手動で設定されたサーバーと同じ環境変数へのアクセス
403* **複数のトランスポートタイプ**:stdio、SSE、HTTP トランスポートをサポート(トランスポートサポートはサーバーによって異なる場合があります)
404
405**プラグイン MCP サーバーの表示**:
406
407```bash theme={null}
408# Claude Code 内で、プラグインのものを含むすべての MCP サーバーを表示
409/mcp
410```
411
412プラグインサーバーはプラグインから来ていることを示すインジケータ付きでリストに表示されます。
413
414**プラグイン MCP サーバーの利点**:
415
416* **バンドル配布**:ツールとサーバーが一緒にパッケージ化されます
417* **自動セットアップ**:手動の MCP 設定は不要です
418* **チーム一貫性**:プラグインがインストールされると、すべてのユーザーが同じツールを取得します
419
420プラグインで MCP サーバーをバンドルする詳細については、[プラグインコンポーネントリファレンス](/ja/plugins-reference#mcp-servers)を参照してください。
421
422## MCP インストールスコープ
423
424MCP サーバーは 3 つのスコープで設定できます。選択するスコープは、サーバーがロードされるプロジェクトと、設定がチームと共有されるかどうかを制御します。
425
426| スコープ | ロード対象 | チームと共有 | 保存場所 |
427| ------------------------ | ----------- | ------------ | ---------------------- |
428| [ローカル](#local-scope) | 現在のプロジェクトのみ | いいえ | `~/.claude.json` |
429| [プロジェクト](#project-scope) | 現在のプロジェクトのみ | はい、バージョン管理経由 | プロジェクトルートの `.mcp.json` |
430| [ユーザー](#user-scope) | すべてのプロジェクト | いいえ | `~/.claude.json` |
431
432### ローカルスコープ
433
434ローカルスコープはデフォルトです。ローカルスコープのサーバーは、追加したプロジェクトでのみロードされ、あなたにプライベートなままです。Claude Code は `~/.claude.json` のそのプロジェクトのパスの下に保存するため、同じサーバーは他のプロジェクトに表示されません。個人開発サーバー、実験的な設定、またはバージョン管理に含めたくない認証情報を持つサーバーにはローカルスコープを使用してください。
435
436<Note>
437 MCP サーバーの「ローカルスコープ」という用語は、一般的なローカル設定とは異なります。MCP ローカルスコープのサーバーは `~/.claude.json`(ホームディレクトリ)に保存されますが、一般的なローカル設定は `.claude/settings.local.json`(プロジェクトディレクトリ内)を使用します。設定ファイルの場所の詳細については、[設定](/ja/settings#settings-files)を参照してください。
438</Note>
439
440```bash theme={null}
441# ローカルスコープのサーバーを追加する(デフォルト)
442claude mcp add --transport http stripe https://mcp.stripe.com
443
444# ローカルスコープを明示的に指定する
445claude mcp add --transport http stripe --scope local https://mcp.stripe.com
446```
447
448コマンドは現在のプロジェクトのエントリを `~/.claude.json` に書き込みます。以下の例は、`/path/to/your/project` から実行した場合の結果を示しています:
449
450```json theme={null}
451{
452 "projects": {
453 "/path/to/your/project": {
454 "mcpServers": {
455 "stripe": {
456 "type": "http",
457 "url": "https://mcp.stripe.com"
458 }
459 }
460 }
461 }
462}
463```
464
465### プロジェクトスコープ
466
467プロジェクトスコープのサーバーは、プロジェクトのルートディレクトリの `.mcp.json` ファイルに設定を保存することで、チーム間のコラボレーションを可能にします。このファイルはバージョン管理にチェックインするように設計されており、すべてのチームメンバーが同じ MCP ツールとサービスにアクセスできることを保証します。プロジェクトスコープのサーバーを追加すると、Claude Code は自動的にこのファイルを作成または更新して、適切な設定構造を使用します。
468
469```bash theme={null}
470# プロジェクトスコープのサーバーを追加する
471claude mcp add --transport http paypal --scope project https://mcp.paypal.com/mcp
472```
473
474結果の `.mcp.json` ファイルは標準化された形式に従います:
475
476```json theme={null}
477{
478 "mcpServers": {
479 "shared-server": {
480 "command": "/path/to/server",
481 "args": [],
482 "env": {}
483 }
484 }
485}
486```
487
488セキュリティ上の理由から、Claude Code は `.mcp.json` ファイルからプロジェクトスコープのサーバーを使用する前に承認を求めます。これらの承認選択をリセットする必要がある場合は、`claude mcp reset-project-choices` コマンドを使用してください。
489
490### ユーザースコープ
491
492ユーザースコープのサーバーは `~/.claude.json` に保存され、クロスプロジェクトのアクセス可能性を提供し、マシン上のすべてのプロジェクト全体で利用可能になりながら、ユーザーアカウントにプライベートなままです。このスコープは、個人的なユーティリティサーバー、開発ツール、または異なるプロジェクト全体で頻繁に使用するサービスに適しています。
493
494```bash theme={null}
495# ユーザーサーバーを追加する
496claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic
497```
498
499### スコープの階層と優先順位
500
501同じサーバーが複数の場所で定義されている場合、Claude Code はそれに 1 回接続し、最も優先度の高いソースからの定義を使用します:
502
5031. ローカルスコープ
5042. プロジェクトスコープ
5053. ユーザースコープ
5064. [プラグイン提供サーバー](/ja/plugins)
5075. [claude.ai コネクタ](#use-mcp-servers-from-claude-ai)
508
5093 つのスコープは名前で重複を照合します。プラグインとコネクタはエンドポイントで照合するため、上記のサーバーと同じ URL またはコマンドを指すものは重複として扱われます。
510
511### `.mcp.json` での環境変数の展開
512
513Claude Code は `.mcp.json` ファイルの環境変数の展開をサポートしており、チームが設定を共有しながら、マシン固有のパスと API キーなどの機密値の柔軟性を維持できます。
514
515**サポートされている構文:**
516
517* `${VAR}` - 環境変数 `VAR` の値に展開されます
518* `${VAR:-default}` - `VAR` が設定されている場合は `VAR` に展開され、そうでない場合はデフォルトを使用します
519
520**展開場所:**
521環境変数は以下で展開できます:
522
523* `command` - サーバー実行可能ファイルのパス
524* `args` - コマンドライン引数
525* `env` - サーバーに渡される環境変数
526* `url` - HTTP サーバータイプの場合
527* `headers` - HTTP サーバー認証の場合
528
529**変数展開を使用した例:**
530
531```json theme={null}
532{
533 "mcpServers": {
534 "api-server": {
535 "type": "http",
536 "url": "${API_BASE_URL:-https://api.example.com}/mcp",
537 "headers": {
538 "Authorization": "Bearer ${API_KEY}"
539 }
540 }
541 }
542}
543```
544
545必要な環境変数が設定されておらず、デフォルト値がない場合、Claude Code は設定の解析に失敗します。
546
547## 実践的な例
548
549{/* ### 例:Playwright でブラウザテストを自動化する
550
551```bash
552claude mcp add --transport stdio playwright -- npx -y @playwright/mcp@latest
553```
554
555その後、ブラウザテストを作成して実行します:
556
557```text
558test@example.com でログインフローが機能するかテストしてください
559```
560```text
561モバイルでチェックアウトページのスクリーンショットを撮ってください
562```
563```text
564検索機能が結果を返すことを確認してください
565``` */}
566
567### 例:Sentry でエラーを監視する
568
569```bash theme={null}
570claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
571```
572
573Sentry アカウントで認証します:
574
575```text theme={null}
576/mcp
577```
578
579その後、本番環境の問題をデバッグします:
580
581```text theme={null}
582過去 24 時間で最も一般的なエラーは何ですか?
583```
584
585```text theme={null}
586エラー ID abc123 のスタックトレースを表示してください
587```
588
589```text theme={null}
590どのデプロイメントがこれらの新しいエラーを導入しましたか?
591```
592
593### 例:コードレビューのために GitHub に接続する
594
595GitHub のリモート MCP サーバーは、ヘッダーとして渡される GitHub 個人アクセストークンで認証します。取得するには、[GitHub トークン設定](https://github.com/settings/personal-access-tokens)を開き、Claude が操作したいリポジトリへのアクセス権を持つ新しいきめ細かいトークンを生成してから、サーバーを追加します:
596
597```bash theme={null}
598claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \
599 --header "Authorization: Bearer YOUR_GITHUB_PAT"
600```
601
602その後、GitHub で作業します:
603
604```text theme={null}
605PR #456 をレビューして改善を提案してください
606```
607
608```text theme={null}
609見つけたバグの新しい課題を作成してください
610```
611
612```text theme={null}
613自分に割り当てられているすべてのオープン PR を表示してください
614```
615
616### 例:PostgreSQL データベースをクエリする
617
618```bash theme={null}
619claude mcp add --transport stdio db -- npx -y @bytebase/dbhub \
620 --dsn "postgresql://readonly:pass@prod.db.com:5432/analytics"
621```
622
623その後、データベースを自然に照会します:
624
625```text theme={null}
626今月の総収益はいくらですか?
627```
628
629```text theme={null}
630orders テーブルのスキーマを表示してください
631```
632
633```text theme={null}
634過去 90 日間に購入していない顧客を検索してください
635```
636
637## リモート MCP サーバーで認証する
638
639多くのクラウドベースの MCP サーバーは認証が必要です。Claude Code は安全な接続のために OAuth 2.0 をサポートしています。
640
641<Steps>
642 <Step title="認証が必要なサーバーを追加する">
643 例:
644
645 ```bash theme={null}
646 claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
647 ```
648 </Step>
649
650 <Step title="Claude Code 内で /mcp コマンドを使用する">
651 Claude Code で、コマンドを使用します:
652
653 ```text theme={null}
654 /mcp
655 ```
656
657 その後、ブラウザでログインするための手順に従ってください。
658 </Step>
659</Steps>
660
661<Tip>
662 ヒント:
663
664 * 認証トークンは安全に保存され、自動的に更新されます
665 * `/mcp` メニューで「Clear authentication」を使用してアクセスを取り消します
666 * ブラウザが自動的に開かない場合は、提供された URL をコピーして手動で開いてください
667 * ブラウザのリダイレクトが認証後に接続エラーで失敗する場合は、ブラウザのアドレスバーから完全なコールバック URL を Claude Code に表示される URL プロンプトに貼り付けてください
668 * OAuth 認証は HTTP サーバーで機能します
669</Tip>
670
671### 固定 OAuth コールバックポートを使用する
672
673一部の MCP サーバーは、事前に登録された特定のリダイレクト URI が必要です。デフォルトでは、Claude Code は OAuth コールバック用にランダムに利用可能なポートを選択します。`--callback-port` を使用してポートを固定し、`http://localhost:PORT/callback` の形式の事前登録されたリダイレクト URI と一致させます。
674
675`--callback-port` を単独で使用できます(動的クライアント登録を使用)、または `--client-id` と一緒に使用できます(事前設定された認証情報を使用)。
676
677```bash theme={null}
678# 動的クライアント登録を使用した固定コールバックポート
679claude mcp add --transport http \
680 --callback-port 8080 \
681 my-server https://mcp.example.com/mcp
682```
683
684### 事前設定された OAuth 認証情報を使用する
685
686一部の MCP サーバーは自動 OAuth セットアップをサポートしていません。「Incompatible auth server: does not support dynamic client registration」のようなエラーが表示される場合、サーバーは事前設定された認証情報が必要です。Claude Code は Client ID Metadata Document(CIMD)を使用するサーバーもサポートしており、これらを自動的に検出します。自動検出に失敗した場合は、まずサーバーの開発者ポータルを通じて OAuth アプリを登録し、サーバーを追加するときに認証情報を提供してください。
687
688<Steps>
689 <Step title="サーバーで OAuth アプリを登録する">
690 サーバーの開発者ポータルを通じてアプリを作成し、クライアント ID とクライアントシークレットをメモしてください。
691
692 多くのサーバーはリダイレクト URI も必要とします。その場合は、ポートを選択し、`http://localhost:PORT/callback` の形式でリダイレクト URI を登録してください。次のステップで `--callback-port` と同じポートを使用してください。
693 </Step>
694
695 <Step title="認証情報を使用してサーバーを追加する">
696 次のいずれかの方法を選択してください。`--callback-port` に使用されるポートは、利用可能な任意のポートにすることができます。前のステップで登録したリダイレクト URI と一致する必要があります。
697
698 <Tabs>
699 <Tab title="claude mcp add">
700 `--client-id` を使用してアプリのクライアント ID を渡します。`--client-secret` フラグはマスクされた入力でシークレットを求めます:
701
702 ```bash theme={null}
703 claude mcp add --transport http \
704 --client-id your-client-id --client-secret --callback-port 8080 \
705 my-server https://mcp.example.com/mcp
706 ```
707 </Tab>
708
709 <Tab title="claude mcp add-json">
710 JSON 設定に `oauth` オブジェクトを含め、`--client-secret` を別のフラグとして渡します:
711
712 ```bash theme={null}
713 claude mcp add-json my-server \
714 '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' \
715 --client-secret
716 ```
717 </Tab>
718
719 <Tab title="claude mcp add-json(コールバックポートのみ)">
720 動的クライアント登録を使用しながらポートを固定するには、クライアント ID なしで `--callback-port` を使用します:
721
722 ```bash theme={null}
723 claude mcp add-json my-server \
724 '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"callbackPort":8080}}'
725 ```
726 </Tab>
727
728 <Tab title="CI / env var">
729 環境変数を通じてシークレットを設定して、対話的なプロンプトをスキップします:
730
731 ```bash theme={null}
732 MCP_CLIENT_SECRET=your-secret claude mcp add --transport http \
733 --client-id your-client-id --client-secret --callback-port 8080 \
734 my-server https://mcp.example.com/mcp
735 ```
736 </Tab>
737 </Tabs>
738 </Step>
739
740 <Step title="Claude Code で認証する">
741 Claude Code で `/mcp` を実行し、ブラウザのログインフローに従ってください。
742 </Step>
743</Steps>
744
745<Tip>
746 ヒント:
747
748 * クライアントシークレットはシステムキーチェーン(macOS)または認証情報ファイルに安全に保存され、設定には保存されません
749 * サーバーがシークレットなしのパブリック OAuth クライアントを使用する場合は、`--client-secret` なしで `--client-id` のみを使用してください
750 * `--callback-port` は `--client-id` の有無にかかわらず使用できます
751 * これらのフラグは HTTP および SSE トランスポートにのみ適用されます。stdio サーバーには影響しません
752 * `claude mcp get <name>` を使用して、OAuth 認証情報がサーバーに設定されていることを確認してください
753</Tip>
754
755### OAuth メタデータ検出をオーバーライドする
756
757Claude Code を特定の OAuth 認可サーバーメタデータ URL に指定して、デフォルトの検出チェーンをバイパスします。MCP サーバーの標準エンドポイントがエラーになる場合、または内部プロキシを通じて検出をルーティングしたい場合に設定します。デフォルトでは、Claude Code は最初に RFC 9728 保護リソースメタデータを `/.well-known/oauth-protected-resource` でチェックし、次に RFC 8414 認可サーバーメタデータを `/.well-known/oauth-authorization-server` でフォールバックします。
758
759`.mcp.json` のサーバー設定の `oauth` オブジェクトに `authServerMetadataUrl` を設定します:
760
761```json theme={null}
762{
763 "mcpServers": {
764 "my-server": {
765 "type": "http",
766 "url": "https://mcp.example.com/mcp",
767 "oauth": {
768 "authServerMetadataUrl": "https://auth.example.com/.well-known/openid-configuration"
769 }
770 }
771 }
772}
773```
774
775URL は `https://` を使用する必要があります。`authServerMetadataUrl` には Claude Code v2.1.64 以降が必要です。メタデータ URL の `scopes_supported` は、アップストリームサーバーがアドバタイズするスコープをオーバーライドします。
776
777### OAuth スコープを制限する
778
779`oauth.scopes` を設定して、認可フロー中に Claude Code がリクエストするスコープをピン留めします。これは、アップストリーム認可サーバーがより多くのスコープをアドバタイズする場合に、MCP サーバーをセキュリティチームが承認したサブセットに制限するサポートされた方法です。値は RFC 6749 §3.3 の `scope` パラメータ形式と一致する単一のスペース区切り文字列です。
780
781```json theme={null}
782{
783 "mcpServers": {
784 "slack": {
785 "type": "http",
786 "url": "https://mcp.slack.com/mcp",
787 "oauth": {
788 "scopes": "channels:read chat:write search:read"
789 }
790 }
791 }
792}
793```
794
795`oauth.scopes` は `authServerMetadataUrl` と `/.well-known` でサーバーが検出するスコープの両方に優先します。MCP サーバーがリクエストするスコープセットを決定するようにするには、設定を解除したままにしてください。
796
797認可サーバーが `scopes_supported` で `offline_access` をアドバタイズする場合、Claude Code はそれをピン留めされたスコープに追加して、新しいブラウザサインインなしでアクセストークンを更新できるようにします。
798
799サーバーが後で `insufficient_scope` の 403 を返す場合、Claude Code は同じピン留めされたスコープで再認証します。必要なツールが pin の外側のスコープを必要とする場合は、`oauth.scopes` を拡張してください。
800
801### カスタム認証用の動的ヘッダーを使用する
802
803MCP サーバーが OAuth 以外の認証スキーム(Kerberos、短期トークン、内部 SSO など)を使用する場合、`headersHelper` を使用して接続時にリクエストヘッダーを生成します。Claude Code はコマンドを実行し、その出力を接続ヘッダーにマージします。
804
805```json theme={null}
806{
807 "mcpServers": {
808 "internal-api": {
809 "type": "http",
810 "url": "https://mcp.internal.example.com",
811 "headersHelper": "/opt/bin/get-mcp-auth-headers.sh"
812 }
813 }
814}
815```
816
817コマンドはインラインにすることもできます:
818
819```json theme={null}
820{
821 "mcpServers": {
822 "internal-api": {
823 "type": "http",
824 "url": "https://mcp.internal.example.com",
825 "headersHelper": "echo '{\"Authorization\": \"Bearer '\"$(get-token)\"'\"}'"
826 }
827 }
828}
829```
830
831**要件:**
832
833* コマンドは文字列キーと値のペアの JSON オブジェクトを stdout に書き込む必要があります
834* コマンドは 10 秒のタイムアウト付きのシェルで実行されます
835* 動的ヘッダーは同じ名前の静的 `headers` をオーバーライドします
836
837ヘルパーは各接続時に実行されます(セッション開始時と再接続時)。キャッシングはないため、スクリプトはトークンの再利用を担当します。
838
839Claude Code は、ヘルパーを実行するときにこれらの環境変数を設定します:
840
841| 変数 | 値 |
842| :---------------------------- | :------------ |
843| `CLAUDE_CODE_MCP_SERVER_NAME` | MCP サーバーの名前 |
844| `CLAUDE_CODE_MCP_SERVER_URL` | MCP サーバーの URL |
845
846これらを使用して、複数の MCP サーバーに対応する単一のヘルパースクリプトを作成できます。
847
848<Note>
849 `headersHelper` は任意のシェルコマンドを実行します。プロジェクトまたはローカルスコープで定義されている場合、ワークスペース信頼ダイアログを受け入れた後にのみ実行されます。
850</Note>
851
852## JSON 設定から MCP サーバーを追加する
853
854MCP サーバーの JSON 設定がある場合は、直接追加できます:
855
856<Steps>
857 <Step title="JSON から MCP サーバーを追加する">
858 ```bash theme={null}
859 # 基本的な構文
860 claude mcp add-json <name> '<json>'
861
862 # 例:JSON 設定を使用して HTTP サーバーを追加する
863 claude mcp add-json weather-api '{"type":"http","url":"https://api.weather.com/mcp","headers":{"Authorization":"Bearer token"}}'
864
865 # 例:JSON 設定を使用して stdio サーバーを追加する
866 claude mcp add-json local-weather '{"type":"stdio","command":"/path/to/weather-cli","args":["--api-key","abc123"],"env":{"CACHE_DIR":"/tmp"}}'
867
868 # 例:事前設定された OAuth 認証情報を使用して HTTP サーバーを追加する
869 claude mcp add-json my-server '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' --client-secret
870 ```
871 </Step>
872
873 <Step title="サーバーが追加されたことを確認する">
874 ```bash theme={null}
875 claude mcp get weather-api
876 ```
877 </Step>
878</Steps>
879
880<Tip>
881 ヒント:
882
883 * JSON がシェルで適切にエスケープされていることを確認してください
884 * JSON は MCP サーバー設定スキーマに準拠する必要があります
885 * `--scope user` を使用して、プロジェクト固有のサーバーの代わりにユーザー設定にサーバーを追加できます
886</Tip>
887
888## Claude Desktop から MCP サーバーをインポートする
889
890Claude Desktop で MCP サーバーを既に設定している場合は、それらをインポートできます:
891
892<Steps>
893 <Step title="Claude Desktop からサーバーをインポートする">
894 ```bash theme={null}
895 # 基本的な構文
896 claude mcp add-from-claude-desktop
897 ```
898 </Step>
899
900 <Step title="インポートするサーバーを選択する">
901 コマンドを実行した後、インポートするサーバーを選択できる対話的なダイアログが表示されます。
902 </Step>
903
904 <Step title="サーバーがインポートされたことを確認する">
905 ```bash theme={null}
906 claude mcp list
907 ```
908 </Step>
909</Steps>
910
911<Tip>
912 ヒント:
913
914 * この機能は macOS と Windows Subsystem for Linux(WSL)でのみ機能します
915 * これらのプラットフォームの標準的な場所から Claude Desktop 設定ファイルを読み取ります
916 * `--scope user` フラグを使用してサーバーをユーザー設定に追加します
917 * インポートされたサーバーは Claude Desktop と同じ名前を持ちます
918 * 同じ名前のサーバーが既に存在する場合、数値サフィックスが付与されます(例:`server_1`)
919</Tip>
920
921## Claude.ai から MCP サーバーを使用する
922
923[Claude.ai](https://claude.ai) アカウントで Claude Code にログインしている場合、Claude.ai で追加した MCP サーバーは Claude Code で自動的に利用可能です:
924
925<Steps>
926 <Step title="Claude.ai で MCP サーバーを設定する">
927 [claude.ai/customize/connectors](https://claude.ai/customize/connectors) でサーバーを追加します。Team および Enterprise プランでは、管理者のみがサーバーを追加できます。
928 </Step>
929
930 <Step title="MCP サーバーを認証する">
931 Claude.ai で必要な認証ステップを完了します。
932 </Step>
933
934 <Step title="Claude Code でサーバーを表示および管理する">
935 Claude Code で、コマンドを使用します:
936
937 ```text theme={null}
938 /mcp
939 ```
940
941 Claude.ai サーバーはリストに表示され、Claude.ai から来ていることを示すインジケータが付きます。
942 </Step>
943</Steps>
944
945Claude Code で claude.ai MCP サーバーを無効にするには、`ENABLE_CLAUDEAI_MCP_SERVERS` 環境変数を `false` に設定します:
946
947```bash theme={null}
948ENABLE_CLAUDEAI_MCP_SERVERS=false claude
949```
950
951## Claude Code を MCP サーバーとして使用する
952
953Claude Code 自体を MCP サーバーとして使用でき、他のアプリケーションが接続できます:
954
955```bash theme={null}
956# Claude を stdio MCP サーバーとして起動する
957claude mcp serve
958```
959
960これを Claude Desktop で使用するには、この設定を claude\_desktop\_config.json に追加します:
961
962```json theme={null}
963{
964 "mcpServers": {
965 "claude-code": {
966 "type": "stdio",
967 "command": "claude",
968 "args": ["mcp", "serve"],
969 "env": {}
970 }
971 }
972}
973```
974
975<Warning>
976 **実行可能ファイルパスの設定**:`command` フィールドは Claude Code 実行可能ファイルを参照する必要があります。`claude` コマンドがシステムの PATH にない場合は、実行可能ファイルへの完全なパスを指定する必要があります。
977
978 完全なパスを見つけるには:
979
980 ```bash theme={null}
981 which claude
982 ```
983
984 その後、設定で完全なパスを使用します:
985
986 ```json theme={null}
987 {
988 "mcpServers": {
989 "claude-code": {
990 "type": "stdio",
991 "command": "/full/path/to/claude",
992 "args": ["mcp", "serve"],
993 "env": {}
994 }
995 }
996 }
997 ```
998
999 正しい実行可能ファイルパスがないと、`spawn claude ENOENT` のようなエラーが発生します。
1000</Warning>
1001
1002<Tip>
1003 ヒント:
1004
1005 * サーバーは View、Edit、LS などの Claude のツールへのアクセスを提供します
1006 * Claude Desktop で、Claude にディレクトリ内のファイルを読み取り、編集などを行うよう依頼してみてください。
1007 * この MCP サーバーは Claude Code のツールのみを MCP クライアントに公開しているため、独自のクライアントは個々のツール呼び出しのユーザー確認を実装する責任があります。
1008</Tip>
1009
1010## MCP 出力制限と警告
1011
1012MCP ツールが大きな出力を生成する場合、Claude Code はトークン使用量を管理して、会話コンテキストが圧倒されるのを防ぐのに役立ちます:
1013
1014* **出力警告閾値**:Claude Code は MCP ツール出力が 10,000 トークンを超えると警告を表示します
1015* **設定可能な制限**:`MAX_MCP_OUTPUT_TOKENS` 環境変数を使用して、許可される最大 MCP 出力トークンを調整できます
1016* **デフォルト制限**:デフォルトの最大値は 25,000 トークンです
1017* **スコープ**:環境変数は独自の制限を宣言しないツールに適用されます。[`anthropic/maxResultSizeChars`](#raise-the-limit-for-a-specific-tool) を設定するツールは、`MAX_MCP_OUTPUT_TOKENS` が何に設定されているかに関わらず、テキストコンテンツにその値を使用します。画像データを返すツールは引き続き `MAX_MCP_OUTPUT_TOKENS` の対象です
1018
1019大きな出力を生成するツールの制限を増やすには:
1020
1021```bash theme={null}
1022export MAX_MCP_OUTPUT_TOKENS=50000
1023claude
1024```
1025
1026これは特に以下を行う MCP サーバーで役立ちます:
1027
1028* 大規模なデータセットまたはデータベースをクエリする
1029* 詳細なレポートまたはドキュメントを生成する
1030* 広範なログファイルまたはデバッグ情報を処理する
1031
1032### 特定のツールの制限を引き上げる
1033
1034MCP サーバーを構築している場合、ツールの `tools/list` 応答エントリで `_meta["anthropic/maxResultSizeChars"]` を設定することで、個々のツールがデフォルトの永続化ディスク閾値より大きい結果を返すことを許可できます。Claude Code はそのツールの閾値を注釈付き値に引き上げます。最大 500,000 文字のハードシーリングまで。
1035
1036これは、データベーススキーマまたは完全なファイルツリーなど、本質的に大きいが必要な出力を返すツールに役立ちます。注釈がない場合、デフォルト閾値を超える結果はディスクに永続化され、会話内のファイル参照に置き換えられます。
1037
1038```json theme={null}
1039{
1040 "name": "get_schema",
1041 "description": "Returns the full database schema",
1042 "_meta": {
1043 "anthropic/maxResultSizeChars": 200000
1044 }
1045}
1046```
1047
1048注釈はテキストコンテンツの `MAX_MCP_OUTPUT_TOKENS` とは独立して適用されるため、ユーザーは注釈を宣言するツールのために環境変数を引き上げる必要はありません。画像データを返すツールは引き続きトークン制限の対象です。
1049
1050<Warning>
1051 特定の MCP サーバーで出力警告が頻繁に発生する場合は、`MAX_MCP_OUTPUT_TOKENS` 制限を増やすことを検討してください。制御していないサーバーの場合は、サーバー作成者に `anthropic/maxResultSizeChars` 注釈を追加するか、応答をページネーションするよう依頼することもできます。注釈は画像コンテンツを返すツールには影響しません。これらの場合、`MAX_MCP_OUTPUT_TOKENS` を引き上げることが唯一のオプションです。
1052</Warning>
1053
1054## MCP 応答要求に対応する
1055
1056MCP サーバーはタスク中に構造化された入力をあなたに要求するための応答要求を使用できます。サーバーが独自に取得できない情報が必要な場合、Claude Code は対話的なダイアログを表示し、あなたの応答をサーバーに返します。設定は不要です。応答要求ダイアログはサーバーが要求したときに自動的に表示されます。
1057
1058サーバーは 2 つの方法で入力を要求できます:
1059
1060* **フォームモード**:Claude Code はサーバーで定義されたフォームフィールド(例:ユーザー名とパスワードプロンプト)を含むダイアログを表示します。フィールドに入力して送信します。
1061* **URL モード**:Claude Code はブラウザ URL を開いて認証または承認を行います。ブラウザでフローを完了し、CLI で確認します。
1062
1063応答要求に自動応答するには、[`Elicitation` フック](/ja/hooks#Elicitation)を使用してください。
1064
1065MCP サーバーを構築していて応答要求を使用する場合は、[MCP 応答要求仕様](https://modelcontextprotocol.io/docs/learn/client-concepts#elicitation)を参照してプロトコルの詳細とスキーマの例を確認してください。
1066
1067## MCP リソースを使用する
1068
1069MCP サーバーはリソースを公開でき、ファイルを参照する方法と同様に @ メンションを使用して参照できます。
1070
1071### MCP リソースを参照する
1072
1073<Steps>
1074 <Step title="利用可能なリソースをリストする">
1075 プロンプトで `@` を入力して、接続されているすべての MCP サーバーから利用可能なリソースを表示します。リソースはオートコンプリートメニューのファイルと一緒に表示されます。
1076 </Step>
1077
1078 <Step title="特定のリソースを参照する">
1079 `@server:protocol://resource/path` の形式を使用してリソースを参照します:
1080
1081 ```text theme={null}
1082 @github:issue://123 を分析して修正を提案できますか?
1083 ```
1084
1085 ```text theme={null}
1086 @docs:file://api/authentication の API ドキュメントをレビューしてください
1087 ```
1088 </Step>
1089
1090 <Step title="複数のリソース参照">
1091 1 つのプロンプトで複数のリソースを参照できます:
1092
1093 ```text theme={null}
1094 @postgres:schema://users と @docs:file://database/user-model を比較してください
1095 ```
1096 </Step>
1097</Steps>
1098
1099<Tip>
1100 ヒント:
1101
1102 * リソースは参照されると自動的に取得され、添付ファイルとして含まれます
1103 * リソースパスは @ メンションオートコンプリートでファジー検索可能です
1104 * Claude Code はサーバーがサポートしている場合、MCP リソースをリストおよび読み取るツールを自動的に提供します
1105 * リソースには、MCP サーバーが提供するあらゆるタイプのコンテンツ(テキスト、JSON、構造化データなど)を含めることができます
1106</Tip>
1107
1108## MCP ツール検索でスケーリングする
1109
1110ツール検索は MCP コンテキスト使用量を低く保つことで、ツール定義をオンデマンドで遅延させます。セッション開始時にはツール名のみがロードされるため、より多くの MCP サーバーを追加してもコンテキストウィンドウへの影響は最小限です。
1111
1112### 仕組み
1113
1114ツール検索はデフォルトで有効です。MCP ツールは事前にコンテキストにロードされるのではなく、遅延されます。Claude はタスクが必要な場合、検索ツールを使用して関連する MCP ツールを検出します。Claude が実際に使用するツールのみがコンテキストに入ります。あなたの視点からは、MCP ツールは以前と同じように機能します。
1115
1116しきい値ベースのロードを優先する場合は、`ENABLE_TOOL_SEARCH=auto` を設定して、コンテキストウィンドウの 10% 以内に収まる場合はスキーマを事前にロードし、オーバーフローのみを遅延させます。すべてのオプションについては、[ツール検索の設定](#configure-tool-search)を参照してください。
1117
1118### MCP サーバー作成者向け
1119
1120MCP サーバーを構築している場合、ツール検索が有効になっているとサーバー命令フィールドがより有用になります。サーバー命令は、[スキル](/ja/skills)の仕組みと同様に、Claude がいつサーバーのツールを検索するかを理解するのに役立ちます。
1121
1122明確で説明的なサーバー命令を追加して、以下を説明します:
1123
1124* ツールが処理するタスクのカテゴリ
1125* Claude がツールを検索すべき場合
1126* サーバーが提供する主な機能
1127
1128Claude Code はツール説明とサーバー命令を各 2KB で切り詰めます。切り詰めを避けるために簡潔に保ち、重要な詳細を最初に配置してください。
1129
1130### ツール検索を設定する
1131
1132ツール検索はデフォルトで有効です:MCP ツールは遅延され、オンデマンドで検出されます。Vertex AI ではデフォルトで無効です。これは `tool_reference` ブロックを受け入れないためです。`ANTHROPIC_BASE_URL` が非ファーストパーティホストを指している場合も無効です。ほとんどのプロキシは `tool_reference` ブロックを転送しないためです。`ENABLE_TOOL_SEARCH` を明示的に設定してオプトインしてください。この機能には、`tool_reference` ブロックをサポートするモデルが必要です:Sonnet 4 以降、または Opus 4 以降。Haiku モデルはツール検索をサポートしていません。
1133
1134`ENABLE_TOOL_SEARCH` 環境変数でツール検索の動作を制御します:
1135
1136| 値 | 動作 |
1137| :--------- | :------------------------------------------------------------------------------------------------------- |
1138| (未設定) | すべての MCP ツールが遅延され、オンデマンドでロードされます。Vertex AI または `ANTHROPIC_BASE_URL` が非ファーストパーティホストの場合はアップフロントロードにフォールバック |
1139| `true` | すべての MCP ツールが遅延。Vertex AI および非ファーストパーティ `ANTHROPIC_BASE_URL` を含む |
1140| `auto` | しきい値モード:ツールがコンテキストウィンドウの 10% 以内に収まる場合はアップフロントロード、そうでない場合は遅延 |
1141| `auto:<N>` | カスタムパーセンテージ付きしきい値モード。`<N>` は 0-100(例:5% の場合は `auto:5`) |
1142| `false` | すべての MCP ツールがアップフロントロード、遅延なし |
1143
1144```bash theme={null}
1145# カスタム 5% しきい値を使用する
1146ENABLE_TOOL_SEARCH=auto:5 claude
1147
1148# ツール検索を完全に無効にする
1149ENABLE_TOOL_SEARCH=false claude
1150```
1151
1152または、[settings.json `env` フィールド](/ja/settings#available-settings)で値を設定します。
1153
1154`ToolSearch` ツールを特別に無効にすることもできます:
1155
1156```json theme={null}
1157{
1158 "permissions": {
1159 "deny": ["ToolSearch"]
1160 }
1161}
1162```
1163
1164### サーバーを遅延から除外する
1165
1166サーバーのツールが検索ステップなしで常に Claude に表示される場合は、そのサーバーの設定で `alwaysLoad` を `true` に設定します。そのサーバーのすべてのツールは、`ENABLE_TOOL_SEARCH` 設定に関係なく、セッション開始時にコンテキストにロードされます。これは、Claude がすべてのターンで必要とする少数のツールに使用してください。各アップフロントツールはコンテキストを消費するため、会話に利用可能なコンテキストが減少します。
1167
1168次の `.mcp.json` エントリは、1 つの HTTP サーバーを除外し、他のサーバーは遅延したままにします:
1169
1170```json theme={null}
1171{
1172 "mcpServers": {
1173 "core-tools": {
1174 "type": "http",
1175 "url": "https://mcp.example.com/mcp",
1176 "alwaysLoad": true
1177 }
1178 }
1179}
1180```
1181
1182`alwaysLoad` フィールドはすべてのサーバータイプで利用可能で、Claude Code v2.1.121 以降が必要です。MCP サーバーは、ツールの `_meta` オブジェクトに `"anthropic/alwaysLoad": true` を含めることで、個別のツールを常にロードとしてマークすることもできます。これはそのツールのみに同じ効果があります。
1183
1184## MCP プロンプトをコマンドとして使用する
1185
1186MCP サーバーはプロンプトを公開でき、Claude Code でコマンドとして利用可能になります。
1187
1188### MCP プロンプトを実行する
1189
1190<Steps>
1191 <Step title="利用可能なプロンプトを検出する">
1192 `/` を入力して、MCP サーバーからのプロンプトを含むすべての利用可能なコマンドを表示します。MCP プロンプトは `/mcp__servername__promptname` の形式で表示されます。
1193 </Step>
1194
1195 <Step title="引数なしでプロンプトを実行する">
1196 ```text theme={null}
1197 /mcp__github__list_prs
1198 ```
1199 </Step>
1200
1201 <Step title="引数を使用してプロンプトを実行する">
1202 多くのプロンプトは引数を受け入れます。コマンドの後にスペース区切りで渡します:
1203
1204 ```text theme={null}
1205 /mcp__github__pr_review 456
1206 ```
1207
1208 ```text theme={null}
1209 /mcp__jira__create_issue "ログインフローのバグ" high
1210 ```
1211 </Step>
1212</Steps>
1213
1214<Tip>
1215 ヒント:
1216
1217 * MCP プロンプトは接続されているサーバーから動的に検出されます
1218 * 引数はプロンプトの定義されたパラメータに基づいて解析されます
1219 * プロンプト結果は会話に直接注入されます
1220 * サーバーとプロンプト名は正規化されます(スペースはアンダースコアになります)
1221</Tip>
1222
1223## 管理対象 MCP 設定
1224
1225MCP サーバーの集中管理が必要な組織の場合、Claude Code は 2 つの設定オプションをサポートしています:
1226
12271. **`managed-mcp.json` による排他的制御**:ユーザーが変更または拡張できない固定の MCP サーバーセットをデプロイします
12282. **許可リスト/拒否リストによるポリシーベースの制御**:ユーザーが独自のサーバーを追加できるようにしますが、許可されているサーバーを制限します
1229
1230これらのオプションにより、IT 管理者は以下を実行できます:
1231
1232* **従業員がアクセスできる MCP サーバーを制御する**:組織全体で承認された MCP サーバーの標準化されたセットをデプロイします
1233* **不正な MCP サーバーを防止する**:ユーザーが未承認の MCP サーバーを追加するのを制限します
1234* **MCP を完全に無効にする**:必要に応じて MCP 機能を完全に削除します
1235
1236### オプション 1:`managed-mcp.json` による排他的制御
1237
1238`managed-mcp.json` ファイルをデプロイすると、すべての MCP サーバーに対して**排他的な制御**が行われます。ユーザーはこのファイルで定義されているもの以外の MCP サーバーを追加、変更、または使用することはできません。これは、完全な制御を望む組織にとって最も単純なアプローチです。
1239
1240システム管理者は、設定ファイルをシステム全体のディレクトリにデプロイします:
1241
1242* macOS:`/Library/Application Support/ClaudeCode/managed-mcp.json`
1243* Linux および WSL:`/etc/claude-code/managed-mcp.json`
1244* Windows:`C:\Program Files\ClaudeCode\managed-mcp.json`
1245
1246<Note>
1247 これらはシステム全体のパス(`~/Library/...` のようなユーザーホームディレクトリではない)であり、管理者権限が必要です。IT 管理者によってデプロイされるように設計されています。
1248</Note>
1249
1250`managed-mcp.json` ファイルは標準的な `.mcp.json` ファイルと同じ形式を使用します:
1251
1252```json theme={null}
1253{
1254 "mcpServers": {
1255 "github": {
1256 "type": "http",
1257 "url": "https://api.githubcopilot.com/mcp/"
1258 },
1259 "sentry": {
1260 "type": "http",
1261 "url": "https://mcp.sentry.dev/mcp"
1262 },
1263 "company-internal": {
1264 "type": "stdio",
1265 "command": "/usr/local/bin/company-mcp-server",
1266 "args": ["--config", "/etc/company/mcp-config.json"],
1267 "env": {
1268 "COMPANY_API_URL": "https://internal.company.com"
1269 }
1270 }
1271 }
1272}
1273```
1274
1275### オプション 2:許可リストと拒否リストによるポリシーベースの制御
1276
1277排他的な制御を行う代わりに、管理者はユーザーが独自の MCP サーバーを設定できるようにしながら、許可されているサーバーに制限を適用できます。このアプローチは、[管理対象設定ファイル](/ja/settings#settings-files)の `allowedMcpServers` と `deniedMcpServers` を使用します。
1278
1279<Note>
1280 **オプションの選択**:固定のサーバーセットをデプロイしてユーザーのカスタマイズを行わない場合はオプション 1(`managed-mcp.json`)を使用します。ユーザーがポリシー制約内で独自のサーバーを追加できるようにする場合はオプション 2(許可リスト/拒否リスト)を使用します。
1281</Note>
1282
1283#### 制限オプション
1284
1285許可リストまたは拒否リストの各エントリは、3 つの方法でサーバーを制限できます:
1286
12871. **サーバー名による** (`serverName`):設定されたサーバーの名前と一致します
12882. **コマンドによる** (`serverCommand`):stdio サーバーを起動するために使用される正確なコマンドと引数と一致します
12893. **URL パターンによる** (`serverUrl`):ワイルドカードサポート付きのリモートサーバー URL と一致します
1290
1291**重要**:各エントリは `serverName`、`serverCommand`、または `serverUrl` のいずれか 1 つだけを持つ必要があります。
1292
1293#### 設定例
1294
1295```json theme={null}
1296{
1297 "allowedMcpServers": [
1298 // サーバー名で許可
1299 { "serverName": "github" },
1300 { "serverName": "sentry" },
1301
1302 // 正確なコマンドで許可(stdio サーバーの場合)
1303 { "serverCommand": ["npx", "-y", "@modelcontextprotocol/server-filesystem"] },
1304 { "serverCommand": ["python", "/usr/local/bin/approved-server.py"] },
1305
1306 // URL パターンで許可(リモートサーバーの場合)
1307 { "serverUrl": "https://mcp.company.com/*" },
1308 { "serverUrl": "https://*.internal.corp/*" }
1309 ],
1310 "deniedMcpServers": [
1311 // サーバー名でブロック
1312 { "serverName": "dangerous-server" },
1313
1314 // 正確なコマンドでブロック(stdio サーバーの場合)
1315 { "serverCommand": ["npx", "-y", "unapproved-package"] },
1316
1317 // URL パターンでブロック(リモートサーバーの場合)
1318 { "serverUrl": "https://*.untrusted.com/*" }
1319 ]
1320}
1321```
1322
1323#### コマンドベースの制限の仕組み
1324
1325**完全一致**:
1326
1327* コマンド配列は**完全に**一致する必要があります。コマンドと正しい順序のすべての引数
1328* 例:`["npx", "-y", "server"]` は `["npx", "server"]` または `["npx", "-y", "server", "--flag"]` と一致しません
1329
1330**Stdio サーバーの動作**:
1331
1332* 許可リストに**任意の** `serverCommand` エントリが含まれている場合、stdio サーバーはそれらのコマンドの 1 つと一致する必要があります
1333* Stdio サーバーはコマンド制限が存在する場合、名前だけでは通過できません
1334* これにより、管理者は実行が許可されているコマンドを強制できます
1335
1336**非 stdio サーバーの動作**:
1337
1338* リモートサーバー(HTTP、SSE、WebSocket)は、許可リストに `serverUrl` エントリが存在する場合、URL ベースのマッチングを使用します
1339* URL エントリが存在しない場合、リモートサーバーは名前ベースのマッチングにフォールバックします
1340* コマンド制限はリモートサーバーには適用されません
1341
1342#### URL ベースの制限の仕組み
1343
1344URL パターンは `*` を使用してワイルドカードをサポートし、任意の文字シーケンスと一致します。これはドメイン全体またはサブドメイン全体を許可するのに役立ちます。
1345
1346**ワイルドカード例**:
1347
1348* `https://mcp.company.com/*` - 特定のドメイン上のすべてのパスを許可
1349* `https://*.example.com/*` - example.com の任意のサブドメインを許可
1350* `http://localhost:*/*` - localhost 上の任意のポートを許可
1351
1352**リモートサーバーの動作**:
1353
1354* 許可リストに**任意の** `serverUrl` エントリが含まれている場合、リモートサーバーはそれらの URL パターンの 1 つと一致する必要があります
1355* リモートサーバーは URL 制限が存在する場合、名前だけでは通過できません
1356* これにより、管理者は許可されているリモートエンドポイントを強制できます
1357
1358<Accordion title="例:URL のみの許可リスト">
1359 ```json theme={null}
1360 {
1361 "allowedMcpServers": [
1362 { "serverUrl": "https://mcp.company.com/*" },
1363 { "serverUrl": "https://*.internal.corp/*" }
1364 ]
1365 }
1366 ```
1367
1368 **結果**:
1369
1370 * `https://mcp.company.com/api` の HTTP サーバー:✅ 許可(URL パターンと一致)
1371 * `https://api.internal.corp/mcp` の HTTP サーバー:✅ 許可(ワイルドカードサブドメインと一致)
1372 * `https://external.com/mcp` の HTTP サーバー:❌ ブロック(URL パターンと一致しない)
1373 * 任意のコマンドの Stdio サーバー:❌ ブロック(一致する名前またはコマンドエントリがない)
1374</Accordion>
1375
1376<Accordion title="例:コマンドのみの許可リスト">
1377 ```json theme={null}
1378 {
1379 "allowedMcpServers": [
1380 { "serverCommand": ["npx", "-y", "approved-package"] }
1381 ]
1382 }
1383 ```
1384
1385 **結果**:
1386
1387 * `["npx", "-y", "approved-package"]` の Stdio サーバー:✅ 許可(コマンドと一致)
1388 * `["node", "server.js"]` の Stdio サーバー:❌ ブロック(コマンドと一致しない)
1389 * 「my-api」という名前の HTTP サーバー:❌ ブロック(一致する名前エントリがない)
1390</Accordion>
1391
1392<Accordion title="例:混合名とコマンド許可リスト">
1393 ```json theme={null}
1394 {
1395 "allowedMcpServers": [
1396 { "serverName": "github" },
1397 { "serverCommand": ["npx", "-y", "approved-package"] }
1398 ]
1399 }
1400 ```
1401
1402 **結果**:
1403
1404 * 「local-tool」という名前で `["npx", "-y", "approved-package"]` の Stdio サーバー:✅ 許可(コマンドと一致)
1405 * 「local-tool」という名前で `["node", "server.js"]` の Stdio サーバー:❌ ブロック(コマンドエントリが存在しますが一致しない)
1406 * 「github」という名前で `["node", "server.js"]` の Stdio サーバー:❌ ブロック(stdio サーバーはコマンドエントリが存在する場合、コマンドと一致する必要があります)
1407 * 「github」という名前の HTTP サーバー:✅ 許可(名前と一致)
1408 * 「other-api」という名前の HTTP サーバー:❌ ブロック(名前と一致しない)
1409</Accordion>
1410
1411<Accordion title="例:名前のみの許可リスト">
1412 ```json theme={null}
1413 {
1414 "allowedMcpServers": [
1415 { "serverName": "github" },
1416 { "serverName": "internal-tool" }
1417 ]
1418 }
1419 ```
1420
1421 **結果**:
1422
1423 * 任意のコマンドで「github」という名前の Stdio サーバー:✅ 許可(コマンド制限なし)
1424 * 任意のコマンドで「internal-tool」という名前の Stdio サーバー:✅ 許可(コマンド制限なし)
1425 * 「github」という名前の HTTP サーバー:✅ 許可(名前と一致)
1426 * 「other」という名前のサーバー:❌ ブロック(名前と一致しない)
1427</Accordion>
1428
1429#### 許可リストの動作(`allowedMcpServers`)
1430
1431* `undefined`(デフォルト):制限なし。ユーザーは任意の MCP サーバーを設定できます
1432* 空の配列 `[]`:完全なロックダウン。ユーザーは MCP サーバーを設定できません
1433* エントリのリスト:ユーザーは名前、コマンド、または URL パターンで一致するサーバーのみを設定できます
1434
1435#### 拒否リストの動作(`deniedMcpServers`)
1436
1437* `undefined`(デフォルト):サーバーはブロックされません
1438* 空の配列 `[]`:サーバーはブロックされません
1439* エントリのリスト:指定されたサーバーはすべてのスコープ全体で明示的にブロックされます
1440
1441#### 重要な注意事項
1442
1443* **オプション 1 とオプション 2 を組み合わせることができます**:`managed-mcp.json` が存在する場合、排他的な制御があり、ユーザーはサーバーを追加できません。許可リスト/拒否リストは管理対象サーバー自体に引き続き適用されます。
1444* **拒否リストは絶対的な優先順位を持ちます**:サーバーが拒否リストエントリ(名前、コマンド、または URL による)と一致する場合、許可リストに含まれていても、ブロックされます
1445* 名前ベース、コマンドベース、URL ベースの制限は一緒に機能します:サーバーは名前エントリ、コマンドエントリ、または URL パターンのいずれかと一致する場合に通過します(拒否リストでブロックされていない限り)
1446
1447<Note>
1448 **`managed-mcp.json` を使用する場合**:ユーザーは `claude mcp add` または設定ファイルを通じて MCP サーバーを追加できません。`allowedMcpServers` と `deniedMcpServers` の設定は、実際にロードされる管理対象サーバーをフィルタリングするために引き続き適用されます。
1449</Note>