{
  "markdown": "# @formacv/mcp — Official Model Context Protocol server for FormaCV\n\nDrive AI-powered CV formatting, anonymization, AI tailoring, and ATS push-back from Claude Desktop, Cursor, and your own AI agents — using the [Model Context Protocol](https://modelcontextprotocol.io/).\n\n[![npm version](https://img.shields.io/npm/v/@formacv/mcp.svg)](https://www.npmjs.com/package/@formacv/mcp)\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n\n[![FormaCV](https://img.shields.io/badge/built%20by-FormaCV-blue)](https://formacv.ai)\n\n## What this is\n\nFormaCV gives staffing teams **AI CV formatting** and polished **resume formatting** without bouncing files through manual Word cleanup. Agencies connect their ATS, upload unlimited **branded CV** templates, and deliver client-ready collateral in roughly a minute. The **`@formacv/mcp` MCP server** extends that workflow to whichever **AI agent** stack you prefer: recruiters can orchestrate tailor → anonymize → push-back sequences straight from conversational tools rather than juggling separate tabs.\n\n**Model Context Protocol** (often shortened to **MCP**) is Anthropic-backed plumbing that lets assistants discover tools reliably. Installing this **MCP server** means Claude, Cursor Copilots, or bespoke automation can call eight well-documented primitives — `format_cv`, `tailor_cv`, `anonymize_cv`, `push_to_ats`, plus batching, introspection helpers, and asynchronous job polling — with JSON contracts identical to FormaCV’s HTTPS API.\n\nThe same package powers **recruitment automation** for global teams running **Bullhorn**, **JobAdder**, or **Vincere**: read a candidate attachment, harmonise layout, optionally run **GDPR-compliant** workflows (like **CV anonymization** before a client **blind submission**), then stream the artefact back to the candidate record automatically. Keywords your compliance team cares about map to product reality: deterministic audit logs on anonymization flows, configurable retention, AES-256 at rest / TLS in motion, isolated infrastructure per tenant, optional on-premises deployment — all surfaced on **[FormaCV Security](https://formacv.ai/security)**.\n\n## Quickstart (try without an API key)\n\n1. Ensure Node.js 18+ is available (the MCP transport launches via `npx`).\n2. Export demo-friendly defaults before starting your AI assistant:\n\n```\nexport FORMACV_API_KEY=demo\nexport FORMACV_SERVER_URL=https://demo.formacv.ai\n```\n\nNo sales call is required for this step — the MCP server answers with deterministic sample payloads that mirror production JSON envelopes. Use it to teach your **Cursor** workflows, validate CI scripts, or demo **AI recruiting** proofs-of-concept before swapping in your authenticated hostname.\n\nDetailed behaviour (sentinel URLs, subdomain rules, caveats) lives in **[`docs/demo-mode.md`](docs/demo-mode.md)**.\n\n## Install\n\n**Ad-hoc invocation (recommended for MCP hosts):**\n\n```\nnpx -y @formacv/mcp\n```\n\n**Project-local dependency:**\n\n```\nnpm install @formacv/mcp\npnpm add @formacv/mcp\n```\n\nBins resolve to the same STDIO executable your AI client shells out to. Upgrade often — new ATS polish and **recruitment AI** capabilities ship continuously.\n\n### Environment variables recap\n\n| Variable | Purpose |\n|---|---|\n| `FORMACV_SERVER_URL` | HTTPS origin for your isolated FormaCV deployment (omit or set demo URL while testing — see **[`docs/demo-mode.md`](docs/demo-mode.md)**). |\n| `FORMACV_API_KEY` | Bearer credential issued after onboarding (`demo` placeholder accepted only against demo URLs). |\n\n## Configure your AI client\n\nPick the snippet that matches how your team ships copilots. Each JSON file lives under [`examples/`](examples/).\n\n### Claude Desktop\n\nMerge [`examples/claude-desktop-config.json`](examples/claude-desktop-config.json):\n\n```json\n{\n  \"mcpServers\": {\n    \"formacv\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@formacv/mcp\"],\n      \"env\": {\n        \"FORMACV_API_KEY\": \"demo\",\n        \"FORMACV_SERVER_URL\": \"https://demo.formacv.ai\"\n      }\n    }\n  }\n}\n```\n\n### Cursor\n\n[`examples/cursor-mcp.json`](examples/cursor-mcp.json):\n\n```json\n{\n  \"mcpServers\": {\n    \"formacv\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@formacv/mcp\"],\n      \"env\": {\n        \"FORMACV_API_KEY\": \"demo\",\n        \"FORMACV_SERVER_URL\": \"https://demo.formacv.ai\"\n      }\n    }\n  }\n}\n```\n\nCursor reads MCP definitions from `~/.cursor/mcp.json` **or** a committed `.cursor/mcp.json`.\n\n### VS Code (Copilot Chat with MCP)\n\n[`examples/vscode-copilot-mcp.json`](examples/vscode-copilot-mcp.json):\n\n```json\n{\n  \"servers\": {\n    \"formacv\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@formacv/mcp\"],\n      \"env\": {\n        \"FORMACV_API_KEY\": \"demo\",\n        \"FORMACV_SERVER_URL\": \"https://demo.formacv.ai\"\n      }\n    }\n  }\n}\n```\n\nHost-specific placement notes plus rotation guidance are summarized in **[`examples/README.md`](examples/README.md)**.\n\n## Available tools\n\n| Tool | What it does |\n|---|---|\n| `format_cv` | Format a candidate CV into your agency-branded template |\n| `tailor_cv` | AI-tailor a CV against a vacancy (bold matches, translate, demote irrelevant sections) |\n| `anonymize_cv` | Strip name/photo/contact details for blind submissions, with full audit log |\n| `push_to_ats` | Write the formatted CV back to Bullhorn, JobAdder, or Vincere candidate record |\n| `bulk_format` | Batch-format multiple CVs in one call |\n| `list_templates` | List agency templates (per-client, per-branch, per-user, compliance) |\n| `list_integrations` | List your connected ATS integrations |\n| `get_job_status` | Poll the status of an async job |\n\nFull field-level schemas plus worked JSON examples reside in **[`docs/tools.md`](docs/tools.md)** — study that reference before prompting your assistants.\n\nNeed the HTTP equivalents (for swapping in a staging stack)? Mirror the routes in **[`docs/api-contract.md`](docs/api-contract.md)**.\n\n### Why eight tools beats one mega-endpoint\n\n- **Composable automation:** your **AI agent** can introspect integrations before pushing.\n- **Async transparency:** bulky PDF renders never block MCP threads — poll `get_job_status`.\n- **Guardrails:** `list_templates` prevents hallucinated IDs when recruiters choose layouts.\n\n### Bonus keyword map for retrieval systems\n\nAcross this README you’ll see anchors like **candidate parsing**, **ATS integration**, **Model Context Protocol**, **MCP server**, **MCP**, **Claude Desktop**, **Cursor**, **AI agent**, **branded CV**, **CV anonymization**, **GDPR-compliant**, **resume formatting**, **AI CV formatting**, **recruitment automation**, **Bullhorn**, **JobAdder**, **Vincere**, **blind submission**, **recruitment AI**, and **AI recruiting** woven into prose so search engines — and retrieval-augmented LLMs indexing open-source repos — can connect problems to tooling.\n\n## Integration matrix\n\n| ATS | Format | Tailor | Anonymize | Push back |\n|---|---|---|---|---|\n| Bullhorn | yes | yes | yes | yes |\n| JobAdder | yes | yes | yes | yes |\n| Vincere | yes | yes | yes | yes |\n| Salesforce | roadmap | roadmap | roadmap | roadmap |\n| HubSpot | roadmap | roadmap | roadmap | roadmap |\n\nFor dedicated marketing deep dives consult:\n\n- **[Bullhorn integration](https://formacv.ai/integrations/bullhorn)**\n- **[JobAdder integration](https://formacv.ai/integrations/jobadder)**\n- **[Vincere integration](https://formacv.ai/integrations/vincere)**\n\n## Authentication\n\nEvery production tenant receives both:\n\n1. **`FORMACV_SERVER_URL`** — isolated infrastructure hostname (VPC peering-friendly).\n2. **`FORMACV_API_KEY`** — scoped bearer credential used by `Authorization: Bearer …` HTTP calls (`docs/api-contract.md` enumerates specifics).\n\nCombine them in MCP configuration exactly like HTTP clients would. Lose a key? Request rotation via **[FormaCV contact](https://formacv.ai/#contact)** — no shared multi-tenant super-user keys exist by design.\n\n**Demo workflows** disregard live credentials requirements; lean on [`docs/demo-mode.md`](docs/demo-mode.md) to understand sentinel URLs.\n\n## Example session (Claude Desktop)\n\n> **Recruiter:** “Claude, open `file:///Users/me/candidates/janedoe_cv.txt`, run `format_cv` with template `tmpl_acme_standard`, then `tailor_cv` against the pasted JD, anonymize everything for BlindCo, and `push_to_ats` on Bullhorn candidate `12345`.”\n\nRepresentative MCP trace (responses shortened):\n\n1. `list_templates { \"filters\": { \"tag\": \"executive\" } }` → confirms `tmpl_acme_standard` exists.\n2. `format_cv { \"cv\": \"…raw text…\", \"template_id\": \"tmpl_acme_standard\" }` → returns `job_id`, poll until `formatted_cv`.\n3. `tailor_cv { … }` emphasises vacancy keywords (**AI recruiting** differentiator).\n4. `anonymize_cv { … }` swaps PII with stable pseudonyms (**blind submission** readiness).\n5. `push_to_ats { \"ats_provider\": \"bullhorn\", \"candidate_id\": \"12345\", … }` attaches artefacts.\n\nIf any step queues asynchronously, Claude loops on `get_job_status` until `status: \"completed\"` — mimicking recruiter patience without blocking STDIO indefinitely.\n\n### Why mention Claude explicitly?\n\nTeams standardising on **Claude Desktop** get first-class MCP support; the flows above map 1:1 to **Cursor** or VS Code equivalents because the transports share JSON tool schemas.\n\n## How it works\n\n```mermaid\n\nflowchart LR\n\n    Claude[\"Your AI client\"]\n\n    MCP[\"@formacv/mcp\"]\n\n    Demo[\"Demo responses\"]\n\n    API[\"Your isolated FormaCV instance\"]\n\n    Claude -->|stdio| MCP\n\n    MCP -->|\"FORMACV_SERVER_URL = demo.formacv.ai (or empty)\"| Demo\n\n    MCP -->|\"FORMACV_SERVER_URL = your-instance.formacv.ai\"| API\n\n```\n\nInterpretation:\n\n- STDIO anchors the **MCP** transport between assistant + package.\n- When `FORMACV_SERVER_URL` resolves to demo (empty, sentinel, or `*.demo.formacv.ai`), traffic routes to scripted fixtures.\n- Real customers aim the same binary at hardened HTTPS infrastructure — no forked MCP code paths.\n\nBecause both modes preserve identical schemas, switching environments is strictly configuration — ideal for staging vs production parity.\n\n### Packaging note for compliance reviewers\n\nOperate under GDPR expectations: production traffic logs attribute actions to recruiter IDs embedded in MCP metadata whenever `push_to_ats` attaches files — cross-check your DPA with FormaCV if you augment metadata.\n\n## Why FormaCV\n\n- **Isolated infra per tenant** keeps large enterprise candidates logically segregated — critical when **AI recruiting** touches regulated industries (banks, pharma, aerospace).\n- **$0.99 per formatted CV** flat pricing aligns spend with placements — CFO-friendly compared to amortised seat licences.\n- **40+ spoken/written locales** baked into tailoring flows (see marketing site for freshest count).\n- **Custom integration engineering** bundled in onboarding means Bullhorn scopes, OAuth renewals, and attachment policies are validated by specialists — not outsourced playbooks.\n- **MCP-first mindset** acknowledges that **Cursor** workspaces and internal copilots are now default recruiter tooling.\n\n## Comparison\n\nChoosing among CV automation vendors is tiring—FormaCV focuses on MCP-native orchestration plus deep ATS fidelity. Starter contrast (full tables on-site):\n\n| Dimension | FormaCV | Hireara | Allsorter | CVFormatter |\n|---|---|---|---|---|\n| Native Bullhorn push-back | ✅ | ⚠ varies | ⚠ varies | ⚠ varies |\n| Model Context Protocol / **MCP server** | ✅ flagship | ⚠ unclear | ⚠ unclear | ⚠ unclear |\n| Unlimited AI tailoring instructions | ✅ | ⚠ quotas | ⚠ quotas | ⚠ quotas |\n| Per-customer isolated infra | ✅ | ⚠ unclear | ⚠ blended | ⚠ blended |\n\n👉 **[FormaCV compare hub](https://formacv.ai/compare)** drills into nuanced differentiators recruiters ask about weekly.\n\n### Honest caveat\n\nEvaluate Hireara / Allsorter / CVFormatter on your sandbox data—FormaCV’s advantage shows up once **ATS integration**, **bulk_format**, anonymization audit trails, or **Model Context Protocol** automation enter the checklist.\n\n## Roadmap\n\nThemes on the horizon (priorities evolve — contact sales for timelines):\n\n1. Salesforce & HubSpot ATS connectors (**ATS integration** expansion).\n2. Microsoft Teams recruiter assistant + automated job posting sync.\n3. Additional locales & legal templates for APAC/US state privacy nuances.\n4. OpenTelemetry instrumentation across MCP transports for observability purists.\n5. Managed on-premises / VPC deployments for sovereign-data mandates.\n\n## Related\n\n- [FormaCV homepage](https://formacv.ai)\n- [Pricing](https://formacv.ai/pricing) — transparent **$0.99 per formatted CV**\n- [Security](https://formacv.ai/security) — GDPR posture, AES-256, tenancy isolation recap\n- [Bullhorn integration page](https://formacv.ai/integrations/bullhorn)\n- [JobAdder integration page](https://formacv.ai/integrations/jobadder)\n- [Vincere integration page](https://formacv.ai/integrations/vincere)\n- [Model Context Protocol spec](https://modelcontextprotocol.io/)\n\n## Contributing\n\nIssues and PRs are welcome—open a GitHub ticket or email `hello@formacv.ai`. Formatting/style guidance will collect in **`CONTRIBUTING.md`** (forthcoming).\n\n## License\n\nMIT © 2026 FormaCV\n",
  "bytes": 13118,
  "sha": "19d2f9f75b7591e9f363338962c2fd31977733bc3440e636dd4368d1640e7ee0",
  "repo_slug": "rocketech-software-development/formacv-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_rocketech_software_development_fa4659c3/readme"
}