A Model Context Protocol (MCP) server providing multiple specialized services: journal/diary management with mood assessment, analytics with data visualization, and scheduler with reminders and automation
This server exhibits significant gaps in definition quality across multiple dimensions. While all 16 tools have names and descriptions, the schemas are largely absent or incomplete in the source code provided. The template tools (echo, calculate, long_task, fetch_data) have minimal parameter documentation visible. The analytics, journal, and scheduler tools have better structured docstrings but many lack explicit parameter type definitions and constraints in the schema. Several tools are still in TODO/stub form (trends, weekly_report, charts, export_csv). Error handling is undocumented. The server does follow a consistent naming pattern (verb_noun) and makes efforts to provide context-specific descriptions, but lacks the rigor needed for production-grade LLM tool consumption. Per-tool analysis shows an average of ~42/100 across the 16 tools.
Добавить новое правило напоминания с cron расписанием и текстом промпта. Например: '0 9 * * *' для ежедневного напоминания в 9:00.
Perform a basic arithmetic operation on two numbers. Supported operations: add, subtract, multiply, divide.
Создать графики по выбранным метрикам за период. Возвращает пути к изображениям или данные для построения графиков.
Создать новую запись в дневнике с текстом, настроением и тегами.
Echo back the provided message (useful for connectivity checks).
Выгрузить данные в CSV формате за указанный период.
Извлечь оценку настроения из текста: valence (валентность), anxiety (тревожность), energy (энергия) и другие метрики.
Multiple tools are stub implementations with no actual functionality (trends, weekly_report, charts, export_csv contain only 'pass' or TODO comments). Schemas are incomplete or inferred from docstrings rather than explicit registration.
Input parameter schemas lack explicit enum constraints and min/max bounds. E.g., 'operation' in calculate accepts 'add|subtract|multiply|divide' but this is only documented in text, not enforced via schema enums. 'window' in trends should be constrained to 'day|week|month'.
Output schemas are not documented. Tools like 'trends', 'weekly_report', 'charts' have no documented return structure. LLMs cannot plan downstream calls or know what fields to extract without documented output schemas.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 50 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 45 | - | v1 |
Fetch text data from the given URL and return the response body.
Получить последние сообщения из дневника и метаданные для контекста разговора.
Получить список всех активных правил напоминаний.
Run a long-running operation and report progress to the client.
Удалить правило напоминания по его ID.
Сохранить оценку настроения в базу данных для записи.
Получить динамику показателя (valence, anxiety, energy) за указанный период (day, week, month).
Запустить правило немедленно (полезно для тестирования). Не влияет на обычное расписание.
Сгенерировать краткий отчёт по всем метрикам за последнюю неделю.
Error handling is completely absent. No tool documents what errors it may return, when they are retryable, or what the LLM should do in response. No guidance for user-correctable vs. fatal errors.
Parameters that should have explicit constraints lack them. E.g., 'limit' in get_context has no min/max (default 10, but no bounds documented). 'cron' in add_rule has no validation example or regex pattern. 'from_date' and 'to_date' in charts/export_csv lack ISO 8601 format validation hints.
Destructive and write operations lack confirmation or dry-run patterns. 'remove_rule' (DESTRUCTIVE), 'save_assessment' (WRITE), 'create_entry' (WRITE) have no indication of permanent side effects or mechanism for preview/confirmation.
Tool registration in the code uses add_tool() with positional arguments and defaults omitted. While functional, the schema is not explicitly passed as a structured JSON Schema object, it appears to be inferred from function signatures. This reduces clarity and makes schemas unmachine-readable.
Pagination is not implemented. Tools like 'list_rules', 'get_context', 'charts' that return lists have no limit/offset or cursor parameters documented, risking context window exhaustion with large result sets.
Parameter descriptions are minimal for several tools. E.g., 'description' in add_rule says '(опционально)' with no explanation of what it's for. 'metrics' array in charts has no guidance on valid metric names or whether the order matters.