An MCP server that assembles persistent engineering context for AI coding assistants by storing and recalling memories, skills, decisions, and workspace state.
ContextOS defines 4 tools with clear verb-noun naming (context, recall, remember, remember_skill) and complete input schemas with type definitions and descriptions. All tools have descriptions (10-200 chars). However, output schemas are not documented, tools return JSON strings without declaring the structure. Parameter descriptions are present but minimal (avg 40 chars). Error handling is basic: tools catch exceptions and wrap them in InvalidOperationException with generic guidance ('Check the server logs'). No enum constraints on string parameters (e.g., scope accepts 'current'|'week'|'all' but is declared as free-form string). No tool annotations (readOnlyHint, destructiveHint). The 'remember' tool is incomplete in the source snippet, preventing full assessment.
Assemble the current engineering context for this workspace.
Search stored memories by semantic and keyword similarity. Use scope='global' to search across all workspaces.
Store a memory for later recall.
Store a reusable skill (a named procedure with steps and a success outcome).
Output schemas not documented. Tools return JSON strings (e.g., recall returns array of objects with id, type, content, tags, created_at, score, workspace) but the response structure is not declared in tool metadata. LLMs cannot plan downstream calls or extract fields reliably.
String parameters lack enum constraints. 'scope' in context and recall accepts 'current'|'week'|'all' or 'current'|'global' but is typed as free-form string. LLMs may hallucinate invalid values like 'monthly' or 'workspace'. Use JSON Schema enum to restrict choices.
Error messages are generic and non-actionable. 'Failed to build context. Check the server logs for details.' does not tell the LLM what went wrong or how to recover. Include the actual error reason and suggest next steps (e.g., 'Invalid scope: must be current|week|all').
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | <=2025-11-25 | v2 |
No tool annotations. Tools lack readOnlyHint (context, recall are read-only) and destructiveHint (remember, remember_skill modify state). Annotations help agents reason about side effects and retry safety.
Parameter 'types' in recall is an array of strings with no enum constraint. LLMs may pass invalid memory types. Declare allowed types (note, decision, gotcha, todo, skill) as enum or constrain in description.