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# Conectar Claude Code a herramientas mediante MCP
6
7> Aprenda cómo conectar Claude Code a sus herramientas con el Model Context Protocol.
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 puede conectarse a cientos de herramientas externas y fuentes de datos a través del [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction), un estándar de código abierto para integraciones de IA con herramientas. Los servidores MCP dan a Claude Code acceso a sus herramientas, bases de datos y APIs.
216
217Conecte un servidor cuando se encuentre copiando datos en el chat desde otra herramienta, como un rastreador de problemas o un panel de monitoreo. Una vez conectado, Claude puede leer y actuar en ese sistema directamente en lugar de trabajar con lo que pegue.
218
219## Qué puede hacer con MCP
220
221Con servidores MCP conectados, puede pedirle a Claude Code que:
222
223* **Implemente características desde rastreadores de problemas**: "Agregue la característica descrita en el problema JIRA ENG-4521 y cree un PR en GitHub."
224* **Analice datos de monitoreo**: "Verifique Sentry y Statsig para verificar el uso de la característica descrita en ENG-4521."
225* **Consulte bases de datos**: "Encuentre correos electrónicos de 10 usuarios aleatorios que utilizaron la característica ENG-4521, basándose en nuestra base de datos PostgreSQL."
226* **Integre diseños**: "Actualice nuestra plantilla de correo electrónico estándar basándose en los nuevos diseños de Figma que se publicaron en Slack"
227* **Automatice flujos de trabajo**: "Cree borradores de Gmail invitando a estos 10 usuarios a una sesión de retroalimentación sobre la nueva característica."
228* **Reaccione a eventos externos**: Un servidor MCP también puede actuar como un [canal](/es/channels) que envía mensajes a su sesión, para que Claude reaccione a mensajes de Telegram, chats de Discord o eventos de webhook mientras está fuera.
229
230## Servidores MCP populares
231
232Aquí hay algunos servidores MCP comúnmente utilizados que puede conectar a Claude Code:
233
234<Warning>
235 Use servidores MCP de terceros bajo su propio riesgo - Anthropic no ha verificado
236 la corrección o seguridad de todos estos servidores.
237 Asegúrese de confiar en los servidores MCP que está instalando.
238 Tenga especial cuidado al usar servidores MCP que podrían obtener contenido no confiable,
239 ya que estos pueden exponerlo al riesgo de inyección de indicaciones.
240</Warning>
241
242<MCPServersTable platform="claudeCode" />
243
244<Note>
245 **¿Necesita una integración específica?** [Encuentre cientos más servidores MCP en GitHub](https://github.com/modelcontextprotocol/servers), o cree el suyo propio usando el [MCP SDK](https://modelcontextprotocol.io/quickstart/server).
246</Note>
247
248## Instalación de servidores MCP
249
250Los servidores MCP se pueden configurar de tres formas diferentes según sus necesidades:
251
252### Opción 1: Agregar un servidor HTTP remoto
253
254Los servidores HTTP son la opción recomendada para conectarse a servidores MCP remotos. Este es el transporte más ampliamente soportado para servicios basados en la nube.
255
256```bash theme={null}
257# Sintaxis básica
258claude mcp add --transport http <name> <url>
259
260# Ejemplo real: Conectar a Notion
261claude mcp add --transport http notion https://mcp.notion.com/mcp
262
263# Ejemplo con token Bearer
264claude mcp add --transport http secure-api https://api.example.com/mcp \
265 --header "Authorization: Bearer your-token"
266```
267
268### Opción 2: Agregar un servidor SSE remoto
269
270<Warning>
271 El transporte SSE (Server-Sent Events) está deprecado. Use servidores HTTP en su lugar, donde estén disponibles.
272</Warning>
273
274```bash theme={null}
275# Sintaxis básica
276claude mcp add --transport sse <name> <url>
277
278# Ejemplo real: Conectar a Asana
279claude mcp add --transport sse asana https://mcp.asana.com/sse
280
281# Ejemplo con encabezado de autenticación
282claude mcp add --transport sse private-api https://api.company.com/sse \
283 --header "X-API-Key: your-key-here"
284```
285
286### Opción 3: Agregar un servidor stdio local
287
288Los servidores stdio se ejecutan como procesos locales en su máquina. Son ideales para herramientas que necesitan acceso directo al sistema o scripts personalizados.
289
290```bash theme={null}
291# Sintaxis básica
292claude mcp add [options] <name> -- <command> [args...]
293
294# Ejemplo real: Agregar servidor Airtable
295claude mcp add --transport stdio --env AIRTABLE_API_KEY=YOUR_KEY airtable \
296 -- npx -y airtable-mcp-server
297```
298
299<Note>
300 **Importante: Orden de opciones**
301
302 Todas las opciones (`--transport`, `--env`, `--scope`, `--header`) deben venir **antes** del nombre del servidor. El `--` (doble guión) luego separa el nombre del servidor del comando y los argumentos que se pasan al servidor MCP.
303
304 Por ejemplo:
305
306 * `claude mcp add --transport stdio myserver -- npx server` → ejecuta `npx server`
307 * `claude mcp add --transport stdio --env KEY=value myserver -- python server.py --port 8080` → ejecuta `python server.py --port 8080` con `KEY=value` en el entorno
308
309 Esto evita conflictos entre las banderas de Claude y las banderas del servidor.
310</Note>
311
312### Gestión de sus servidores
313
314Una vez configurados, puede gestionar sus servidores MCP con estos comandos:
315
316```bash theme={null}
317# Listar todos los servidores configurados
318claude mcp list
319
320# Obtener detalles para un servidor específico
321claude mcp get github
322
323# Eliminar un servidor
324claude mcp remove github
325
326# (dentro de Claude Code) Verificar estado del servidor
327/mcp
328```
329
330### Actualizaciones dinámicas de herramientas
331
332Claude Code admite notificaciones `list_changed` de MCP, permitiendo que los servidores MCP actualicen dinámicamente sus herramientas disponibles, indicaciones y recursos sin requerir que se desconecte y reconecte. Cuando un servidor MCP envía una notificación `list_changed`, Claude Code actualiza automáticamente las capacidades disponibles de ese servidor.
333
334### Reconexión automática
335
336Si un servidor HTTP o SSE se desconecta durante la sesión, Claude Code se reconecta automáticamente con retroceso exponencial: hasta cinco intentos, comenzando con un retraso de un segundo y duplicándose cada vez. El servidor aparece como pendiente en `/mcp` mientras la reconexión está en progreso. Después de cinco intentos fallidos, el servidor se marca como fallido y puede reintentar manualmente desde `/mcp`. Los servidores stdio son procesos locales y no se reconectan automáticamente.
337
338El mismo retroceso se aplica cuando un servidor HTTP o SSE falla su conexión inicial al iniciar. A partir de v2.1.121, Claude Code reintenta la conexión inicial hasta tres veces en errores transitorios como una respuesta 5xx, una conexión rechazada o un tiempo de espera agotado, luego marca el servidor como fallido si aún no puede conectarse. Los errores de autenticación y no encontrado no se reintentan porque requieren un cambio de configuración para resolverse.
339
340### Mensajes push con canales
341
342Un servidor MCP también puede enviar mensajes directamente a su sesión para que Claude pueda reaccionar a eventos externos como resultados de CI, alertas de monitoreo o mensajes de chat. Para habilitar esto, su servidor declara la capacidad `claude/channel` y usted la activa con la bandera `--channels` al iniciar. Vea [Canales](/es/channels) para usar un canal oficialmente soportado, o [Referencia de canales](/es/channels-reference) para construir el suyo propio.
343
344<Tip>
345 Consejos:
346
347 * Use la bandera `--scope` para especificar dónde se almacena la configuración:
348 * `local` (predeterminado): Disponible solo para usted en el proyecto actual (se llamaba `project` en versiones anteriores)
349 * `project`: Compartido con todos en el proyecto a través del archivo `.mcp.json`
350 * `user`: Disponible para usted en todos los proyectos (se llamaba `global` en versiones anteriores)
351 * Establezca variables de entorno con banderas `--env` (por ejemplo, `--env KEY=value`)
352 * Configure el tiempo de espera de inicio del servidor MCP usando la variable de entorno MCP\_TIMEOUT (por ejemplo, `MCP_TIMEOUT=10000 claude` establece un tiempo de espera de 10 segundos)
353 * Claude Code mostrará una advertencia cuando la salida de la herramienta MCP exceda 10,000 tokens. Para aumentar este límite, establezca la variable de entorno `MAX_MCP_OUTPUT_TOKENS` (por ejemplo, `MAX_MCP_OUTPUT_TOKENS=50000`)
354 * Use `/mcp` para autenticarse con servidores remotos que requieren autenticación OAuth 2.0
355</Tip>
356
357### Servidores MCP proporcionados por plugins
358
359Los [plugins](/es/plugins) pueden agrupar servidores MCP, proporcionando automáticamente herramientas e integraciones cuando el plugin está habilitado. Los servidores MCP de plugins funcionan de manera idéntica a los servidores configurados por el usuario.
360
361**Cómo funcionan los servidores MCP de plugins**:
362
363* Los plugins definen servidores MCP en `.mcp.json` en la raíz del plugin o en línea en `plugin.json`
364* Cuando un plugin está habilitado, sus servidores MCP se inician automáticamente
365* Las herramientas MCP del plugin aparecen junto a las herramientas MCP configuradas manualmente
366* Los servidores de plugins se gestionan a través de la instalación de plugins (no mediante comandos `/mcp`)
367
368**Ejemplo de configuración MCP de plugin**:
369
370En `.mcp.json` en la raíz del plugin:
371
372```json theme={null}
373{
374 "mcpServers": {
375 "database-tools": {
376 "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",
377 "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],
378 "env": {
379 "DB_URL": "${DB_URL}"
380 }
381 }
382 }
383}
384```
385
386O en línea en `plugin.json`:
387
388```json theme={null}
389{
390 "name": "my-plugin",
391 "mcpServers": {
392 "plugin-api": {
393 "command": "${CLAUDE_PLUGIN_ROOT}/servers/api-server",
394 "args": ["--port", "8080"]
395 }
396 }
397}
398```
399
400**Características de MCP de plugins**:
401
402* **Ciclo de vida automático**: Al iniciar la sesión, los servidores de los plugins habilitados se conectan automáticamente. Si habilita o deshabilita un plugin durante una sesión, ejecute `/reload-plugins` para conectar o desconectar sus servidores MCP
403* **Variables de entorno**: Use `${CLAUDE_PLUGIN_ROOT}` para archivos agrupados en el plugin y `${CLAUDE_PLUGIN_DATA}` para [estado persistente](/es/plugins-reference#persistent-data-directory) que sobrevive a las actualizaciones de plugins
404* **Acceso a variables de entorno del usuario**: Acceso a las mismas variables de entorno que los servidores configurados manualmente
405* **Múltiples tipos de transporte**: Soporte para transportes stdio, SSE e HTTP (el soporte de transporte puede variar según el servidor)
406
407**Visualización de servidores MCP de plugins**:
408
409```bash theme={null}
410# Dentro de Claude Code, vea todos los servidores MCP incluyendo los de plugins
411/mcp
412```
413
414Los servidores de plugins aparecen en la lista con indicadores que muestran que provienen de plugins.
415
416**Beneficios de los servidores MCP de plugins**:
417
418* **Distribución agrupada**: Herramientas y servidores empaquetados juntos
419* **Configuración automática**: No se necesita configuración manual de MCP
420* **Consistencia del equipo**: Todos obtienen las mismas herramientas cuando se instala el plugin
421
422Vea la [referencia de componentes de plugins](/es/plugins-reference#mcp-servers) para detalles sobre cómo agrupar servidores MCP con plugins.
423
424## Alcances de instalación de MCP
425
426Los servidores MCP se pueden configurar en tres alcances diferentes según sus necesidades:
427
428| Alcance | Se carga en | Compartido con equipo | Almacenado en |
429| -------------------------- | -------------------- | ------------------------------------- | ----------------------------------- |
430| [Local](#local-scope) | Solo proyecto actual | No | `~/.claude.json` |
431| [Proyecto](#project-scope) | Solo proyecto actual | Sí, a través del control de versiones | `.mcp.json` en la raíz del proyecto |
432| [Usuario](#user-scope) | Todos sus proyectos | No | `~/.claude.json` |
433
434### Alcance local
435
436El alcance local es el predeterminado. Un servidor con alcance local se carga solo en el proyecto donde lo agregó y permanece privado para usted. Claude Code lo almacena en `~/.claude.json` bajo la ruta de ese proyecto, por lo que el mismo servidor no aparecerá en sus otros proyectos. Use el alcance local para servidores de desarrollo personal, configuraciones experimentales o servidores con credenciales que no desea en el control de versiones.
437
438<Note>
439 El término "alcance local" para servidores MCP difiere de la configuración local general. Los servidores MCP con alcance local se almacenan en `~/.claude.json` (su directorio de inicio), mientras que la configuración local general usa `.claude/settings.local.json` (en el directorio del proyecto). Vea [Configuración](/es/settings#settings-files) para detalles sobre ubicaciones de archivos de configuración.
440</Note>
441
442```bash theme={null}
443# Agregar un servidor con alcance local (predeterminado)
444claude mcp add --transport http stripe https://mcp.stripe.com
445
446# Especificar explícitamente alcance local
447claude mcp add --transport http stripe --scope local https://mcp.stripe.com
448```
449
450El comando escribe el servidor en la entrada de su proyecto actual dentro de `~/.claude.json`. El ejemplo a continuación muestra el resultado cuando lo ejecuta desde `/path/to/your/project`:
451
452```json theme={null}
453{
454 "projects": {
455 "/path/to/your/project": {
456 "mcpServers": {
457 "stripe": {
458 "type": "http",
459 "url": "https://mcp.stripe.com"
460 }
461 }
462 }
463 }
464}
465```
466
467### Alcance de proyecto
468
469Los servidores con alcance de proyecto habilitan la colaboración en equipo al almacenar configuraciones en un archivo `.mcp.json` en el directorio raíz de su proyecto. Este archivo está diseñado para ser verificado en el control de versiones, asegurando que todos los miembros del equipo tengan acceso a las mismas herramientas y servicios MCP. Cuando agrega un servidor con alcance de proyecto, Claude Code crea o actualiza automáticamente este archivo con la estructura de configuración apropiada.
470
471```bash theme={null}
472# Agregar un servidor con alcance de proyecto
473claude mcp add --transport http paypal --scope project https://mcp.paypal.com/mcp
474```
475
476El archivo `.mcp.json` resultante sigue un formato estandarizado:
477
478```json theme={null}
479{
480 "mcpServers": {
481 "shared-server": {
482 "command": "/path/to/server",
483 "args": [],
484 "env": {}
485 }
486 }
487}
488```
489
490Por razones de seguridad, Claude Code solicita aprobación antes de usar servidores con alcance de proyecto desde archivos `.mcp.json`. Si necesita restablecer estas opciones de aprobación, use el comando `claude mcp reset-project-choices`.
491
492### Alcance de usuario
493
494Los servidores con alcance de usuario se almacenan en `~/.claude.json` y proporcionan accesibilidad entre proyectos, haciéndolos disponibles en todos los proyectos en su máquina mientras permanecen privados para su cuenta de usuario. Este alcance funciona bien para servidores de utilidad personal, herramientas de desarrollo o servicios que usa frecuentemente en diferentes proyectos.
495
496```bash theme={null}
497# Agregar un servidor de usuario
498claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic
499```
500
501### Jerarquía de alcance y precedencia
502
503Cuando el mismo servidor está definido en más de un lugar, Claude Code se conecta a él una sola vez, usando la definición de la fuente de mayor precedencia:
504
5051. Alcance local
5062. Alcance de proyecto
5073. Alcance de usuario
5084. [Servidores proporcionados por plugins](/es/plugins)
5095. [Conectores de claude.ai](#use-mcp-servers-from-claude-ai)
510
511Los tres alcances coinciden duplicados por nombre. Los plugins y conectores coinciden por punto final, por lo que uno que apunta a la misma URL o comando que un servidor anterior se trata como un duplicado.
512
513### Expansión de variables de entorno en `.mcp.json`
514
515Claude Code admite la expansión de variables de entorno en archivos `.mcp.json`, permitiendo que los equipos compartan configuraciones mientras mantienen flexibilidad para rutas específicas de máquinas y valores sensibles como claves API.
516
517**Sintaxis soportada:**
518
519* `${VAR}` - Se expande al valor de la variable de entorno `VAR`
520* `${VAR:-default}` - Se expande a `VAR` si está establecida, de lo contrario usa `default`
521
522**Ubicaciones de expansión:**
523Las variables de entorno se pueden expandir en:
524
525* `command` - La ruta del ejecutable del servidor
526* `args` - Argumentos de línea de comandos
527* `env` - Variables de entorno pasadas al servidor
528* `url` - Para tipos de servidor HTTP
529* `headers` - Para autenticación de servidor HTTP
530
531**Ejemplo con expansión de variables:**
532
533```json theme={null}
534{
535 "mcpServers": {
536 "api-server": {
537 "type": "http",
538 "url": "${API_BASE_URL:-https://api.example.com}/mcp",
539 "headers": {
540 "Authorization": "Bearer ${API_KEY}"
541 }
542 }
543 }
544}
545```
546
547Si una variable de entorno requerida no está establecida y no tiene un valor predeterminado, Claude Code no podrá analizar la configuración.
548
549## Ejemplos prácticos
550
551{/* ### Ejemplo: Automatizar pruebas de navegador con Playwright
552
553```bash
554claude mcp add --transport stdio playwright -- npx -y @playwright/mcp@latest
555```
556
557Luego escriba y ejecute pruebas de navegador:
558
559```text
560Test if the login flow works with test@example.com
561```
562```text
563Take a screenshot of the checkout page on mobile
564```
565```text
566Verify that the search feature returns results
567``` */}
568
569### Ejemplo: Monitorear errores con Sentry
570
571```bash theme={null}
572claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
573```
574
575Autentíquese con su cuenta de Sentry:
576
577```text theme={null}
578/mcp
579```
580
581Luego depure problemas de producción:
582
583```text theme={null}
584¿Cuáles son los errores más comunes en las últimas 24 horas?
585```
586
587```text theme={null}
588Muéstrame el seguimiento de pila para el error ID abc123
589```
590
591```text theme={null}
592¿Qué despliegue introdujo estos nuevos errores?
593```
594
595### Ejemplo: Conectar a GitHub para revisiones de código
596
597El servidor MCP remoto de GitHub se autentica con un token de acceso personal de GitHub pasado como encabezado. Para obtener uno, abra su [configuración de token de GitHub](https://github.com/settings/personal-access-tokens), genere un nuevo token de grano fino con acceso a los repositorios con los que desea que Claude trabaje, luego agregue el servidor:
598
599```bash theme={null}
600claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \
601 --header "Authorization: Bearer YOUR_GITHUB_PAT"
602```
603
604Luego trabaje con GitHub:
605
606```text theme={null}
607Revise el PR #456 y sugiera mejoras
608```
609
610```text theme={null}
611Cree un nuevo problema para el error que acabamos de encontrar
612```
613
614```text theme={null}
615Muéstrame todos los PR abiertos asignados a mí
616```
617
618### Ejemplo: Consultar su base de datos PostgreSQL
619
620```bash theme={null}
621claude mcp add --transport stdio db -- npx -y @bytebase/dbhub \
622 --dsn "postgresql://readonly:pass@prod.db.com:5432/analytics"
623```
624
625Luego consulte su base de datos de forma natural:
626
627```text theme={null}
628¿Cuál es nuestro ingreso total este mes?
629```
630
631```text theme={null}
632Muéstrame el esquema para la tabla de pedidos
633```
634
635```text theme={null}
636Encuentre clientes que no han realizado una compra en 90 días
637```
638
639## Autenticarse con servidores MCP remotos
640
641Muchos servidores MCP basados en la nube requieren autenticación. Claude Code admite OAuth 2.0 para conexiones seguras.
642
643<Steps>
644 <Step title="Agregar el servidor que requiere autenticación">
645 Por ejemplo:
646
647 ```bash theme={null}
648 claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
649 ```
650 </Step>
651
652 <Step title="Use el comando /mcp dentro de Claude Code">
653 En Claude Code, use el comando:
654
655 ```text theme={null}
656 /mcp
657 ```
658
659 Luego siga los pasos en su navegador para iniciar sesión.
660 </Step>
661</Steps>
662
663<Tip>
664 Consejos:
665
666 * Los tokens de autenticación se almacenan de forma segura y se actualizan automáticamente
667 * Use "Clear authentication" en el menú `/mcp` para revocar el acceso
668 * Si su navegador no se abre automáticamente, copie la URL proporcionada y ábrala manualmente
669 * Si el redireccionamiento del navegador falla con un error de conexión después de autenticarse, pegue la URL de devolución de llamada completa de la barra de direcciones de su navegador en el indicador de URL que aparece en Claude Code
670 * La autenticación OAuth funciona con servidores HTTP
671</Tip>
672
673### Usar un puerto de devolución de llamada OAuth fijo
674
675Algunos servidores MCP requieren un URI de redireccionamiento específico registrado de antemano. De forma predeterminada, Claude Code elige un puerto disponible aleatorio para la devolución de llamada de OAuth. Use `--callback-port` para fijar el puerto de modo que coincida con un URI de redireccionamiento preregistrado de la forma `http://localhost:PORT/callback`.
676
677Puede usar `--callback-port` por sí solo (con registro dinámico de clientes) o junto con `--client-id` (con credenciales preconfiguradas).
678
679```bash theme={null}
680# Puerto de devolución de llamada fijo con registro dinámico de clientes
681claude mcp add --transport http \
682 --callback-port 8080 \
683 my-server https://mcp.example.com/mcp
684```
685
686### Usar credenciales OAuth preconfiguradas
687
688Algunos servidores MCP no admiten configuración automática de OAuth mediante Registro Dinámico de Clientes. Si ve un error como "Incompatible auth server: does not support dynamic client registration", el servidor requiere credenciales preconfiguradas. Claude Code también admite servidores que usan un Documento de Metadatos de ID de Cliente (CIMD) en lugar de Registro Dinámico de Clientes, y los descubre automáticamente. Si el descubrimiento automático falla, registre una aplicación OAuth a través del portal de desarrolladores del servidor primero, luego proporcione las credenciales al agregar el servidor.
689
690<Steps>
691 <Step title="Registrar una aplicación OAuth con el servidor">
692 Cree una aplicación a través del portal de desarrolladores del servidor y anote su ID de cliente y secreto de cliente.
693
694 Muchos servidores también requieren un URI de redireccionamiento. Si es así, elija un puerto y registre un URI de redireccionamiento en el formato `http://localhost:PORT/callback`. Use ese mismo puerto con `--callback-port` en el siguiente paso.
695 </Step>
696
697 <Step title="Agregar el servidor con sus credenciales">
698 Elija uno de los siguientes métodos. El puerto utilizado para `--callback-port` puede ser cualquier puerto disponible. Solo necesita coincidir con el URI de redireccionamiento que registró en el paso anterior.
699
700 <Tabs>
701 <Tab title="claude mcp add">
702 Use `--client-id` para pasar el ID de cliente de su aplicación. La bandera `--client-secret` solicita el secreto con entrada enmascarada:
703
704 ```bash theme={null}
705 claude mcp add --transport http \
706 --client-id your-client-id --client-secret --callback-port 8080 \
707 my-server https://mcp.example.com/mcp
708 ```
709 </Tab>
710
711 <Tab title="claude mcp add-json">
712 Incluya el objeto `oauth` en la configuración JSON y pase `--client-secret` como una bandera separada:
713
714 ```bash theme={null}
715 claude mcp add-json my-server \
716 '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' \
717 --client-secret
718 ```
719 </Tab>
720
721 <Tab title="claude mcp add-json (solo puerto de devolución de llamada)">
722 Use `--callback-port` sin un ID de cliente para fijar el puerto mientras usa registro dinámico de clientes:
723
724 ```bash theme={null}
725 claude mcp add-json my-server \
726 '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"callbackPort":8080}}'
727 ```
728 </Tab>
729
730 <Tab title="CI / variable de entorno">
731 Establezca el secreto a través de una variable de entorno para omitir el indicador interactivo:
732
733 ```bash theme={null}
734 MCP_CLIENT_SECRET=your-secret claude mcp add --transport http \
735 --client-id your-client-id --client-secret --callback-port 8080 \
736 my-server https://mcp.example.com/mcp
737 ```
738 </Tab>
739 </Tabs>
740 </Step>
741
742 <Step title="Autenticarse en Claude Code">
743 Ejecute `/mcp` en Claude Code y siga el flujo de inicio de sesión del navegador.
744 </Step>
745</Steps>
746
747<Tip>
748 Consejos:
749
750 * El secreto del cliente se almacena de forma segura en su llavero del sistema (macOS) o un archivo de credenciales, no en su configuración
751 * Si el servidor usa un cliente OAuth público sin secreto, use solo `--client-id` sin `--client-secret`
752 * `--callback-port` se puede usar con o sin `--client-id`
753 * Estas banderas solo se aplican a transportes HTTP y SSE. No tienen efecto en servidores stdio
754 * Use `claude mcp get <name>` para verificar que las credenciales OAuth estén configuradas para un servidor
755</Tip>
756
757### Anular el descubrimiento de metadatos de OAuth
758
759Apunte Claude Code a una URL de metadatos de servidor de autorización OAuth específica para omitir la cadena de descubrimiento predeterminada. De forma predeterminada, Claude Code primero verifica los Metadatos de Recursos Protegidos RFC 9728 en `/.well-known/oauth-protected-resource`, luego recurre a los metadatos del servidor de autorización RFC 8414 en `/.well-known/oauth-authorization-server`.
760
761Establezca `authServerMetadataUrl` en el objeto `oauth` de la configuración de su servidor en `.mcp.json`:
762
763```json theme={null}
764{
765 "mcpServers": {
766 "my-server": {
767 "type": "http",
768 "url": "https://mcp.example.com/mcp",
769 "oauth": {
770 "authServerMetadataUrl": "https://auth.example.com/.well-known/openid-configuration"
771 }
772 }
773 }
774}
775```
776
777La URL debe usar `https://`. `authServerMetadataUrl` requiere Claude Code v2.1.64 o posterior. Los `scopes_supported` de la URL de metadatos anulan los alcances que el servidor ascendente anuncia.
778
779### Restringir alcances de OAuth
780
781Establezca `oauth.scopes` para fijar los alcances que Claude Code solicita durante el flujo de autorización. Esta es la forma soportada de restringir un servidor MCP a un subconjunto aprobado por el equipo de seguridad cuando el servidor de autorización ascendente anuncia más alcances de los que desea otorgar. El valor es una cadena única separada por espacios, que coincide con el formato del parámetro `scope` en RFC 6749 §3.3.
782
783```json theme={null}
784{
785 "mcpServers": {
786 "slack": {
787 "type": "http",
788 "url": "https://mcp.slack.com/mcp",
789 "oauth": {
790 "scopes": "channels:read chat:write search:read"
791 }
792 }
793 }
794}
795```
796
797`oauth.scopes` tiene precedencia sobre tanto `authServerMetadataUrl` como los alcances que el servidor descubre en `/.well-known`. Déjelo sin establecer para permitir que el servidor MCP determine el conjunto de alcances solicitados.
798
799Si el servidor de autorización anuncia `offline_access` en `scopes_supported`, Claude Code lo añade a los alcances fijados para que el token de acceso pueda actualizarse sin un nuevo inicio de sesión en el navegador.
800
801Si el servidor luego devuelve un 403 `insufficient_scope` para una llamada de herramienta, Claude Code se reautentica con los mismos alcances fijados. Amplíe `oauth.scopes` cuando una herramienta que necesita requiera un alcance fuera del fijo.
802
803### Usar encabezados dinámicos para autenticación personalizada
804
805Si su servidor MCP usa un esquema de autenticación diferente a OAuth (como Kerberos, tokens de corta duración o un SSO interno), use `headersHelper` para generar encabezados de solicitud en el momento de la conexión. Claude Code ejecuta el comando y fusiona su salida en los encabezados de conexión.
806
807```json theme={null}
808{
809 "mcpServers": {
810 "internal-api": {
811 "type": "http",
812 "url": "https://mcp.internal.example.com",
813 "headersHelper": "/opt/bin/get-mcp-auth-headers.sh"
814 }
815 }
816}
817```
818
819El comando también puede ser en línea:
820
821```json theme={null}
822{
823 "mcpServers": {
824 "internal-api": {
825 "type": "http",
826 "url": "https://mcp.internal.example.com",
827 "headersHelper": "echo '{\"Authorization\": \"Bearer '\"$(get-token)\"'\"}'"
828 }
829 }
830}
831```
832
833**Requisitos:**
834
835* El comando debe escribir un objeto JSON de pares clave-valor de cadena en stdout
836* El comando se ejecuta en un shell con un tiempo de espera de 10 segundos
837* Los encabezados dinámicos anulan cualquier `headers` estático con el mismo nombre
838
839El ayudante se ejecuta nuevamente en cada conexión (al iniciar la sesión y al reconectar). No hay almacenamiento en caché, por lo que su script es responsable de cualquier reutilización de tokens.
840
841Claude Code establece estas variables de entorno al ejecutar el ayudante:
842
843| Variable | Valor |
844| :---------------------------- | :------------------------- |
845| `CLAUDE_CODE_MCP_SERVER_NAME` | el nombre del servidor MCP |
846| `CLAUDE_CODE_MCP_SERVER_URL` | la URL del servidor MCP |
847
848Use estas para escribir un único script de ayudante que sirva múltiples servidores MCP.
849
850<Note>
851 `headersHelper` ejecuta comandos de shell arbitrarios. Cuando se define en alcance de proyecto o local, solo se ejecuta después de que acepte el diálogo de confianza del espacio de trabajo.
852</Note>
853
854## Agregar servidores MCP desde configuración JSON
855
856Si tiene una configuración JSON para un servidor MCP, puede agregarla directamente:
857
858<Steps>
859 <Step title="Agregar un servidor MCP desde JSON">
860 ```bash theme={null}
861 # Sintaxis básica
862 claude mcp add-json <name> '<json>'
863
864 # Ejemplo: Agregar un servidor HTTP con configuración JSON
865 claude mcp add-json weather-api '{"type":"http","url":"https://api.weather.com/mcp","headers":{"Authorization":"Bearer token"}}'
866
867 # Ejemplo: Agregar un servidor stdio con configuración JSON
868 claude mcp add-json local-weather '{"type":"stdio","command":"/path/to/weather-cli","args":["--api-key","abc123"],"env":{"CACHE_DIR":"/tmp"}}'
869
870 # Ejemplo: Agregar un servidor HTTP con credenciales OAuth preconfiguradas
871 claude mcp add-json my-server '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' --client-secret
872 ```
873 </Step>
874
875 <Step title="Verificar que el servidor fue agregado">
876 ```bash theme={null}
877 claude mcp get weather-api
878 ```
879 </Step>
880</Steps>
881
882<Tip>
883 Consejos:
884
885 * Asegúrese de que el JSON esté correctamente escapado en su shell
886 * El JSON debe cumplir con el esquema de configuración del servidor MCP
887 * Puede usar `--scope user` para agregar el servidor a su configuración de usuario en lugar de la específica del proyecto
888</Tip>
889
890## Importar servidores MCP desde Claude Desktop
891
892Si ya ha configurado servidores MCP en Claude Desktop, puede importarlos:
893
894<Steps>
895 <Step title="Importar servidores desde Claude Desktop">
896 ```bash theme={null}
897 # Sintaxis básica
898 claude mcp add-from-claude-desktop
899 ```
900 </Step>
901
902 <Step title="Seleccionar qué servidores importar">
903 Después de ejecutar el comando, verá un diálogo interactivo que le permite seleccionar qué servidores desea importar.
904 </Step>
905
906 <Step title="Verificar que los servidores fueron importados">
907 ```bash theme={null}
908 claude mcp list
909 ```
910 </Step>
911</Steps>
912
913<Tip>
914 Consejos:
915
916 * Esta característica solo funciona en macOS y Windows Subsystem for Linux (WSL)
917 * Lee el archivo de configuración de Claude Desktop desde su ubicación estándar en esas plataformas
918 * Use la bandera `--scope user` para agregar servidores a su configuración de usuario
919 * Los servidores importados tendrán los mismos nombres que en Claude Desktop
920 * Si ya existen servidores con los mismos nombres, obtendrán un sufijo numérico (por ejemplo, `server_1`)
921</Tip>
922
923## Usar servidores MCP desde Claude.ai
924
925Si ha iniciado sesión en Claude Code con una cuenta de [Claude.ai](https://claude.ai), los servidores MCP que ha agregado en Claude.ai están automáticamente disponibles en Claude Code:
926
927<Steps>
928 <Step title="Configurar servidores MCP en Claude.ai">
929 Agregue servidores en [claude.ai/customize/connectors](https://claude.ai/customize/connectors). En planes de Equipo y Empresa, solo los administradores pueden agregar servidores.
930 </Step>
931
932 <Step title="Autenticar el servidor MCP">
933 Complete los pasos de autenticación requeridos en Claude.ai.
934 </Step>
935
936 <Step title="Ver y gestionar servidores en Claude Code">
937 En Claude Code, use el comando:
938
939 ```text theme={null}
940 /mcp
941 ```
942
943 Los servidores de Claude.ai aparecen en la lista con indicadores que muestran que provienen de Claude.ai.
944 </Step>
945</Steps>
946
947Para desactivar servidores MCP de Claude.ai en Claude Code, establezca la variable de entorno `ENABLE_CLAUDEAI_MCP_SERVERS` en `false`:
948
949```bash theme={null}
950ENABLE_CLAUDEAI_MCP_SERVERS=false claude
951```
952
953## Usar Claude Code como servidor MCP
954
955Puede usar Claude Code mismo como servidor MCP al que otras aplicaciones pueden conectarse:
956
957```bash theme={null}
958# Iniciar Claude como servidor MCP stdio
959claude mcp serve
960```
961
962Puede usar esto en Claude Desktop agregando esta configuración a claude\_desktop\_config.json:
963
964```json theme={null}
965{
966 "mcpServers": {
967 "claude-code": {
968 "type": "stdio",
969 "command": "claude",
970 "args": ["mcp", "serve"],
971 "env": {}
972 }
973 }
974}
975```
976
977<Warning>
978 **Configurar la ruta del ejecutable**: El campo `command` debe hacer referencia al ejecutable de Claude Code. Si el comando `claude` no está en el PATH del sistema, deberá especificar la ruta completa al ejecutable.
979
980 Para encontrar la ruta completa:
981
982 ```bash theme={null}
983 which claude
984 ```
985
986 Luego use la ruta completa en su configuración:
987
988 ```json theme={null}
989 {
990 "mcpServers": {
991 "claude-code": {
992 "type": "stdio",
993 "command": "/full/path/to/claude",
994 "args": ["mcp", "serve"],
995 "env": {}
996 }
997 }
998 }
999 ```
1000
1001 Sin la ruta correcta del ejecutable, encontrará errores como `spawn claude ENOENT`.
1002</Warning>
1003
1004<Tip>
1005 Consejos:
1006
1007 * El servidor proporciona acceso a las herramientas de Claude como View, Edit, LS, etc.
1008 * En Claude Desktop, intente pedirle a Claude que lea archivos en un directorio, haga ediciones y más.
1009 * Tenga en cuenta que este servidor MCP solo expone las herramientas de Claude Code a su cliente MCP, por lo que su propio cliente es responsable de implementar la confirmación del usuario para llamadas de herramientas individuales.
1010</Tip>
1011
1012## Límites de salida de MCP y advertencias
1013
1014Cuando las herramientas MCP producen salidas grandes, Claude Code ayuda a gestionar el uso de tokens para evitar abrumar el contexto de su conversación:
1015
1016* **Umbral de advertencia de salida**: Claude Code muestra una advertencia cuando la salida de cualquier herramienta MCP excede 10,000 tokens
1017* **Límite configurable**: Puede ajustar los tokens de salida MCP máximos permitidos usando la variable de entorno `MAX_MCP_OUTPUT_TOKENS`
1018* **Límite predeterminado**: El máximo predeterminado es 25,000 tokens
1019* **Alcance**: La variable de entorno se aplica a herramientas que no declaran su propio límite. Las herramientas que establecen [`anthropic/maxResultSizeChars`](#raise-the-limit-for-a-specific-tool) usan ese valor en su lugar para contenido de texto, independientemente de lo que `MAX_MCP_OUTPUT_TOKENS` esté establecido. Las herramientas que devuelven datos de imagen aún están sujetas a `MAX_MCP_OUTPUT_TOKENS`
1020
1021Para aumentar el límite para herramientas que producen salidas grandes:
1022
1023```bash theme={null}
1024export MAX_MCP_OUTPUT_TOKENS=50000
1025claude
1026```
1027
1028Esto es particularmente útil cuando se trabaja con servidores MCP que:
1029
1030* Consultan grandes conjuntos de datos o bases de datos
1031* Generan reportes o documentación detallados
1032* Procesan archivos de registro extensos o información de depuración
1033
1034### Aumentar el límite para una herramienta específica
1035
1036Si está construyendo un servidor MCP, puede permitir que herramientas individuales devuelvan resultados más grandes que el umbral predeterminado de persistencia en disco estableciendo `_meta["anthropic/maxResultSizeChars"]` en la entrada de la herramienta en la respuesta `tools/list`. Claude Code aumenta el umbral de esa herramienta al valor anotado, hasta un límite máximo de 500,000 caracteres.
1037
1038Esto es útil para herramientas que devuelven salidas inherentemente grandes pero necesarias, como esquemas de bases de datos o árboles de archivos completos. Sin la anotación, los resultados que exceden el umbral predeterminado se persisten en disco y se reemplazan con una referencia de archivo en la conversación.
1039
1040```json theme={null}
1041{
1042 "name": "get_schema",
1043 "description": "Returns the full database schema",
1044 "_meta": {
1045 "anthropic/maxResultSizeChars": 200000
1046 }
1047}
1048```
1049
1050La anotación se aplica independientemente de `MAX_MCP_OUTPUT_TOKENS` para contenido de texto, por lo que los usuarios no necesitan aumentar la variable de entorno para herramientas que la declaran. Las herramientas que devuelven datos de imagen aún están sujetas al límite de tokens.
1051
1052<Warning>
1053 Si frecuentemente encuentra advertencias de salida con servidores MCP específicos que no controla, considere aumentar el límite `MAX_MCP_OUTPUT_TOKENS`. También puede pedirle al autor del servidor que agregue la anotación `anthropic/maxResultSizeChars` o que pagine sus respuestas. La anotación no tiene efecto en herramientas que devuelven contenido de imagen; para esas, aumentar `MAX_MCP_OUTPUT_TOKENS` es la única opción.
1054</Warning>
1055
1056## Responder a solicitudes de elicitación de MCP
1057
1058Los servidores MCP pueden solicitar entrada estructurada de usted durante una tarea usando elicitación. Cuando un servidor necesita información que no puede obtener por sí solo, Claude Code muestra un diálogo interactivo y pasa su respuesta de vuelta al servidor. No se requiere configuración de su parte: los diálogos de elicitación aparecen automáticamente cuando un servidor los solicita.
1059
1060Los servidores pueden solicitar entrada de dos formas:
1061
1062* **Modo de formulario**: Claude Code muestra un diálogo con campos de formulario definidos por el servidor (por ejemplo, un indicador de nombre de usuario y contraseña). Complete los campos y envíe.
1063* **Modo de URL**: Claude Code abre una URL del navegador para autenticación o aprobación. Complete el flujo en el navegador, luego confirme en la CLI.
1064
1065Para responder automáticamente a solicitudes de elicitación sin mostrar un diálogo, use el [hook `Elicitation`](/es/hooks#Elicitation).
1066
1067Si está construyendo un servidor MCP que usa elicitación, vea la [especificación de elicitación de MCP](https://modelcontextprotocol.io/docs/learn/client-concepts#elicitation) para detalles de protocolo y ejemplos de esquema.
1068
1069## Usar recursos MCP
1070
1071Los servidores MCP pueden exponer recursos que puede referenciar usando menciones @, similar a cómo referencia archivos.
1072
1073### Referenciar recursos MCP
1074
1075<Steps>
1076 <Step title="Listar recursos disponibles">
1077 Escriba `@` en su indicación para ver los recursos disponibles de todos los servidores MCP conectados. Los recursos aparecen junto a los archivos en el menú de autocompletado.
1078 </Step>
1079
1080 <Step title="Referenciar un recurso específico">
1081 Use el formato `@server:protocol://resource/path` para referenciar un recurso:
1082
1083 ```text theme={null}
1084 ¿Puede analizar @github:issue://123 y sugerir una solución?
1085 ```
1086
1087 ```text theme={null}
1088 Por favor revise la documentación de API en @docs:file://api/authentication
1089 ```
1090 </Step>
1091
1092 <Step title="Múltiples referencias de recursos">
1093 Puede referenciar múltiples recursos en una sola indicación:
1094
1095 ```text theme={null}
1096 Compare @postgres:schema://users con @docs:file://database/user-model
1097 ```
1098 </Step>
1099</Steps>
1100
1101<Tip>
1102 Consejos:
1103
1104 * Los recursos se obtienen automáticamente e incluyen como adjuntos cuando se referencian
1105 * Las rutas de recursos son búsquedas difusas en el autocompletado de menciones @
1106 * Claude Code proporciona automáticamente herramientas para listar y leer recursos MCP cuando los servidores los admiten
1107 * Los recursos pueden contener cualquier tipo de contenido que proporcione el servidor MCP (texto, JSON, datos estructurados, etc.)
1108</Tip>
1109
1110## Escalar con MCP Tool Search
1111
1112Tool Search mantiene el uso de contexto MCP bajo al diferir las definiciones de herramientas hasta que Claude las necesite. Solo los nombres de herramientas se cargan al iniciar la sesión, por lo que agregar más servidores MCP tiene un impacto mínimo en su ventana de contexto.
1113
1114### Cómo funciona
1115
1116Tool Search está habilitado de forma predeterminada. Las herramientas MCP se difieren en lugar de cargarse en el contexto de antemano, y Claude usa una herramienta de búsqueda para descubrir las relevantes cuando una tarea las necesita. Solo las herramientas que Claude realmente usa entran en el contexto. Desde su perspectiva, las herramientas MCP funcionan exactamente como antes.
1117
1118Si prefiere carga basada en umbral, establezca `ENABLE_TOOL_SEARCH=auto` para cargar esquemas de antemano cuando se ajusten dentro del 10% de la ventana de contexto y diferir solo el desbordamiento. Vea [Configurar búsqueda de herramientas](#configure-tool-search) para todas las opciones.
1119
1120### Para autores de servidores MCP
1121
1122Si está construyendo un servidor MCP, el campo de instrucciones del servidor se vuelve más útil con Tool Search habilitado. Las instrucciones del servidor ayudan a Claude a entender cuándo buscar sus herramientas, similar a cómo funcionan las [skills](/es/skills).
1123
1124Agregue instrucciones claras y descriptivas del servidor que expliquen:
1125
1126* Qué categoría de tareas manejan sus herramientas
1127* Cuándo Claude debe buscar sus herramientas
1128* Capacidades clave que proporciona su servidor
1129
1130Claude Code trunca descripciones de herramientas e instrucciones del servidor en 2KB cada una. Manténgalas concisas para evitar truncamiento, y ponga detalles críticos cerca del inicio.
1131
1132### Configurar búsqueda de herramientas
1133
1134Tool Search está habilitado de forma predeterminada: las herramientas MCP se difieren y se descubren bajo demanda. Está deshabilitado de forma predeterminada en Vertex AI, que no acepta el encabezado beta de búsqueda de herramientas, y cuando `ANTHROPIC_BASE_URL` apunta a un host que no es de primera parte, ya que la mayoría de los proxies no reenvían bloques `tool_reference`. Establezca `ENABLE_TOOL_SEARCH` explícitamente para optar por participar. Esta característica requiere modelos que admitan bloques `tool_reference`: Sonnet 4 y posterior, u Opus 4 y posterior. Los modelos Haiku no admiten búsqueda de herramientas.
1135
1136Controle el comportamiento de búsqueda de herramientas con la variable de entorno `ENABLE_TOOL_SEARCH`:
1137
1138| Valor | Comportamiento |
1139| :--------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1140| (sin establecer) | Todas las herramientas MCP diferidas y cargadas bajo demanda. Recurre a carga de antemano en Vertex AI o cuando `ANTHROPIC_BASE_URL` es un host que no es de primera parte |
1141| `true` | Todas las herramientas MCP diferidas, incluyendo en Vertex AI y para `ANTHROPIC_BASE_URL` que no es de primera parte |
1142| `auto` | Modo de umbral: las herramientas se cargan de antemano si se ajustan dentro del 10% de la ventana de contexto, diferidas de lo contrario |
1143| `auto:<N>` | Modo de umbral con un porcentaje personalizado, donde `<N>` es 0-100 (p. ej., `auto:5` para 5%) |
1144| `false` | Todas las herramientas MCP cargadas de antemano, sin diferimiento |
1145
1146```bash theme={null}
1147# Usar un umbral personalizado del 5%
1148ENABLE_TOOL_SEARCH=auto:5 claude
1149
1150# Desactivar búsqueda de herramientas completamente
1151ENABLE_TOOL_SEARCH=false claude
1152```
1153
1154O establezca el valor en su [campo `env` de settings.json](/es/settings#available-settings).
1155
1156También puede desactivar la herramienta `ToolSearch` específicamente:
1157
1158```json theme={null}
1159{
1160 "permissions": {
1161 "deny": ["ToolSearch"]
1162 }
1163}
1164```
1165
1166### Eximir un servidor del diferimiento
1167
1168Si las herramientas de un servidor deben ser siempre visibles para Claude sin un paso de búsqueda, establezca `alwaysLoad` en `true` en la configuración de ese servidor. Cada herramienta de ese servidor se carga entonces en el contexto al iniciar la sesión independientemente de la configuración `ENABLE_TOOL_SEARCH`. Use esto para un pequeño número de herramientas que Claude necesita en cada turno, ya que cada herramienta de antemano consume contexto que de otro modo estaría disponible para su conversación.
1169
1170La siguiente entrada `.mcp.json` exime un servidor HTTP mientras deja otros servidores diferidos:
1171
1172```json theme={null}
1173{
1174 "mcpServers": {
1175 "core-tools": {
1176 "type": "http",
1177 "url": "https://mcp.example.com/mcp",
1178 "alwaysLoad": true
1179 }
1180 }
1181}
1182```
1183
1184El campo `alwaysLoad` está disponible en todos los tipos de servidor y requiere Claude Code v2.1.121 o posterior. Un servidor MCP también puede marcar herramientas individuales como siempre cargadas incluyendo `"anthropic/alwaysLoad": true` en el objeto `_meta` de la herramienta, que tiene el mismo efecto solo para esa herramienta.
1185
1186## Usar indicaciones MCP como comandos
1187
1188Los servidores MCP pueden exponer indicaciones que se vuelven disponibles como comandos en Claude Code.
1189
1190### Ejecutar indicaciones MCP
1191
1192<Steps>
1193 <Step title="Descubrir indicaciones disponibles">
1194 Escriba `/` para ver todos los comandos disponibles, incluyendo los de servidores MCP. Las indicaciones MCP aparecen con el formato `/mcp__servername__promptname`.
1195 </Step>
1196
1197 <Step title="Ejecutar una indicación sin argumentos">
1198 ```text theme={null}
1199 /mcp__github__list_prs
1200 ```
1201 </Step>
1202
1203 <Step title="Ejecutar una indicación con argumentos">
1204 Muchas indicaciones aceptan argumentos. Páselos separados por espacios después del comando:
1205
1206 ```text theme={null}
1207 /mcp__github__pr_review 456
1208 ```
1209
1210 ```text theme={null}
1211 /mcp__jira__create_issue "Bug en flujo de inicio de sesión" high
1212 ```
1213 </Step>
1214</Steps>
1215
1216<Tip>
1217 Consejos:
1218
1219 * Las indicaciones MCP se descubren dinámicamente desde servidores conectados
1220 * Los argumentos se analizan basándose en los parámetros definidos de la indicación
1221 * Los resultados de la indicación se inyectan directamente en la conversación
1222 * Los nombres de servidor e indicación se normalizan (los espacios se convierten en guiones bajos)
1223</Tip>
1224
1225## Configuración MCP gestionada
1226
1227Para organizaciones que necesitan control centralizado sobre servidores MCP, Claude Code admite dos opciones de configuración:
1228
12291. **Control exclusivo con `managed-mcp.json`**: Implemente un conjunto fijo de servidores MCP que los usuarios no pueden modificar ni extender
12302. **Control basado en políticas con listas de permitidos/bloqueados**: Permita que los usuarios agreguen sus propios servidores, pero restrinja cuáles están permitidos
1231
1232Estas opciones permiten a los administradores de TI:
1233
1234* **Controlar a qué servidores MCP pueden acceder los empleados**: Implemente un conjunto estandarizado de servidores MCP aprobados en toda la organización
1235* **Prevenir servidores MCP no autorizados**: Restrinja a los usuarios de agregar servidores MCP no aprobados
1236* **Desactivar MCP completamente**: Elimine completamente la funcionalidad MCP si es necesario
1237
1238### Opción 1: Control exclusivo con managed-mcp.json
1239
1240Cuando implementa un archivo `managed-mcp.json`, toma **control exclusivo** sobre todos los servidores MCP. Los usuarios no pueden agregar, modificar ni usar ningún servidor MCP que no esté definido en este archivo. Este es el enfoque más simple para organizaciones que desean control completo.
1241
1242Los administradores del sistema implementan el archivo de configuración en un directorio de todo el sistema:
1243
1244* macOS: `/Library/Application Support/ClaudeCode/managed-mcp.json`
1245* Linux y WSL: `/etc/claude-code/managed-mcp.json`
1246* Windows: `C:\Program Files\ClaudeCode\managed-mcp.json`
1247
1248<Note>
1249 Estas son rutas de todo el sistema (no directorios de inicio de usuario como `~/Library/...`) que requieren privilegios de administrador. Están diseñadas para ser implementadas por administradores de TI.
1250</Note>
1251
1252El archivo `managed-mcp.json` usa el mismo formato que un archivo `.mcp.json` estándar:
1253
1254```json theme={null}
1255{
1256 "mcpServers": {
1257 "github": {
1258 "type": "http",
1259 "url": "https://api.githubcopilot.com/mcp/"
1260 },
1261 "sentry": {
1262 "type": "http",
1263 "url": "https://mcp.sentry.dev/mcp"
1264 },
1265 "company-internal": {
1266 "type": "stdio",
1267 "command": "/usr/local/bin/company-mcp-server",
1268 "args": ["--config", "/etc/company/mcp-config.json"],
1269 "env": {
1270 "COMPANY_API_URL": "https://internal.company.com"
1271 }
1272 }
1273 }
1274}
1275```
1276
1277### Opción 2: Control basado en políticas con listas de permitidos y bloqueados
1278
1279En lugar de tomar control exclusivo, los administradores pueden permitir que los usuarios configuren sus propios servidores MCP mientras aplican restricciones sobre qué servidores están permitidos. Este enfoque usa `allowedMcpServers` y `deniedMcpServers` en el [archivo de configuración gestionada](/es/settings#settings-files).
1280
1281<Note>
1282 **Elegir entre opciones**: Use la Opción 1 (`managed-mcp.json`) cuando desee implementar un conjunto fijo de servidores sin personalización del usuario. Use la Opción 2 (listas de permitidos/bloqueados) cuando desee permitir que los usuarios agreguen sus propios servidores dentro de restricciones de política.
1283</Note>
1284
1285#### Opciones de restricción
1286
1287Cada entrada en la lista de permitidos o bloqueados puede restringir servidores de tres formas:
1288
12891. **Por nombre de servidor** (`serverName`): Coincide con el nombre configurado del servidor
12902. **Por comando** (`serverCommand`): Coincide con el comando exacto y los argumentos utilizados para iniciar servidores stdio
12913. **Por patrón de URL** (`serverUrl`): Coincide con URLs de servidor remoto con soporte de comodín
1292
1293**Importante**: Cada entrada debe tener exactamente uno de `serverName`, `serverCommand` o `serverUrl`.
1294
1295#### Configuración de ejemplo
1296
1297```json theme={null}
1298{
1299 "allowedMcpServers": [
1300 // Permitir por nombre de servidor
1301 { "serverName": "github" },
1302 { "serverName": "sentry" },
1303
1304 // Permitir por comando exacto (para servidores stdio)
1305 { "serverCommand": ["npx", "-y", "@modelcontextprotocol/server-filesystem"] },
1306 { "serverCommand": ["python", "/usr/local/bin/approved-server.py"] },
1307
1308 // Permitir por patrón de URL (para servidores remotos)
1309 { "serverUrl": "https://mcp.company.com/*" },
1310 { "serverUrl": "https://*.internal.corp/*" }
1311 ],
1312 "deniedMcpServers": [
1313 // Bloquear por nombre de servidor
1314 { "serverName": "dangerous-server" },
1315
1316 // Bloquear por comando exacto (para servidores stdio)
1317 { "serverCommand": ["npx", "-y", "unapproved-package"] },
1318
1319 // Bloquear por patrón de URL (para servidores remotos)
1320 { "serverUrl": "https://*.untrusted.com/*" }
1321 ]
1322}
1323```
1324
1325#### Cómo funcionan las restricciones basadas en comandos
1326
1327**Coincidencia exacta**:
1328
1329* Los arrays de comandos deben coincidir **exactamente** - tanto el comando como todos los argumentos en el orden correcto
1330* Ejemplo: `["npx", "-y", "server"]` NO coincidirá con `["npx", "server"]` o `["npx", "-y", "server", "--flag"]`
1331
1332**Comportamiento del servidor stdio**:
1333
1334* Cuando la lista de permitidos contiene **cualquier** entrada `serverCommand`, los servidores stdio **deben** coincidir con uno de esos comandos
1335* Los servidores stdio no pueden pasar solo por nombre cuando hay restricciones de comando presentes
1336* Esto asegura que los administradores puedan aplicar qué comandos están permitidos ejecutarse
1337
1338**Comportamiento del servidor no-stdio**:
1339
1340* Los servidores remotos (HTTP, SSE, WebSocket) usan coincidencia basada en URL cuando existen entradas `serverUrl` en la lista de permitidos
1341* Si no existen entradas de URL, los servidores remotos recurren a coincidencia basada en nombre
1342* Las restricciones de comando no se aplican a servidores remotos
1343
1344#### Cómo funcionan las restricciones basadas en URL
1345
1346Los patrones de URL admiten comodines usando `*` para coincidir con cualquier secuencia de caracteres. Esto es útil para permitir dominios completos o subdominios.
1347
1348**Ejemplos de comodín**:
1349
1350* `https://mcp.company.com/*` - Permitir todas las rutas en un dominio específico
1351* `https://*.example.com/*` - Permitir cualquier subdominio de example.com
1352* `http://localhost:*/*` - Permitir cualquier puerto en localhost
1353
1354**Comportamiento del servidor remoto**:
1355
1356* Cuando la lista de permitidos contiene **cualquier** entrada `serverUrl`, los servidores remotos **deben** coincidir con uno de esos patrones de URL
1357* Los servidores remotos no pueden pasar solo por nombre cuando hay restricciones de URL presentes
1358* Esto asegura que los administradores puedan aplicar qué puntos finales remotos están permitidos
1359
1360<Accordion title="Ejemplo: Lista de permitidos solo de URL">
1361 ```json theme={null}
1362 {
1363 "allowedMcpServers": [
1364 { "serverUrl": "https://mcp.company.com/*" },
1365 { "serverUrl": "https://*.internal.corp/*" }
1366 ]
1367 }
1368 ```
1369
1370 **Resultado**:
1371
1372 * Servidor HTTP en `https://mcp.company.com/api`: ✅ Permitido (coincide con patrón de URL)
1373 * Servidor HTTP en `https://api.internal.corp/mcp`: ✅ Permitido (coincide con subdominio comodín)
1374 * Servidor HTTP en `https://external.com/mcp`: ❌ Bloqueado (no coincide con ningún patrón de URL)
1375 * Servidor stdio con cualquier comando: ❌ Bloqueado (sin entradas de nombre o comando para coincidir)
1376</Accordion>
1377
1378<Accordion title="Ejemplo: Lista de permitidos solo de comando">
1379 ```json theme={null}
1380 {
1381 "allowedMcpServers": [
1382 { "serverCommand": ["npx", "-y", "approved-package"] }
1383 ]
1384 }
1385 ```
1386
1387 **Resultado**:
1388
1389 * Servidor stdio con `["npx", "-y", "approved-package"]`: ✅ Permitido (coincide con comando)
1390 * Servidor stdio con `["node", "server.js"]`: ❌ Bloqueado (no coincide con comando)
1391 * Servidor HTTP llamado "my-api": ❌ Bloqueado (sin entradas de nombre para coincidir)
1392</Accordion>
1393
1394<Accordion title="Ejemplo: Lista de permitidos mixta de nombre y comando">
1395 ```json theme={null}
1396 {
1397 "allowedMcpServers": [
1398 { "serverName": "github" },
1399 { "serverCommand": ["npx", "-y", "approved-package"] }
1400 ]
1401 }
1402 ```
1403
1404 **Resultado**:
1405
1406 * Servidor stdio llamado "local-tool" con `["npx", "-y", "approved-package"]`: ✅ Permitido (coincide con comando)
1407 * Servidor stdio llamado "local-tool" con `["node", "server.js"]`: ❌ Bloqueado (existen entradas de comando pero no coincide)
1408 * Servidor stdio llamado "github" con `["node", "server.js"]`: ❌ Bloqueado (los servidores stdio deben coincidir con comandos cuando existen entradas de comando)
1409 * Servidor HTTP llamado "github": ✅ Permitido (coincide con nombre)
1410 * Servidor HTTP llamado "other-api": ❌ Bloqueado (el nombre no coincide)
1411</Accordion>
1412
1413<Accordion title="Ejemplo: Lista de permitidos solo de nombre">
1414 ```json theme={null}
1415 {
1416 "allowedMcpServers": [
1417 { "serverName": "github" },
1418 { "serverName": "internal-tool" }
1419 ]
1420 }
1421 ```
1422
1423 **Resultado**:
1424
1425 * Servidor stdio llamado "github" con cualquier comando: ✅ Permitido (sin restricciones de comando)
1426 * Servidor stdio llamado "internal-tool" con cualquier comando: ✅ Permitido (sin restricciones de comando)
1427 * Servidor HTTP llamado "github": ✅ Permitido (coincide con nombre)
1428 * Cualquier servidor llamado "other": ❌ Bloqueado (el nombre no coincide)
1429</Accordion>
1430
1431#### Comportamiento de la lista de permitidos (`allowedMcpServers`)
1432
1433* `undefined` (predeterminado): Sin restricciones - los usuarios pueden configurar cualquier servidor MCP
1434* Array vacío `[]`: Bloqueo completo - los usuarios no pueden configurar ningún servidor MCP
1435* Lista de entradas: Los usuarios solo pueden configurar servidores que coincidan por nombre, comando o patrón de URL
1436
1437#### Comportamiento de la lista de bloqueados (`deniedMcpServers`)
1438
1439* `undefined` (predeterminado): Ningún servidor está bloqueado
1440* Array vacío `[]`: Ningún servidor está bloqueado
1441* Lista de entradas: Los servidores especificados están explícitamente bloqueados en todos los alcances
1442
1443#### Notas importantes
1444
1445* **La Opción 1 y la Opción 2 se pueden combinar**: Si existe `managed-mcp.json`, tiene control exclusivo y los usuarios no pueden agregar servidores. Las listas de permitidos/bloqueados aún se aplican a los servidores gestionados mismos.
1446* **La lista de bloqueados tiene precedencia absoluta**: Si un servidor coincide con una entrada de lista de bloqueados (por nombre, comando o URL), será bloqueado incluso si está en la lista de permitidos
1447* **Las restricciones basadas en nombre, comando y URL funcionan juntas**: un servidor pasa si coincide con **cualquiera** de una entrada de nombre, una entrada de comando o un patrón de URL (a menos que esté bloqueado por lista de bloqueados)
1448
1449<Note>
1450 **Cuando se usa `managed-mcp.json`**: Los usuarios no pueden agregar servidores MCP a través de `claude mcp add` o archivos de configuración. La configuración `allowedMcpServers` y `deniedMcpServers` aún se aplica para filtrar qué servidores gestionados se cargan realmente.
1451</Note>