A local MCP server with tools for PDF extraction, data profiling, time series forecasting, report generation, and LLM chat. Supports both STDIO and HTTP transports.
This server has significant definition quality gaps across all dimensions. Tool names are action-verb compliant, but descriptions are inconsistent, some are too brief (6-15 chars), parameter descriptions are largely absent, and output schemas are not documented. The server mixes notes management, PDF extraction, data profiling, time series forecasting, report generation, and LLM chat in a single monolithic tool set with no clear composition or single responsibility principle. Most tools lack comprehensive input validation error handling guidance.
Perfilado de CSV/Excel/Parquet: describe, nulos, tipos, datetime y vista previa.
Envía un prompt al modelo Llama (Ollama) y devuelve texto.
Agrega una nota de texto (tags opcional, coma separada).
Borra todas las notas.
Elimina una nota por id.
Exporta todas las notas a Markdown.
Lista notas; filtra por q (texto) o tag.
Parameter descriptions are missing or incomplete across all tools. Most parameters lack explanations of their purpose, valid values, format constraints, or examples. E.g., pdf_extract 'pages' array has no description; data_profile 'sep' for CSV has minimal context; ts_forecast 'freq' lacks documentation of valid frequency strings.
Output schemas are not documented for any tool. LLMs cannot plan downstream calls or extract structured results without knowing the shape of responses. E.g., notes_list returns rows but no documentation of the structure; data_profile returns statistics but schema is opaque; ts_forecast returns predictions but fields are undocumented.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 44 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 35 | - | v1 |
Devuelve conteos y tags más comunes.
Extrae texto y tablas de un PDF local
Genera reportes HTML o PDF con secciones markdown, tablas y gráficos
Pronóstico de series temporales usando statsmodels
Tool descriptions are too brief or generic. 'notes_clear' is only 27 chars ('Borra todas las notas.'), 'notes_stats' is 39 chars, 'pdf_extract' is 35 chars. Baselines show 194 avg chars and min 50 for quality. These lack guidance on WHEN to use the tool, WHAT it returns, and any prerequisites or side effects.
No error handling guidance. Tools provide raw exceptions (e.g., 'Error: text vacío') without recovery instructions. Errors should state: 'User not found. Try search_users() first' or 'Invalid CSV encoding, specify encoding parameter (utf-8, latin-1, cp1252)'. Current errors give LLMs no actionable next steps.
No idempotency semantics. notes_add, report_generate, and llm_chat lack idempotency hints. If an LLM retries notes_add with the same text, it creates a duplicate. Destructive tools (notes_delete, notes_clear) should require confirmation. No dry-run or confirmation_request pattern implemented.
Composition violation: tools perform multiple unrelated responsibilities. Server combines notes management (6 tools), PDF extraction (1), data profiling (1), forecasting (1), reporting (1), and LLM chat (1), 11 distinct domains. This violates single-responsibility principle. An LLM must reason through unrelated tool sets, increasing confusion and wrong selections. Should be split into separate servers or at least grouped by domain (notes_* vs data_*).
Parameter constraints are absent or undocumented. data_profile 'limit_rows' lacks min/max bounds (unbounded integer lets LLM pass absurd values). ts_forecast 'horizon' and 'frequency' have no constraints. pdf_extract 'pages' array has no length limit or format guidance. llm_chat 'temperature' and 'max_tokens' have JSON Schema constraints but descriptions do not explain their effect or typical ranges.
File path parameters (pdf_extract 'path', data_profile 'path', ts_forecast 'path') accept arbitrary strings with no validation guidance or path traversal protection. Descriptions say 'local' but do not clarify: relative vs absolute paths, allowed directories, or whether symlinks are followed. LLMs could be tricked into accessing /etc/passwd or other sensitive files.
No pagination or result limits documented. notes_list could return hundreds of notes with no offset/limit parameters visible. data_profile returns 'preview' but no schema or row count limit stated. ts_forecast could return massive arrays without explicit caps. Unbounded results waste context tokens and risk LLM reasoning degradation.
llm_chat tool calls Ollama (local Llama model), no timeout, retry logic, or fallback documented. If Ollama is down, tool hangs indefinitely, blocking the entire agent plan. Description says 'Envía un prompt' but lacks prerequisites (Ollama running), timeout behavior, or error recovery.