A Model Context Protocol server providing tools for literature fetching, markdown processing, PDF generation, and git repository analysis
The server has 4 tools with explicit schemas and descriptions. All tools are registered with proper JSON Schema definitions using mark3labs/mcp-go framework. However, there are several quality gaps: (1) Tool naming lacks action verbs, 'literature-fetch' should be 'get_literature' or 'fetch_literature'; 'markdown' and 'markdown_to_pdf' are generic; 'git-summary' lacks context about aggregation. (2) Descriptions are present but lean, most are 60-150 chars, below the 194-char baseline for production tools. (3) Several parameters lack descriptions: markdown tool has only 1 described parameter (content); git-summary is missing descriptions for 'start_date' and 'end_date' format expectations. (4) No output schemas documented in source, unclear what fields these tools return to downstream callers. (5) No error handling patterns visible, tools lack recovery guidance. (6) Prompts feature enabled but no prompts defined in provided source. (7) Security: git-summary accepts optional 'api_key' parameter (line in go.mod references go-openai), violating secret-injection pattern, keys should never be exposed as parameters.
Summarizes git commit messages within a date range using OpenAI
Fetches scientific literature information using PubMed or DOI IDs via the dictyBase literature API
Converts markdown to HTML with support for GFM, syntax highlighting, and more
Converts markdown content to a PDF document and saves it to a file.
Tool naming lacks action verbs. 'markdown', 'markdown_to_pdf', and 'git-summary' are noun-based or weak verbs. Per pattern:tool, LLMs rely on tool names to infer intent before reading descriptions.
CRITICAL SECURITY: git-summary accepts 'api_key' as an optional parameter. Credentials must never be exposed as tool parameters, they enter logs, traces, and LLM context. Per pattern:secret-injection, API keys must be injected server-side via environment or vault.
No output schemas documented in source code. Callers and downstream tools cannot know what fields to expect. Per pattern:tool, responses must be documented so LLMs can chain tool calls and extract required data.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 56 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 40 | - | v1 |
Parameter descriptions lack format/constraint details. 'start_date' and 'end_date' in git-summary lack format (ISO 8601? natural language?). 'filename' in markdown_to_pdf has no path constraints (traversal risk?). Per pattern:constrained-input, descriptions must state expected format and allowed ranges.
No error handling guidance. Tools lack recovery hints or error categorization. Per pattern:recovery-guide, errors should tell LLMs what to do next (retry, ask user, escalate).
markdown_to_pdf lacks confirmation/dry-run. Destructive tool (writes to filesystem) should support dry-run or explicit confirmation per pattern:confirmation-request to prevent accidental file overwrites.