cv-builder
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@cv-builderMatch this job posting and compose a tailored CV for it"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
CV Builder
A self-hosted tool for maintaining a CV as structured content instead of a single hand-formatted document: a browser editor for a data-driven HTML/CSS resume, a SQLite-backed snippet library for assembling role-tailored variants, and an MCP server so an LLM can help do the same thing from a chat client instead of the browser.
Ships with a fully synthetic example person in cv/web/data.yaml and
content/ — replace it with your own before you rely on this for real.
Nothing in this repo is anyone's real personal data.
Layout
cv/web/— HTML/CSS CV source (data.yaml,template.html.j2,style.css,editor.js) and the app UI (cv/web/src/: shared shelldesign tokens in
shell/andtheme.css, one Jinja page + CSS/JS per app-chrome route underpages/)
content/— optional additional detail for the snippet library, as markdown alongsidedata.yaml:work-experience/— one file per employer (category: experience, company taken from the filename)parts/— reusable blocks not tied to an employer, e.g. an alternate bio or a longer "detailed" variant of a strength (category: part)requirements/— pre-written answers to recurring posting requirements, formatch_job_posting/the builder's posting-matcher to surface (category: requirement)See the example files under each for the heading convention: only the last heading before a block of prose becomes a snippet
src/cvbuilder/— snippet library (SQLite), importer, matcher, composer, and the MCP serverscripts/— CLI entry points (see below)data/— SQLite snippet database (snippets.db, gitignored, regenerable) and generated variants live undercv/variants/
Related MCP server: decroche-mcp
Quickstart
pip install -r requirements.txt
# Seed the snippet database from cv/web/data.yaml + content/
PYTHONPATH=src python3 scripts/seed-snippets.py
# Run the editor / builder / variants UI
python3 scripts/serve-editor.py # http://127.0.0.1:5057/cv/web/editRequires google-chrome or chromium on PATH for PDF export
(CHROME_BIN env var to point at a specific binary).
Editing in the browser
scripts/serve-editor.py serves one app, sharing a common nav/header
shell (cv/web/src/shell/) across every page below except /cv/web/edit,
which renders the CV document itself:
/cv/web/— Home dashboard: live snippet/version counts and recent versions./cv/web/edit— click any text to edit it in place; hover controls add/reorder/delete list items (bullets, skills, jobs, subsections, education, custom side panels); Save & Preview renders a real PDF. Adding a skill/bio paragraph/education entry opens a picker fed from the snippet database, with search and duplicate flagging./cv/web/build("Tailor") — paste a job posting to re-rank snippets by keyword match, choose content, assemble an ordered draft, and compose it into a new named variant undercv/variants/<name>/./cv/web/library("Content library") — browse/search/filter every snippet, switch between its brief/standard/detailed variants, and create/edit/delete snippets or re-seed the database from source files./cv/web/variants("Versions") — preview, re-render, or delete composed variant folders./cv/web/assets— browse/upload photos and logos (backed by the/api/images*endpoints) and reference the built-in contact icons./cv/web/connect("Connect AI") — MCP setup instructions and an optional local connectivity check.
Docker
Runs the editor/builder UI and the MCP server in one container, with the repo bind-mounted so edits land on the host:
docker compose up --build
# home: http://127.0.0.1:5057/cv/web/
# editor: http://127.0.0.1:5057/cv/web/edit
# tailor: http://127.0.0.1:5057/cv/web/build
# library: http://127.0.0.1:5057/cv/web/library
# variants: http://127.0.0.1:5057/cv/web/variants
# assets: http://127.0.0.1:5057/cv/web/assets
# connect: http://127.0.0.1:5057/cv/web/connect
# MCP: http://127.0.0.1:8765/mcp (streamable-http)Both ports publish to 127.0.0.1 only. Set ENABLE_MCP=0 in the compose
environment block to run the web UI without the MCP server.
Connecting an LLM (MCP server)
src/cvbuilder/mcp_server.py (run via scripts/mcp-server.py) exposes
the snippet library and composer as MCP
tools: list_snippets, get_snippet, create_snippet, update_snippet,
add_snippet_variant, delete_snippet, delete_snippet_variant,
match_job_posting, compose_cv, list_variants, list_drafts,
get_draft, save_draft, delete_draft, reseed_snippets.
Local subprocess (stdio) — the client spawns the server itself:
claude mcp add cv-builder -- python3 /absolute/path/to/cv-builder/scripts/mcp-server.py{
"mcpServers": {
"cv-builder": {
"command": "python3",
"args": ["/absolute/path/to/cv-builder/scripts/mcp-server.py"]
}
}
}Already-running server (HTTP) — point a client at the Docker
container instead (MCP_TRANSPORT=streamable-http inside the container,
published at http://127.0.0.1:8765/mcp):
claude mcp add --transport http cv-builder http://127.0.0.1:8765/mcp{
"mcpServers": {
"cv-builder": { "url": "http://127.0.0.1:8765/mcp" }
}
}There's no authentication on the MCP endpoint or the web UI — fine for
local personal use, but don't publish either port beyond 127.0.0.1
without adding auth first.
Set SNIPPETS_DB to point either server at a different database file
(defaults to data/snippets.db).
API endpoints (same Flask process as the editor)
GET /api/person— read-onlypersonblock ofdata.yaml(Assets page)GET/POST/PUT/DELETE /api/snippets— list/create/update/delete snippetsDELETE /api/snippets/<id>/variants/<level>— remove one detail levelPOST /api/structure— insert/delete/move/replace items indata.yamlGET /api/history,POST /api/undo,POST /api/redo— editor undo/redoGET/PUT/DELETE /api/drafts[/<name>]— saved builder draftsPOST /api/match— rank snippets against posting textPOST /api/compose— compose a named variant from selected snippet idsGET/DELETE /api/variants[/<name>],POST /api/variants/<name>/renderGET /api/images,POST /api/images/upload,POST /api/images/fetch— list, upload, or download images/icons intoassets/images/POST /api/seed— re-seed the database from YAML + markdown sources
Tests
python3 -m pytestThis server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityAmaintenanceMCP server for browsing and searching your local resume and job application documentsLast updated191GPL 3.0
- AlicenseBqualityBmaintenanceDeterministic MCP server for job-landing pipeline that parses CVs into validated JSON Resume, detects sections, scores parse confidence, and exposes FR/US market profiles to help beat ATS and LLM screeners honestly.Last updated75MIT
- Alicense-qualityCmaintenanceMCP server to score, tailor, and edit resumes on JuicedResume from any MCP client.Last updated26MIT
- Flicense-qualityAmaintenanceA local-first, open-source MCP server that analyzes jobs, matches your CV, tailors documents, and tracks applications — all on your machine with no data uploaded.Last updated
Related MCP Connectors
MCP-native collaborative markdown editor with real-time AI document editing
GetJobzi MCP server for job search, application tracking, and career forecasting.
MCP server for AgentDocs (agentdocs.eu): read, search, write, comment on & share Markdown docs.
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/cognition/cv-builder'
If you have feedback or need assistance with the MCP directory API, please join our Discord server