MCP server for logistics and shipment management with predictive analytics
Logistics-mcp has 7 tools with basic verb-noun naming (get_*, analyze_*, predict_*, forecast_*). All tools have descriptions in Spanish, but they are generic and lack actionable context for LLM selection. Input schemas are present but minimal: most tools have empty properties (no parameters), and parameter descriptions are missing entirely. No output schemas are documented. Error handling is absent, the code raises ValueError('Tool not found') but provides no recovery guidance. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are present. The server lacks pagination, structured output documentation, and per-parameter constraints. This is a typical community server with functional but incomplete definitions.
Obtiene estadísticas de paquetes retrasados y volumen total.
Predice la carga de trabajo y necesidad de personal para los próximos N días.
Identifica puntos críticos en la cadena de suministro y da recomendaciones.
Analiza qué rutas o ciudades tienen mayores retrasos promedio.
Obtiene detalles de un envío específico por su ID de rastreo.
Muestra la tendencia de carga de los últimos 14 días para predicción de demanda.
Predice si un paquete sufrirá retrasos basándose en el histórico de la ruta.
Five of seven tools have empty input schemas (no properties defined). analyze_logistics_health, get_route_efficiency, get_operational_bottlenecks, and get_volume_trends declare inputSchema={"type":"object","properties":{}} with no parameters. This violates the schema completeness requirement and makes it impossible for LLMs to understand what data these tools accept or require.
No parameter descriptions provided. Tools with parameters (get_shipment_info, predict_delivery_delay, forecast_workload) define 'tracking_id' and 'days_ahead' but omit descriptions in the schema. LLMs cannot infer parameter meaning from names alone, a 'tracking_id' description should explain format, length, and example patterns.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 37 | 2026-07-28+ | v2 |
No output schemas documented. All tools return TextContent with unstructured text (e.g., 'Datos del envío: {data}'). LLMs cannot parse or chain results without knowing the structure of returned fields. Production tools must document return types and field names.
Descriptions are generic and lack actionable context. 'Obtiene detalles de un envío específico por su ID de rastreo' (Gets shipment details by tracking ID) does not explain WHEN to use this tool vs others, what prerequisites exist, or what the LLM should do with the result. Descriptions should be 50 - 200 characters and answer: What? When? Why?
No error handling or recovery guidance. The call_tool handler raises ValueError('Tool not found') but provides no actionable error messages. If a tracking_id is invalid or not found, the LLM receives no guidance on what to do next (retry, search, ask user). Error responses must categorize failures as retryable, user-fixable, or fatal.