resume-coverletter-mcp
Resume and Cover Letter Generator
Reproducible, evidence-based CV and cover-letter builds from private local career inputs. The repository includes a command-line builder and an MCP server for drafting, validating and reviewing applications.
Setup
Install uv, then create local inputs from the fictional examples:
mkdir -p profile applications/baseline
cp -n stubs/career.yaml profile/career.yaml
cp -n stubs/application.yaml applications/baseline/application.yamlReplace the fictional evidence before building an application:
uv run cv-mcp build baseline
# or
just build
just checkThe first build downloads Python and Typst dependencies. The included Typst binding supplies the compiler; no separate Typst or LaTeX installation is required. Outputs are written to build/<slug>/<timestamp>_<version>/ with PDFs, previews, extracted text, an input snapshot and a report.
Configure an application
Copy
applications/baseline/to a lowercase slug containing only letters, numbers and hyphens, for examplecompany-role.Add the vacancy URL and any tracking ID to
application.yaml.Select evidence with
achievement_idsandproject_ids, and add truthful tailored wording underoverrides.Complete the cover letter, then set
letter.is_sampletofalse.Build and review both the extracted text and every PDF page.
Dates use British English. Set letter.date to a quoted ISO date such as "2026-09-05", or leave it empty to use the current date in Europe/London. Use folded YAML blocks (>-) for long paragraphs, and quote dates and phone numbers.
Environment variables
Local defaults are suitable for the checked-out layout. Override them with a .env file or the shell when needed:
Variable | Purpose |
| Project root. |
| Career profile YAML path. |
| Applications directory. |
| Build output directory. |
| Optional directory containing the Suisse fonts. |
| Build timeout; defaults to |
| Log level; defaults to |
| Required when serving signed artifact download links. Keep the secret private. |
For Compose, CV_MCP_DATA_DIR selects the mounted private data directory. The tunnel container uses these variables:
Variable | Purpose |
| OpenAI organization identifier. |
| Tunnel identifier. |
| Tunnel runtime key; keep it private. |
| Internal MCP endpoint: |
| Optional replacement for the default tunnel-client image. |
See the official OpenAI Secure MCP Tunnel documentation for tunnel setup and configuration details.
Example workflow
A typical workflow is to track roles, stages and next actions in Notion, keep verified career evidence and application drafts in this repository, use the MCP server to tailor and build documents, then review the generated PDFs before saving an approved release. Notion or another tracker can link to the resulting files; the repository remains the source for document inputs and builds.
The public repository contains only code, templates, tests, lockfiles and fictional stubs. Personal files under profile/ and applications/, generated build/ output, and research material are ignored. Keep private career data and submitted releases in a separate private deployment or storage location.
Typography uses Suisse Works and Suisse Intl Mono; install both locally for the intended rendering. The public baseline is a fictional layout sample.
Licensed under the MIT License.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/pwislowski/resume-coverletter-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server