MCP Server/Documentation

MatchCV MCP Server Docs

The MatchCV MCP server exposes six resume tools over the Model Context Protocol, so an MCP client can check ATS scores, analyze job descriptions, and generate tailored resumes for the user. It is open source (MIT) and needs no API key.

Requirements

  • Node.js 20 or newer
  • An MCP client — Claude Desktop, Claude Code, Cursor, Codex CLI, or any stdio-capable client
  • No API key, no account required to start

Installation

Claude Desktop

Settings → Developer → Edit Config, then add the server and restart Claude.

claude_desktop_config.json
{
  "mcpServers": {
    "matchcv": {
      "command": "npx",
      "args": ["-y", "matchcv-mcp"]
    }
  }
}

Claude Code

terminal
claude mcp add matchcv -- npx -y matchcv-mcp

Cursor

Use ~/.cursor/mcp.json for every project, or .cursor/mcp.json inside one project.

.cursor/mcp.json
{
  "mcpServers": {
    "matchcv": {
      "command": "npx",
      "args": ["-y", "matchcv-mcp"]
    }
  }
}

Codex CLI

~/.codex/config.toml
[mcp_servers.matchcv]
command = "npx"
args = ["-y", "matchcv-mcp"]

Anything else

The server speaks MCP over stdio. Any client that can launch a command will work:

terminal
npx -y matchcv-mcp

Tool reference

ats_check
Input
resumeText
Output
score (0–100), recruiterTake, issues[] with fixes, strengths[], wordCount

Start here when the user just wants to know whether their resume is ATS-safe.

analyze_job_description
Input
jdText
Output
title, company, seniority, industry, mustHave[], niceToHave[], responsibilities[]

Feed mustHave / niceToHave into optimize_resume to close keyword gaps.

optimize_resume
Input
resumeText, jobTitle?, jdText?, missingMustHave?, missingNiceToHave?
Output
suggestions[] with type, priority, section, tip, example rewrite

Works with or without a job description — supplying one makes suggestions role-specific.

roast_resume
Input
resumeText, jobTitle?
Output
url (public report page), token, score, recruiterImpression

Creates a shareable page at an unguessable URL.

extract_resume_text
Input
filePath, structured?
Output
rawText, content (structured JSON when structured: true)

Text-only extraction is unlimited. Scanned or image-only PDFs will fail — paste the text instead.

tailor_resume
Input
resumeText, jdText, templateId?, targetLanguage?
Output
previewUrl, jdAnalysis, content (full tailored resume JSON)

Runs three AI steps and uses the strictest quota. Open previewUrl to download the PDF.

Usage limits

Every AI tool is capped per day, per IP address. Signing in raises the limits; Pro removes them. See pricing.

ToolFreeSigned inPro
ats_check, analyze_job_description, optimize_resume, roast_resume, structured parsing3/day10/dayUnlimited
tailor_resume1/day3/dayUnlimited
extract_resume_text (text only)Unlimited

tailor_resume spends one generation credit plus one parsing and one JD-analysis credit, because it chains all three steps.

Configuration

MATCHCV_BASE_URL overrides the API origin (default https://matchcv.co). It is the only setting, and it exists for local development against a dev deployment.

Privacy

The server holds no credentials and stores nothing on your machine. Resume and job description text is sent to the MatchCV API over HTTPS for processing. roast_resume and tailor_resume save their result behind an unguessable public URL so you can open and share it; the other tools store nothing. Full details in the privacy policy.

Troubleshooting

The client shows the server but no tools

Check that Node.js 20 or newer is on PATH for the client process (not just your shell). Run `npx -y matchcv-mcp` in a terminal — it should print "matchcv-mcp ready" to stderr and then wait.

"You've used your free daily checks today"

Free limits are per IP address and reset daily. Sign in to raise them, or go Pro for unlimited use. The limit is enforced server-side, so retrying will not help.

A PDF fails to extract

The file has no text layer — typical for scans and some Apple Pages exports. Re-export with a real text layer, or paste the resume text directly.

Pointing at a development instance

Set MATCHCV_BASE_URL in the server's env block, e.g. "env": { "MATCHCV_BASE_URL": "http://localhost:3000" }.

Source, issues, and changelog: github.com/18boys/matchcv-mcp. Prefer a browser? The same tools run as free web apps.