MCP server for Joplin knowledge management with LLM integration, providing tools for querying, capturing, archiving, and syncing knowledge workflows
Server has 10 tools with basic schemas and descriptions, but significant quality gaps. Tool names lack clear verb-noun structure (e.g., 'joplin_query' is vague; 'search_knowledge' or 'query_knowledge' would be clearer). Descriptions are present but generic (avg ~80 chars, below 194-char baseline). Parameter descriptions exist but lack specificity on constraints, formats, and valid values. No output schemas documented. Error handling is minimal, responses use generic error codes without recovery guidance. No tool annotations (readOnlyHint/destructiveHint) despite clear read/write distinction. STDIO transport caps score at 50; additional definition gaps prevent higher scoring.
Archive project content to a specified project directory
Brainstorm ideas on a topic with optional context and source scope
Compile wiki pages from raw sources using local Ollama or agent mode
Confirm and write a pending capture to brainstorming or artifacts
Query knowledge from wiki and raw sources with optional capture staging
Display a pending capture by ID
Suggest project names for archiving content based on title, content, and context
Tool names lack clear action verbs. 'joplin_query' is ambiguous (query what? how?). Rename to 'search_knowledge', 'query_knowledge_base', or 'ask_wiki' to signal intent. 'joplin_suggest_archive_project' is compound (suggest + archive), split into 'suggest_archive_project' and 'archive_to_project'.
No output schemas documented. Tools return unstructured responses (e.g., 'answer', 'sources', 'capture_draft_id'). LLMs cannot plan downstream calls without knowing field types and structure. Add explicit outputSchema to all tools in TOOL_SCHEMAS.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | 2025-06-18+ | v2 |
Sync Joplin SQLite sources to raw markdown files with optional export-only mode
Pull brainstorming and artifacts notes from Joplin back to workspace files
Push workspace brainstorming and artifacts files back to Joplin notes
Parameter descriptions lack constraints and formats. 'source_scope' accepts 'knowledge, wiki, or raw' but is not declared as an enum. 'mode' in joplin_sync_sources accepts 'normal, export_only, snapshot_only', should be enum with description of each mode's behavior. No min/max for numeric params, no regex patterns for strings.
No tool annotations (readOnlyHint/destructiveHint/idempotentHint). Tools clearly split into read (joplin_query, joplin_show_capture, joplin_brainstorm, joplin_suggest_archive_project) and write (joplin_confirm_capture, joplin_archive_project, joplin_sync_sources, joplin_compile_wiki, joplin_sync_workflow_notes, joplin_writeback_workflow_notes). Annotations enable agents to reason about safety and retry logic.
Error handling is generic. safeCall() catches all errors and returns {ok: false, error: {code, message}}. No recovery guidance (e.g., 'Try search_knowledge() first' or 'Check config_path exists'). Error codes like 'TOOL_FAILED' and 'ARCHIVE_CONTENT_REQUIRED' are inconsistent. No classification of retryable vs. fatal errors.