A Python-based MCP server implementation using FastMCP and FastAPI, providing tools for managing projects, documents, memory entries, and tags with a web UI and database backend.
Server has 17 tools with consistent naming (verb_noun pattern) and complete input schemas. However, descriptions are generic and lack LLM-optimization guidance. Parameter descriptions are minimal (often just restating the name). No output schemas documented. Error handling is absent from tool definitions. Security considerations (permission gates, audit trails) are not visible. Tool composition is reasonable but lacks idempotency guarantees and confirmation patterns for destructive operations.
Adds a new document to a project with specified name, path, content, type, and version.
Adds a new version of a document with updated content.
Creates a new memory entry in a project with specified type, title, and content.
Adds a tag to a document, creating the tag if it does not exist.
Adds a tag to a memory entry, creating the tag if it does not exist.
Creates a new project in the database with the specified name, path, description, and active status.
Deletes a document from the database by its ID.
Destructive operations (delete_project, delete_document, delete_memory_entry) lack confirmation or dry-run patterns. No guidance for LLM on recovery or undo steps.
Tool descriptions are generic and do not explain WHEN to use each tool or what distinguishes it from similar tools. E.g., 'Updates an existing project' does not explain when to call update_project vs set_active_project.
No output schemas documented. LLMs cannot infer what fields are returned or plan downstream tool calls. E.g., does create_project return project_id, name, path, created_at?
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | <=2025-11-25 | v2 |
Deletes a memory entry from the database by its ID.
Deletes a project from the database by its ID.
Retrieves the content of a specific version of a document.
Retrieves a memory entry by its ID.
Removes a tag from a document.
Removes a tag from a memory entry.
Sets a project as active, deactivating all other projects.
Updates an existing document's name, path, content, type, or version.
Updates an existing memory entry's type, title, or content.
Updates an existing project's name, description, path, or active status.
Parameter descriptions are minimal and often just restate the parameter name. E.g., 'The ID of the project to update' does not explain format, range, or how to obtain it.
No error handling guidance visible in tool definitions. LLMs have no recovery path if a project_id is invalid, a document already exists, or a tag operation fails.