Crea tu primer agente de IA con acceso a herramientas
Tutorial paso a paso para crear un agente que busque en la web, ejecute código y envíe correos con herramientas MCP.
Este tutorial explica cómo crear un agente que usa herramientas externas para buscar, ejecutar código aislado y enviar correos. Usaremos herramientas compatibles con MCP del catálogo de 4agent.
Requisitos previos
- Node.js 20+
- Una clave API de tu proveedor de LLM
- Conocimientos básicos de TypeScript
Paso 1: elige las herramientas
Cada agente necesita herramientas adecuadas. Para nuestro asistente de investigación, que busca y resume información, hacen falta:
- Búsqueda web para encontrar información actual
- Ejecución de código para procesar y analizar datos
- Correo para entregar los resultados
Sandbox en nube para ejecutar código con agentes de IA
Paso 2: configura el proyecto
mkdir my-agent && cd my-agent
npm init -y
npm install @anthropic-ai/sdk @e2b/code-interpreterCrea un tsconfig.json con resolución ESM y un punto de entrada src/index.ts.
Paso 3: define el bucle del agente
El núcleo del agente es el bucle de uso de herramientas:
- Envía al LLM un mensaje con las herramientas disponibles
- El LLM decide si llama a alguna herramienta y a cuál
- Ejecuta la herramienta y devuelve el resultado
- Repite hasta obtener una respuesta final
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic();
async function runAgent(task: string) {
const messages: Anthropic.MessageParam[] = [
{ role: "user", content: task },
];
while (true) {
const response = await client.messages.create({
model: "claude-sonnet-4-6",
max_tokens: 4096,
tools: toolDefinitions,
messages,
});
// Check if the model wants to use a tool
if (response.stop_reason === "tool_use") {
const toolUse = response.content.find(
(c) => c.type === "tool_use"
);
const result = await executeTool(
toolUse.name,
toolUse.input
);
messages.push(
{ role: "assistant", content: response.content },
{ role: "user", content: [{ type: "tool_result", tool_use_id: toolUse.id, content: result }] },
);
} else {
// Final response
return response.content;
}
}
}Paso 4: implementa la ejecución de herramientas
Cada herramienta necesita un manejador que convierta la solicitud del LLM en una llamada API:
async function executeTool(
name: string,
input: Record<string, unknown>
): Promise<string> {
switch (name) {
case "run_code":
return await runCodeInSandbox(input.code as string);
case "search_web":
return await searchWeb(input.query as string);
default:
return `Unknown tool: ${name}`;
}
}Ejecutar código con E2B
import { Sandbox } from "@e2b/code-interpreter";
async function runCodeInSandbox(code: string) {
const sandbox = await Sandbox.create();
const result = await sandbox.runCode(code);
await sandbox.kill();
return JSON.stringify(result);
}Paso 5: ejecuta el agente
const result = await runAgent(
"Find the top 5 trending AI tools this week and create a summary table."
);
console.log(result);El agente buscará en la web, procesará los resultados en un entorno aislado y devolverá una respuesta estructurada.
Próximos pasos
- Añade memoria para recordar contexto entre conversaciones
- Añade gestión de errores y reintentos ante fallos
- Explora más herramientas en 4agent para ampliar las capacidades
Trata los argumentos generados como entrada no fiable. Valídalos antes de llamar a servicios externos y evita incluir secretos en prompts, resultados y registros.
Fuentes
Artículos relacionados
¿Qué es Model Context Protocol (MCP)?
Una introducción práctica a MCP, el estándar abierto que conecta agentes de IA con herramientas y datos externos mediante una interfaz común.
TypeSafe AI Jev: modelos System One y flujos de agentes
Qué es Jev, cómo decide, dónde encaja en agentes, en qué se diferencia de un LLM y cuáles son sus límites, probabilidades y costes.
Clink (ClinkBill): pagos y facturación para agentes de IA
Guía de pagos Clink, Merchant of Record, suscripciones, monederos de agentes, enrutamiento, integraciones y precios para productos de IA.