Roots, permisos, sampling y trazabilidad: límites reales de una integración MCP

Aprende a pensar una integración MCP con criterio operativo: roots, alcance, permisos, sampling, autorización y logging para evitar servidores técnicamente válidos pero inseguros o caóticos en uso real.

Cuando un servidor MCP deja de ser una demo y empieza a tocar trabajo real, el problema central ya no es solo la tool. El problema pasa a ser el alcance: qué puede ver, qué puede pedir, qué puede ejecutar y cómo se observa todo eso.

Por eso una integración madura necesita límites operativos. En MCP, varias piezas ayudan a dibujarlos: roots, anotaciones, autorización en HTTP, sampling, elicitation y logging estructurado.

La clave es entender que no todas estas piezas son equivalentes. Algunas coordinan alcance, otras orientan al cliente y otras ayudan a supervisar lo que ocurre durante la ejecución.

Un error muy frecuente es tratar roots como si fueran sandbox de seguridad absoluta. La propia documentación oficial deja claro que funcionan mejor como coordinación y prevención de errores que como defensa fuerte frente a código malicioso.

  • Roots ayudan a enfocar al servidor, pero no son una jaula mágica.
  • Los roots permiten que un cliente exponga al servidor qué directorios están en foco. Son especialmente útiles para servidores de filesystem, repositorios o documentación local.
  • La documentación oficial insiste en una idea importante: roots son un mecanismo de coordinación, no un límite de seguridad fuerte. Funcionan muy bien para prevenir accidentes y organizar contexto, pero no sustituyen controles del sistema operativo ni entornos de sandbox.
  • Eso cambia cómo debes explicarlo y usarlo. Roots sirven para decir 'trabaja aquí', no para prometer 'jamás podrás salir de aquí'.
  • Ambas funciones añaden potencia, pero también piden más criterio de control.

Roots y alcance

Roots ayudan a enfocar al servidor, pero no son una jaula mágica.

Los roots permiten que un cliente exponga al servidor qué directorios están en foco. Son especialmente útiles para servidores de filesystem, repositorios o documentación local.

La documentación oficial insiste en una idea importante: roots son un mecanismo de coordinación, no un límite de seguridad fuerte. Funcionan muy bien para prevenir accidentes y organizar contexto, pero no sustituyen controles del sistema operativo ni entornos de sandbox.

Eso cambia cómo debes explicarlo y usarlo. Roots sirven para decir 'trabaja aquí', no para prometer 'jamás podrás salir de aquí'.

Sampling y elicitation

Ambas funciones añaden potencia, pero también piden más criterio de control.

Sampling permite que un servidor pida al cliente una llamada al modelo para completar una tarea dependiente de IA. Eso abre flujos agentic más ricos sin obligar al servidor a integrar un modelo por su cuenta.

Elicitation permite que el servidor solicite información concreta al usuario durante una operación. En lugar de fallar por datos faltantes, puede pedir justo lo necesario en el momento.

Ambas funciones son útiles, pero solo tienen sentido si el cliente conserva control y el usuario entiende qué se está pidiendo y por qué.

Autorización

La estrategia cambia según el transporte.

La especificación actual indica que la autorización formal se aplica al transporte HTTP. Cuando una integración usa `stdio`, lo habitual es que las credenciales se recuperen del entorno local y no del flujo de autorización MCP para HTTP.

Esto evita mezclar dos escenarios distintos: servidor local como proceso de confianza relativo y servidor remoto como servicio que debe pedir acceso bajo un estándar claro.

Si diseñas para HTTP, conviene pensar explícitamente en el flujo de autorización desde el principio. Si diseñas para `stdio`, conviene pensar en entorno, permisos del sistema y secretos locales.

Logging y trazabilidad

Una integración sin observabilidad se vuelve cara de mantener.

La especificación incluye logging estructurado para que los servidores envíen mensajes a clientes con niveles de severidad y datos serializables. Eso ayuda a depurar sin depender de prints improvisados.

La trazabilidad no consiste en registrar todo. Consiste en registrar lo suficiente para entender qué pidió el servidor, qué ejecutó, qué falló y con qué contexto.

Cuando una tool entra en producción, esta capa se vuelve crítica para soporte, auditoría y mejora continua.

Caso guiado

Imagina un servidor MCP que opera sobre documentación local y además usa sampling para resumir cambios. El cliente le expone roots concretos del proyecto, el servidor respeta ese alcance, y cualquier petición de sampling pasa por el cliente con control humano.

Si además el servidor registra eventos relevantes con logging estructurado, ya no trabajas a ciegas. Sabes qué directorios estaban en foco, qué operación se ejecutó y qué parte del flujo dependió del modelo.

Errores comunes

Práctica

Diseña una política mínima para un servidor MCP de documentación: define roots, qué operaciones serían solo lectura, si usarías sampling y qué eventos registrarías.

La evidencia de logro es un mini marco operativo coherente, no solo una lista de features.

MCP
07

Roots, permisos, sampling y trazabilidad: límites reales de una integración MCP

