About cv
cv serves Francisco Perez-Sorrosal's structured CV data and generated document formats. It is intended for people and clients that need access to the latest CV content, with JSON resources and per-entry lookups alongside downloadable renders.
Key features
- 01Structured CV and semantic YAML data
- 02JSON Schema validation
- 03Generated PDF, HTML, LaTeX, Typst, and Markdown
- 04GitHub Releases publishing workflow
- 05Latest CV data served as JSON resources
- 06Per-entry CV lookups
Use cases
- 01Retrieve current CV data through MCP
- 02Download the CV in a rendered document format
- 03Validate CV data changes before a pull request
MCP support
The MCP server serves the latest release data as JSON resources, including the resume and semantics, and supports per-entry lookups.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMECV Data Repository
The single source of truth for Francisco Perez-Sorrosal's CV content. YAML data, validation schema, and publishing workflow. Rendered artifacts (PDF, HTML, LaTeX, Typst, Markdown) are generated and released via GitHub Releases, never committed here.
What's here
cv-data/resume.yaml— structured CV content (experience, education, skills, publications, patents, etc.)cv-data/resume-semantics.yaml— semantic overlay (topics, relationships, annotations)schemas/— JSON Schema for validation; mirrored fromcv-forge.github/workflows/— CI validation and tag-triggered publishing
Making changes
To propose an edit to the CV data:
- Clone this repo and create a branch:
git switch -c update/your-change - Edit
cv-data/resume.yamlorcv-data/resume-semantics.yaml - Validate locally (see below)
- Push and open a PR against
main
The CI workflow validates automatically; if checks pass, merge and proceed to Publishing.
Validate before you PR
# Install check-jsonschema (standalone CLI)
pip install check-jsonschema
# Validate both files
check-jsonschema --schemafile schemas/resume.schema.json cv-data/resume.yaml
check-jsonschema --schemafile schemas/semantics.schema.json cv-data/resume-semantics.yaml
All green? Ready to PR.
Publishing a release
A release is triggered by pushing a CalVer tag in the form YYYY.MM.DD (with optional .N for same-day re-releases, e.g. 2026.09.13.1).
git tag 2026.09.13
git push origin 2026.09.13
The workflow automatically:
- Renders the CV in all formats (PDF, LaTeX, Typst, Markdown, HTML)
- Publishes eight assets to the GitHub Release
- Deploys the HTML to the live CV site
- Creates a
release.jsonmanifest (consumed by the MCP server)
All assets are stable, version-free URLs under releases/latest/download/<name>.
Republish an Existing Release
To re-run the publish workflow without creating a new tag (useful when templates or rendering logic changes):
gh workflow run publish.yml -f tag=2026.09.14
Or via the GitHub Actions UI:
- Open Actions → Publish CV
- Click "Run workflow"
- Enter the tag in the
taginput - Click "Run workflow"
This regenerates all eight release assets and redeploys the site, keeping the same version number. Assets at releases/latest/download/ are updated in place (overwritten).
Schema Updates
The JSON schemas in schemas/ are mirrored from cv-forge. When cv-forge releases a new version that changes the data models (via export-schemas), update the schemas in this repo:
-
After cv-forge merges a PR that changes
src/cv_forge/models/, refresh the mirrored copies:curl -s https://raw.githubusercontent.com/francisco-perez-sorrosal/cv-forge/v1/schemas/resume.schema.json > schemas/resume.schema.json curl -s https://raw.githubusercontent.com/francisco-perez-sorrosal/cv-forge/v1/schemas/semantics.schema.json > schemas/semantics.schema.json git add schemas/ git commit -m "chore: sync schemas from cv-forge v1" git push -
The CI drift-check (
.github/workflows/validate.yml) compares the local schemas against the remotecv-forge v1copies. If they diverge, the check fails and blocks PRs until the sync above completes. A push that lands seconds beforecv-forgere-points itsv1tag can fail the drift check with a 404 on the upstream fetch; re-run the failedValidate CV Datajob once the tag exists.
Consuming the CV
As data
- YAML sources:
resume.yamlandresume-semantics.yaml, published as release assets (see the URL pattern below) - JSON: the MCP server exposes the same data as JSON resources (
fps-cv://resume,fps-cv://semantics) and per-entry lookups
As documents
- PDF:
FranciscoPerezSorrosal_CV.pdf - HTML (interactive):
FranciscoPerezSorrosal_CV.html, also served at the live CV site - LaTeX (moderncv):
FranciscoPerezSorrosal_CV.tex - Typst (moderner-cv):
FranciscoPerezSorrosal_CV.typ - Markdown:
FranciscoPerezSorrosal_CV.md
All at https://github.com/francisco-perez-sorrosal/cv/releases/latest/download/<filename>.
Via MCP
The cv Claude Code plugin connects to an MCP server that serves the CV:
MCP Server: https://fps-cv-mcp.wasmer.app/mcp
The server fetches the latest release data automatically; no deploy required when you publish.
Data conventions
See CLAUDE.md for entry ID scheme, cross-reference rules, date format, and validation commands.
Editing with the plugin
The cv-forge maintainer plugin provides an interactive edit flow:
- Launch from Claude Code: "Update my CV" or "Add this job"
- Edit the YAML directly in the conversation
- Validate automatically against the schema
- Preview the rendered output
- Diff and confirm before opening a PR
No manual YAML editing or command-line work required. The plugin uses your gh auth for the PR.
Related repositories
cv-forge— machinery that renders, serves, and publishes this data. Contains the CLI, MCP server, and the two Claude Code plugins (cvconsumer,cv-forgemaintainer).
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.