Resume-Tailor MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| RESUME_STORE_PATH | No | Where the master CV JSON lives. Exports go to exports/ next to it. | ~/.resume-mcp/master.json |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| save_master_resumeA | Store or update the user's base CV so it persists between sessions. Provide the CV as structured JSON. Recommended keys: contact - {name, email, phone, location, links} summary - short professional summary (string) experience - list of {title, company, location, start, end, bullets[]} projects - list of {name, description, tech[], link} skills - list of strings (or {category, items[]}) education - list of {degree, school, location, start, end, details} This is step 1 of the flow: set it up once, reuse it for every job. Returns a confirmation with the stored path. |
| load_master_resumeA | Return the stored master CV so Claude can tailor it to a job. This is the starting point of every tailoring session. If no resume is stored yet, raises a clear error telling the user to save one first. |
| fetch_job_postingA | Get a job posting as clean readable text. Pass a Returns {source, text, char_count}. |
| extract_keywordsA | Pull the skills/tools/keywords an ATS would scan for from a job posting. Deterministic (no ML): tokenizes the text, filters filler words, recognizes known skills and multi-word phrases (e.g. "REST APIs"), and ranks by frequency — boosting terms that appear in skills/requirements sections. Returns {keywords: [ranked strings], detail: [{keyword, score, known_skill}]}. Use the ranked keyword list as input to ats_gap_check. |
| ats_gap_checkA | Compare a CV against job keywords → match score (%) + missing terms. This is the tool's killer feature: it tells the user concretely what to add. Pass the resume as plain text and the ranked keyword list from extract_keywords. Returns which keywords are present, which are missing, and a match percentage — so Claude knows exactly what to surface in the rewrite. Returns {match_score, matched, missing, total_keywords}. |
| export_resumeA | Render finished CV content to a clean, ATS-safe PDF or DOCX file. Pass Returns {path, format, blocks} with the saved file path. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 6 tools
Each tool has a distinct, non-overlapping purpose: fetching job posts, extracting keywords, analyzing gaps, managing the master resume, and exporting. An agent can clearly distinguish them.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., fetch_job_posting, extract_keywords), making them predictable and easy to understand.
With 6 tools, the scope is well-balanced: each tool serves a necessary step in the resume tailoring workflow without redundancy or excessive complexity.
The set covers the core pipeline from job posting to export, but lacks a dedicated tool to save tailored resume versions separately from the master. This minor gap is manageable for agents.