Skip to content

English · Español

Fase 31 — Quizzes

🇪🇸 Espejo legible de data/quizzes/phase-31-tools-mcp.yaml.

Fuente de verdad: data/quizzes/phase-31-tools-mcp.yaml.


q-31-01 — Transporte de MCP

¿Sobre qué convención de protocolo subyacente está construido MCP (Model Context Protocol), y cuál es el transporte por defecto para servidores locales?

  1. GraphQL sobre HTTP
  2. JSON-RPC 2.0 sobre stdio (con HTTP+SSE y WebSocket como alternativos)
  3. Protocol Buffers sobre gRPC
  4. REST sobre HTTP/2
Respuesta **Opción 2.** MCP usa framing JSON-RPC 2.0. El transporte por defecto es stdio (un objeto JSON por línea en stdin/stdout); HTTP+SSE y WebSocket son alternativos para servidores no locales.

q-31-02 — Códigos de error JSON-RPC

Un tool call con argumentos requeridos ausentes debería devolver qué código de error JSON-RPC, por convención?

  1. -32700 (Parse error)
  2. -32601 (Method not found)
  3. -32602 (Invalid params)
  4. -32603 (Internal error)
Respuesta **Opción 3 (-32602).** Es el código estándar para invalid params. Una tool que lanza `KeyError` profundo y cae a un handler genérico acaba devolviendo `-32603` en su lugar — el código equivocado, haciendo que los agentes reintenten en vez de rendirse.

q-31-03 — Qué garantiza el handshake de MCP

¿Qué establece el handshake initialize de MCP antes de que el cliente pueda llamar a tools/call?

  1. La versión del protocolo que ambos lados acuerdan.
  2. El conjunto de capabilities (tools, resources, prompts) que el servidor expone.
  3. Un token de auth para el resto de la sesión.
  4. Metadatos de nombre + versión del servidor y el cliente.
Respuesta **Opciones 1, 2, 4.** La auth es ortogonal: para stdio depende de la confianza de proceso; para transportes HTTP MCP delega en OAuth o cabeceras a medida.

q-31-04 — LOC mínimas para un servidor MCP conforme al spec

¿Aproximadamente cuántas líneas de Python stdlib (excluyendo tests) requiere un servidor MCP conforme al spec exponiendo una tool? (según la teoría 05-mcp-wire-and-100-line-server.md)

  1. ≈ 20 líneas
  2. ≈ 100 líneas
  3. ≈ 1 000 líneas
  4. ≈ 10 000 líneas (requiere un SDK pesado)
Respuesta **Opción 2 (~100 líneas).** Handshake, tabla de despacho, registro de tools y manejo de errores estándar — todo en stdlib, sin SDK necesario.

q-31-05 — Defensa en profundidad en la validación de tool call

¿Dónde debería ocurrir la validación JSON-Schema de los argumentos de tool call para defensa en profundidad? Elige todas las que apliquen.

  1. En el decodificador del modelo (vía una máscara JSON-Schema, Fase 30)
  2. En el parser de tool call del agente (antes de enviar a MCP)
  3. En el _handle del servidor MCP (antes del despacho a la función de la tool)
  4. Dentro de la propia función de la tool (afirmando invariantes)
Respuesta **Las cuatro.** Cada capa pilla un modo de fallo diferente. Saltarse cualquiera empuja el fallo a una capa con menos contexto para diagnosticarlo (p. ej., omitir la validación de schema en el servidor convierte invalid-params en un internal error, como muestra el ejercicio `/break` de la Fase 31).