MCP Server for Elastic Weight Consolidation EWC Skill - implements diagonal Fisher Information Matrix importance scoring for continual learning to prevent catastrophic forgetting
Both tools have minimal descriptions (under 100 chars) and lack parameter-level documentation. Input schemas are present but sparse: 'weights' and 'sample_gradients' have only type and description at the top level, with no constraints, ranges, or validation guidance. No output schema is documented. The tool names lack action verbs (register_task, compute_penalty are weak; should be 'freeze_task_weights' or 'calculate_ewc_penalty'). No error handling, no recovery guidance, no idempotency markers. This is a proof-of-concept implementation, not production-grade.
Compute EWC quadratic penalty and gradient: (lambda/2) * sum_i F_i * (theta_i - theta_A,i)^2
Freeze current task optimal weights and compute its Fisher importance
Tool names lack action verbs. 'register_task' and 'compute_penalty' are weak; should start with clear verbs like 'freeze_', 'calculate_', or 'estimate_'. LLMs infer intent from names, weak names cause misselection.
Parameter descriptions are minimal and lack constraints. 'weights' is described as 'Dictionary of model weights with string keys and float values' but does not specify: range of float values, expected size, whether empty dict is valid, or precision requirements. 'sample_gradients' lacks guidance on minimum/maximum array length or gradient value ranges.
No output schema documented. Callers do not know what fields to expect from responses. 'register_task' returns {status, total_tasks} and 'compute_penalty' returns {ewc_penalty, penalty_gradients}, but these are inferred from code, not declared in tool metadata.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 36 | 2026-07-28+ | v2 |
No error handling or recovery guidance. If 'sample_gradients' is empty, compute_fisher_diagonal returns {}, silently. If 'weights' keys do not match prior task keys, compute_penalty_and_gradient skips mismatches without warning. LLMs receive no actionable error messages.
Tool descriptions are under 100 characters and lack context on WHEN to use each tool or what prerequisites exist. 'Freeze current task optimal weights and compute its Fisher importance' does not explain: when to call this (after task training completes?), what happens to prior tasks, or whether this is idempotent.