¿Cuándo usar app() vs define()?
| Patrón | Cuándo usarlo |
|---|---|
define() | Una sola operación con un endpoint HTTP |
app() | Varias herramientas relacionadas que quieres desplegar juntas |
define(). Si necesitas agrupar múltiples operaciones — por ejemplo, enviar y leer emails desde el mismo servicio — usa app().
Ejemplo básico
index.ts
Prueba local
Inicia el servidor conjelou dev y prueba cada tool en su ruta:
400 con detalles:
API
AppConfig
| Campo | Tipo | Predeterminado | Descripción |
|---|---|---|---|
cors | object | { origin: "*" } | Configuración CORS global |
timeout | number | 30000 | Timeout en ms para todos los tools |
methods | string[] | ["GET","POST","PUT","PATCH","DELETE"] | Métodos HTTP permitidos |
mcp | boolean | true | Registrar tools en el servidor MCP |
Rutas auto-generadas
Tus keys del objetotools se convierten automáticamente a kebab-case para generar las rutas HTTP:
| Key | Ruta |
|---|---|
enviarEmail | /enviar-email |
leerBandeja | /leer-bandeja |
MiTool | /mi-tool |
config.path en el define() individual:
Combinación de config
La configuración global deapp() se aplica a todos los tools. Cada define() puede sobreescribir valores específicos:
| Campo | Comportamiento |
|---|---|
timeout | El tool sobreescribe el global |
methods | El tool sobreescribe el global |
cors | El tool sobreescribe el global |
mcp | El tool sobreescribe el global |
path | Siempre por tool |
cron | Siempre por tool |
rapido tiene un timeout de 5 segundos y lento hereda los 30 segundos globales. Ambos comparten la configuración CORS.
Endpoint de salud
En modo app,/__health retorna información de todos los tools:
Guardas de tipo
UsaisEdgeApp() e isEdgeFunction() para identificar el tipo de export en runtime:
Multi-tool cron
Cada tool dentro deapp() puede tener sus propios schedules cron independientes. Las peticiones cron se envían a la ruta específica de cada tool.
Multi-tool MCP
Un solo servidor MCP en/mcp registra automáticamente todos los tools del app(). Para excluir un tool del registro MCP, usa mcp: false en su config:
toolPublico vía MCP. toolInterno solo es accesible por HTTP directo en su ruta /tool-interno.
Rutas expuestas (modo app)
| Ruta | Descripción |
|---|---|
/__health | Health check con lista de tools |
/mcp | Servidor MCP unificado (a menos que config.mcp: false global) |
/<tool-key> | Ruta de cada tool (kebab-case o config.path personalizado) |
Problemas comunes
- 404 en la ruta del tool
- Validación falla con 400
- Tool no aparece en MCP
Las keys de
tools se convierten a kebab-case. Si tu key es enviarEmail, la ruta es /enviar-email, no /enviarEmail.Verifica las rutas reales con el health check:Siguientes pasos
Pruebas
Aprende a probar funciones multi-tool con
createMockApp().MCP
Configura el servidor MCP unificado para tus agentes IA.
Cron
Schedules independientes por tool dentro de
app().