Forge powerful, ATS-friendly CVs tailored to any job - an MCP server for intelligent CV generation
cv-forge presents moderate definition quality with inconsistent documentation across tools. All 11 tools have basic descriptions (10-200 chars) and structured input schemas using Zod, but quality varies significantly. Tool naming follows verb_noun convention well (parse_, generate_, save_). However, many input parameters lack meaningful descriptions, generic 'User profile schema' and 'Job requirements schema' object types provide no actionable guidance for LLMs. Critical issues: (1) Object-type parameters (userProfile, jobRequirements) lack detailed field documentation, forcing LLMs to guess at required fields; (2) No output schemas documented, tools return JSON text without declaring field structure; (3) Error handling is minimal, generic catch blocks return error strings without recovery guidance; (4) Parameter descriptions in several tools are trivial (e.g., 'Directory path where the CV should be saved' appears 7 times verbatim). The server demonstrates working implementation but lacks LLM-optimized clarity needed for reliable agent composition.
Generate tailored CV and save specifically as PDF format (legacy tool - consider using 'generate_cv' which defaults to PDF). If outputPath is not provided, uses DEFAULT_OUTPUT_PATH from environment.
Generate a tailored cover letter based on user profile and job requirements
Generate tailored CV content based on user profile and job requirements (returns structured data)
Generate and save CV as an HTML document
Generate and save CV as a Markdown document
Generate and save CV as a professional PDF document
Generate an email template for job application communication
Object-type parameters lack field-level documentation. 'userProfile' and 'jobRequirements' imported from Zod schemas but not expanded inline with field descriptions. LLMs cannot infer required fields, data types, or valid values.
No output schemas documented. Tools return JSON strings without declaring structure. LLMs cannot plan downstream field access or validate response shape. E.g., parse_job_requirements returns text; unclear if it contains 'requirements', 'skills', 'keywords', etc.
Generic error handling. All tools use identical catch-all pattern: return error message as text. No error classification (retryable vs fatal), no recovery guidance, no invalid-value feedback. LLMs cannot self-correct or plan recovery.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Parse job requirements and extract key information for CV tailoring
Save cover letter as an HTML file
Save cover letter as a text file
Save CV content as a text file to specified location
Repetitive parameter descriptions. 'Directory path where the CV should be saved' appears identically 7 times across save_cv_text, generate_cv_pdf, etc. No context-specific guidance (e.g., why might outputPath differ between CV and cover letter?).
Overlapping tools with unclear distinctions. 'generate_and_save_cv_pdf' (legacy), 'generate_cv_pdf', and 'generate_cv_data' suggest multi-step workflow, but descriptions don't clarify: Should I call generate_cv_data first? Does generate_cv_pdf require pre-generated cvData? Ambiguity forces LLM guessing.
Parameter 'margins' (object) lacks nested field documentation. No guidance on format (e.g., '10mm' vs '0.8in' vs '10') or whether all four sides are required. Field descriptions exist but are minimal.
Enum 'templateType' in generate_email_template lacks description text explaining use case differences. LLM must infer 'application' vs 'follow_up' vs 'inquiry' vs 'thank_you' from names alone.