Add search tools to remaining MCP modules
This commit is contained in:
@@ -81,4 +81,29 @@ export default function registerAsistencias(server) {
|
||||
return { content: [{ type: "text", text: `Asistencia ${id} eliminada` }] };
|
||||
}
|
||||
);
|
||||
|
||||
server.tool(
|
||||
"search-asistencias",
|
||||
"Busca asistencias. `q` matchea id o empleado_id. Si no se envían argumentos se devuelven los primeros 100 registros.",
|
||||
{
|
||||
q: z.string().optional(),
|
||||
empleado_id: z.number().optional(),
|
||||
estado: z.string().optional(),
|
||||
entrada_desde: z.string().optional(),
|
||||
entrada_hasta: z.string().optional(),
|
||||
salida_desde: z.string().optional(),
|
||||
salida_hasta: z.string().optional(),
|
||||
},
|
||||
async (params) => {
|
||||
log("Tool invocada", "search-asistencias", params);
|
||||
const qs = new URLSearchParams(
|
||||
Object.entries(params)
|
||||
.filter(([, v]) => v !== undefined)
|
||||
.map(([k, v]) => [k, String(v)])
|
||||
);
|
||||
if (qs.toString() === "") qs.append("limit", "100");
|
||||
const asistencias = await fetchJSON(`/api/asistencias/search?${qs.toString()}`);
|
||||
return { content: [{ type: "text", text: JSON.stringify(asistencias) }] };
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@@ -76,4 +76,29 @@ export default function registerEmpleados(server) {
|
||||
return { content: [{ type: "text", text: `Empleado ${id} eliminado` }] };
|
||||
}
|
||||
);
|
||||
|
||||
server.tool(
|
||||
"search-empleados",
|
||||
"Busca empleados. `q` matchea id, cédula o nombre. Si no envías argumentos se devuelven los primeros 100 registros.",
|
||||
{
|
||||
q: z.string().optional(),
|
||||
name: z.string().optional(),
|
||||
cedula: z.number().optional(),
|
||||
telefono: z.string().optional(),
|
||||
ubicacion: z.string().optional(),
|
||||
grupo_estudio: z.string().optional(),
|
||||
idciat: z.number().optional(),
|
||||
},
|
||||
async (params) => {
|
||||
log("Tool invocada", "search-empleados", params);
|
||||
const qs = new URLSearchParams(
|
||||
Object.entries(params)
|
||||
.filter(([, v]) => v !== undefined)
|
||||
.map(([k, v]) => [k, String(v)])
|
||||
);
|
||||
if (qs.toString() === "") qs.append("limit", "100");
|
||||
const empleados = await fetchJSON(`/api/empleados/search?${qs.toString()}`);
|
||||
return { content: [{ type: "text", text: JSON.stringify(empleados) }] };
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@@ -83,4 +83,29 @@ export default function registerTareas(server) {
|
||||
return { content: [{ type: "text", text: `Tarea ${id} eliminada` }] };
|
||||
}
|
||||
);
|
||||
|
||||
server.tool(
|
||||
"search-tareas",
|
||||
"Busca tareas. `q` matchea id, empleado_id, planilla_id o título. Si no mandas filtros devuelve los primeros 100 registros.",
|
||||
{
|
||||
q: z.string().optional(),
|
||||
empleado_id: z.number().optional(),
|
||||
planilla_id: z.number().optional(),
|
||||
estado: z.string().optional(),
|
||||
titulo: z.string().optional(),
|
||||
fecha_desde: z.string().optional(),
|
||||
fecha_hasta: z.string().optional(),
|
||||
},
|
||||
async (params) => {
|
||||
log("Tool invocada", "search-tareas", params);
|
||||
const qs = new URLSearchParams(
|
||||
Object.entries(params)
|
||||
.filter(([, v]) => v !== undefined)
|
||||
.map(([k, v]) => [k, String(v)])
|
||||
);
|
||||
if (qs.toString() === "") qs.append("limit", "100");
|
||||
const tareas = await fetchJSON(`/api/tareas/search?${qs.toString()}`);
|
||||
return { content: [{ type: "text", text: JSON.stringify(tareas) }] };
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user