Aprende a pensar una integración MCP con criterio operativo: roots, alcance, permisos, sampling, autorización y logging para evitar servidores técnicamente válidos pero inseguros o caóticos en uso real.

Código del tema: roots + permisos + sampling + trazabilidad

📘 Teoría

Roots y alcance

Roots ayudan a enfocar al servidor, pero no son una jaula mágica.

Los roots permiten que un cliente exponga al servidor qué directorios están en foco. Son especialmente útiles para servidores de filesystem, repositorios o documentación local.

La documentación oficial insiste en una idea importante: roots son un mecanismo de coordinación, no un límite de seguridad fuerte. Funcionan muy bien para prevenir accidentes y organizar contexto, pero no sustituyen controles del sistema operativo ni entornos de sandbox.

Eso cambia cómo debes explicarlo y usarlo. Roots sirven para decir 'trabaja aquí', no para prometer 'jamás podrás salir de aquí'.

Ejemplo simple de roots
{
  "roots": [
    {
      "uri": "file:///Users/ana/proyecto-mcp",
      "name": "Proyecto MCP"
    }
  ]
}

Sampling y elicitation

Ambas funciones añaden potencia, pero también piden más criterio de control.

1

Sampling permite que un servidor pida al cliente una llamada al modelo para completar una tarea dependiente de IA. Eso abre flujos agentic más ricos sin obligar al servidor a integrar un modelo por su cuenta.

2

Elicitation permite que el servidor solicite información concreta al usuario durante una operación. En lugar de fallar por datos faltantes, puede pedir justo lo necesario en el momento.

3

Ambas funciones son útiles, pero solo tienen sentido si el cliente conserva control y el usuario entiende qué se está pidiendo y por qué.

Autorización

La estrategia cambia según el transporte.

La especificación actual indica que la autorización formal se aplica al transporte HTTP. Cuando una integración usa `stdio`, lo habitual es que las credenciales se recuperen del entorno local y no del flujo de autorización MCP para HTTP.

Esto evita mezclar dos escenarios distintos: servidor local como proceso de confianza relativo y servidor remoto como servicio que debe pedir acceso bajo un estándar claro.

Si diseñas para HTTP, conviene pensar explícitamente en el flujo de autorización desde el principio. Si diseñas para `stdio`, conviene pensar en entorno, permisos del sistema y secretos locales.

Logging y trazabilidad

Una integración sin observabilidad se vuelve cara de mantener.

1

La especificación incluye logging estructurado para que los servidores envíen mensajes a clientes con niveles de severidad y datos serializables. Eso ayuda a depurar sin depender de prints improvisados.

2

La trazabilidad no consiste en registrar todo. Consiste en registrar lo suficiente para entender qué pidió el servidor, qué ejecutó, qué falló y con qué contexto.

3

Cuando una tool entra en producción, esta capa se vuelve crítica para soporte, auditoría y mejora continua.

Caso guiado

Imagina un servidor MCP que opera sobre documentación local y además usa sampling para resumir cambios. El cliente le expone roots concretos del proyecto, el servidor respeta ese alcance, y cualquier petición de sampling pasa por el cliente con control humano.

Si además el servidor registra eventos relevantes con logging estructurado, ya no trabajas a ciegas. Sabes qué directorios estaban en foco, qué operación se ejecutó y qué parte del flujo dependió del modelo.

Errores comunes

1

Confiar demasiado en roots

Sirven para coordinar alcance, pero no equivalen a una barrera de seguridad fuerte.

2

Permisos implícitos

Si el usuario no entiende qué se pide y por qué, la integración pierde claridad y confianza.

3

Sin trazabilidad

Cuando algo falla no sabes si el problema fue de contexto, autorización, cliente o ejecución.

Práctica

1

Diseña una política mínima para un servidor MCP de documentación: define roots, qué operaciones serían solo lectura, si usarías sampling y qué eventos registrarías.

2

La evidencia de logro es un mini marco operativo coherente, no solo una lista de features.

🧭 Visuales clave

Mapa de límites operativos en MCP

Mapa visual de alcance, permisos, control del cliente y trazabilidad en una integración MCP.

Diagrama de roots, permisos, sampling y logging como límites operativos de una integración MCP.

🧪 Aprende probando

Ejemplo Ejemplo guiado: un root bien declarado Revisa cómo un cliente expone un directorio en foco para un servidor de filesystem.

🏁 Retos

Reto Reto: define límites mínimos Escribe tres líneas: un root, una operación de solo lectura y un evento que registrarías.

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros 😉.

Esta la hice en febrero de 2026 para facilitar el aprendizaje de mis alumnxs. Aprender desarrollo web practicando. La idea es que crezca semanalmente con nuevos temas, tests y retos.

Inspirado en MDN, en W3Schools, en Codepen, en el crack de Manz y en mil sitios de documentación sobre desarrollo web. Quería aportar además de bloques teóricos con ejemplos, la gamificación de los retos y el sistema de test que ya tenía en culTest .

Si te gustó, si no te gustó, si quieres saludarme, o invitarme a 🍻 no dudes en escribirme en cristianeslava@gmail.com .