Local MCP server exposing project knowledge base tools for autonomous project management, reading, writing, and archiving project knowledge files.
Server has 5 tools with clear verb-noun naming (list_, get_, append_, compact_). All tools have descriptions (194 - 392 chars, within baseline). Input schemas are present with typed parameters. However, output schemas are completely undocumented, no return type specifications visible. Parameter descriptions exist but lack format constraints (e.g., section enum values are stated in prose, not as JSON Schema enums). Error handling is minimal; no recovery guidance or actionable error messages. Tool composition is reasonable (read-only vs. write separation), but append_project_entry and compact_project_section lack idempotency guarantees and confirmation patterns for destructive operations.
Append a one-line entry to a section in an active project. Use this to log work items resolved, PRs merged, key decisions, blockers encountered, or lessons learned. Args: name: The project name (e.g. "Query Migration"). section: One of: "Repos & Work Items", "Key Decisions", "Progress Log", "Blockers & Issues", "Lessons Learned". entry: The entry text. Include a date prefix, e.g. "[2026-02-11] WI#12345: Fixed query timeout (resolved)". Returns a status message including the current file size. If the file is approaching the character cap, a warning will be included — use ``compact_project_section`` to condense older entries.
Replace a section's content with a condensed/summarized version. Use this when a project file is approaching its character cap. Read the project first with ``get_active_project``, write a compact summary of the older entries, then call this tool to replace the section content. Args: name: The project name. section: One of: "Repos & Work Items", "Key Decisions", "Progress Log", "Blockers & Issues", "Lessons Learned". condensed_content: The new, shorter content for the section.
Read the full content of an active project. Use this to review the current state of a project, e.g. before deciding whether to compact older entries.
Load the full content of an archived project by name. Use this when the user asks about a past/completed project or when historical context would help answer a question.
No output schemas documented. Tools return results but LLMs cannot infer response structure, field names, or types. Breaks downstream tool chaining and forces agents to guess at response format.
Section parameter accepts free-form strings instead of enum. Description lists valid values in prose ('Repos & Work Items', 'Key Decisions', etc.) but JSON Schema has no enum constraint. LLMs may hallucinate invalid section names.
Destructive operations (append_project_entry, compact_project_section) lack confirmation or dry-run patterns. No idempotency guarantees. Agents cannot safely retry on ambiguous failures without risking duplicate entries or data loss.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | <=2025-11-25 | v2 |
List all active and archived project names. Use this to discover what projects exist before loading or editing them.
Error handling is absent. No guidance on what to do if a project name is invalid, section is malformed, or file size limit is exceeded. append_project_entry mentions 'character cap' and 'warning' but no error response structure is defined.
Parameter descriptions lack format constraints. 'entry' parameter says 'Include a date prefix, e.g. [2026-02-11]' but no regex pattern or length limit is enforced. LLMs may pass malformed entries.