Empezar aquí

Nivel 20 · Uso de herramientas

El ciclo tool_use → tool_result, herramientas definidas con JSON Schema, errores con is_error, tool_choice y un servidor MCP propio conectado a tu aplicación.

Dedicación
~5 h
Lecciones
5 · 230 min
Tu progreso0 de 5 · 0 %

Tu progreso se guarda solo en este navegador.

Objetivo

Dar al modelo herramientas que ejecuta tu código, completar el ciclo de petición y resultado sin errores de protocolo y exponerlas como un servidor MCP reutilizable.

Antes conviene

Hasta ahora el modelo solo escribía texto. En este nivel aprenderás a darle herramientas: funciones de tu código que el modelo puede pedir que ejecutes, como consultar un pedido, buscar en una base de datos o enviar un correo. Es la pieza que permite a un modelo actuar sobre el mundo y la base directa de los agentes del nivel 40.

Para quién es

  • Has terminado el nivel 10 o ya sabes escribir prompts con formato validado.
  • Quieres conectar un modelo a tus APIs o datos internos.
  • Has oído hablar de function calling o de MCP y quieres entender cómo funcionan por dentro.

Qué vas a saber hacer

Al terminar sabrás implementar el ciclo completo de tool use, definir herramientas que el modelo usa bien, devolver errores de forma que el modelo se recupere, controlar cuándo y cuáles usa con tool_choice, y empaquetar tus herramientas en un servidor MCP que puedes conectar a tu propio código o a aplicaciones como Claude Desktop.

Lecciones

  1. Function calling: el ciclo tool_use → tool_result. El protocolo: el modelo pide, tu código ejecuta, le devuelves el resultado. Con un bucle completo en Python y TypeScript.
  2. Definir herramientas con JSON Schema. Nombres, descripciones y JSON Schema: lo que decide si el modelo elige bien la herramienta y le pasa bien los argumentos.
  3. Manejo de errores e is_error. Qué hacer cuando la herramienta falla, cuándo marcar is_error y cómo evitar bucles infinitos.
  4. Controlar la elección con tool_choice. Dejar decidir al modelo, obligarle a usar una herramienta concreta o prohibírselo, y cuándo conviene cada opción.
  5. MCP: conectar un servidor de herramientas. Escribir un servidor MCP con MCPServer, probarlo y conectarlo a tu aplicación.

El proyecto del nivel

Construirás un asistente de pedidos para una tienda ficticia. Los datos pueden vivir en un diccionario o en un SQLite pequeño; lo importante es el protocolo.

Está terminado si cumple todo esto:

  • servidor_tienda.py expone con MCPServer tres herramientas: buscar_pedido(id_pedido), pedidos_de_cliente(email) y solicitar_devolucion(id_pedido, motivo).
  • Cada herramienta tiene docstring con qué hace, cuándo usarla y qué devuelve, y tipos en todos los parámetros.
  • solicitar_devolucion rechaza pedidos inexistentes o fuera de plazo con un error claro.
  • cliente.py lanza el servidor por stdio, convierte sus herramientas al formato de la API y ejecuta el bucle hasta end_turn, con un máximo de 10 pasos.
  • Cada tool_use recibe exactamente un tool_result, con is_error cuando corresponde.
  • trazas.txt muestra las tres conversaciones pedidas, con cada llamada a herramienta y su resultado.

Después de este nivel

Sigue con Nivel 30 · Contexto, memoria y RAG para darle al modelo acceso a tus documentos, o salta a Nivel 40 · Tu primer agente si quieres convertir este bucle en un agente. Como referencia rápida tienes Uso de herramientas y MCP.

Lecciones

5 · marca las que termines
  1. 20.1 Function calling: el ciclo tool_use → tool_result 50 min · práctica
  2. 20.2 Definir herramientas con JSON Schema 45 min · práctica
  3. 20.3 Manejo de errores e is_error 40 min · práctica
  4. 20.4 Controlar la elección con tool_choice 35 min · práctica
  5. 20.5 MCP: conectar un servidor de herramientas 60 min · proyecto
§ Proyecto del nivel

Asistente de pedidos con un servidor MCP

Un servidor MCP con tres herramientas sobre los pedidos de una tienda ficticia y un cliente de línea de comandos que conecta el modelo a ese servidor y responde preguntas de clientes ejecutando las herramientas necesarias.

Entregableservidor_tienda.py (MCPServer, transporte stdio, tres herramientas con docstrings y tipos), cliente.py (bucle tool_use → tool_result con is_error y límite de pasos) y un archivo trazas.txt con tres conversaciones reales: una que usa una herramienta, una que encadena dos y una en la que una herramienta falla y el modelo se recupera.