Connect the server
FastCV MCP is hosted. Nothing to install, no package to run, no key to paste — your client takes one address, you sign in to FastCV in the window that opens, and you approve it once. All you need is a FastCV account, and you can make one inside the sign-in step without losing your place.
Server endpoint
https://www.fastcv.co/v1/mcp
Pick your client
Six clients FastCV has been set up against, and the discovery contract for everything else. Choose the one you use — the rest of this page is the same whichever you pick.
Claude
Desktop, web and mobile. No file to edit.
Open Settings, then Connectors.
Choose “Add custom connector”.
Name it FastCV and paste the server URL from the top of this page.
Press Connect and sign in to FastCV.
A FastCV window opens. Sign in, or create an account there, then approve the connection.
Look for FastCV in the tool menu of a new chat.
ChatGPT
The Mac app's MCP form. Streamable HTTP, one URL, no file to edit.
Open Settings → Plugins, then the MCPs tab.
Press Add, then “Connect to a custom MCP”.
Name it FastCV and set Type to Streamable HTTP.
Not STDIO — FastCV is hosted, so there is no local process to run.
Paste the server URL and leave the token and header fields empty.
Those fields are for servers that want a fixed token. FastCV would rather sign you in, and filling them in stops that from being offered.
Save, and approve the FastCV sign-in when it opens.
If it refuses with a 401 instead of opening a sign-in, your build wants a fixed token rather than the OAuth flow. Create a key under Connections, set it in your environment as FASTCV_TOKEN, and put that name — not the key itself — in the Bearer token env var field. Everything on this page works the same way afterwards.
On chatgpt.com rather than the Mac app, custom MCP servers sit behind developer mode and have moved between settings screens more than once — OpenAI documents the current path. The URL and the sign-in are the same either way.
Claude Code
Added from the terminal, authenticated inside the session.
claude mcp add --transport http fastcv https://www.fastcv.co/v1/mcpRun /mcp in Claude Code, select fastcv, and choose Authenticate. The browser opens on the FastCV sign-in, and the session picks the connection up when you come back.
Add --scope local to keep it to one project, or --scope user for every project on the machine.
Codex
Registered and authenticated from the terminal. No file to edit.
codex mcp add fastcv --url https://www.fastcv.co/v1/mcp
codex mcp login fastcvThe second command opens the FastCV sign-in in your browser. Approve it and Codex keeps the token — remote servers default to OAuth, so there is no key to set. Confirm with codex mcp list.
codex mcp add writes the same entry you could add to ~/.codex/config.toml by hand:
[mcp_servers.fastcv]
url = "https://www.fastcv.co/v1/mcp"On a Codex older than the codex mcp subcommands, remote servers were behind experimental_use_rmcp_client = true, and builds older still took stdio only. Update Codex if you can; otherwise bridge it:
[mcp_servers.fastcv]
command = "npx"
args = ["-y", "mcp-remote", "https://www.fastcv.co/v1/mcp"]mcp-remote opens the same browser sign-in and keeps the tokens on your machine.
Cursor
One file, global or per project. Cursor prompts for the sign-in.
{
"mcpServers": {
"fastcv": {
"url": "https://www.fastcv.co/v1/mcp"
}
}
}Open Settings → MCP. FastCV appears with a sign-in prompt; approving it in the browser turns the entry green.
Use .cursor/mcp.json in a project instead if you would rather keep it to that repository.
VS Code
Workspace file, or user settings for every project.
{
"servers": {
"fastcv": {
"type": "http",
"url": "https://www.fastcv.co/v1/mcp"
}
}
}Start the server from the Start action above the block, or run MCP: List Servers from the command palette. VS Code opens the FastCV sign-in on first use.
Any other client
Anything that speaks Streamable HTTP and OAuth 2.1 — there is nothing FastCV-specific to implement.
Point it at the same URL. Your client finds everything else by being refused once: the 401 names the document that describes how to sign in, and the flow runs from there.
The first request is supposed to fail. The header names the protected-resource document.
Says which authorization server protects this endpoint.
The authorize, token and registration endpoints.
RFC 7591, open, public clients only. Your client gets an id without anyone filling in a form.
Required. Plain is refused.
HTTPS on a FastCV, Anthropic or OpenAI host — or loopback on any port, which is how native clients come back.
No SSE session to hold open and no server-initiated messages: the endpoint is stateless and answers GET with 405.
Showing setup for Claude
What you're approving
Signing in issues your client an access token for FastCV alone. It is bound to this server, it never appears in a URL or in anything the assistant says, and it is not your FastCV password. The consent screen lists exactly this, in these words.
List them, and read one as source material. Reading is how tailoring stays truthful.
Write one from content you supplied — pasted text, a file your client read, or answers to its questions.
The company, the role, where each application stands, and which documents are in it.
A new document per job, filed under the company and role. Never a change to the resume it came from.
Revise the wording of its own output. It cannot reach the resumes you own.
It cannot delete anything, cannot change a resume you own, cannot mark an application as applied, and cannot restyle a page.
To end it, open Connections in your FastCV dashboard and disconnect the client. It loses access at once — the access token it is holding is destroyed with the connection, not left to expire. Removing the connector in the client works too, and is worth doing either way so it stops trying.
Check it worked
Ask for something only your account can answer. If the connection is live you get your own resume names back.
What resumes do I have in FastCV?
You have two: Software Engineer, updated yesterday, and Product Analyst, from March. Which one are we working from?
A brand-new account answers that it has none yet and offers to build one — which is the next section.
If FastCV is empty
You do not need to have used FastCV before. Give the assistant your material in whatever shape it is in.
Paste an existing resume, or attach a file your client can read.
Answering questions works too — say you’d rather be interviewed and it will ask.
It saves what you gave it, gaps and all.
Missing end dates and one-line entries are accepted rather than rejected, and it tells you which sections came through empty so you know what needs a second pass in the editor.
Open the editor link it returns, or keep going in the chat.
FastCV MCP only ever receives text your client sends it. It does not reach into your machine for files, and it keeps nothing of the original attachment.
Tailoring for a job
This is what the server is for. Give it the company, the role, and the posting if you have it.
It reads the resume you name — or the only one you have.
With one resume in the account it just uses it, rather than asking a question with one answer.
It writes a new tailored resume. Yours is not touched.
The resume you own is the record of what you have actually done, and nothing in a conversation can rewrite it. Only the tailored copy can be revised afterwards, and only against the version it last read — so it cannot overwrite an edit you made in the browser a moment earlier.
It drafts the cover letter from that resume.
Your name, email, phone and location come off the resume rather than being invented. The letter is plain paragraphs; FastCV supplies the typography.
It flags anything it added that your resume doesn't contain.
An employer, job title, date, degree or figure that is not in the source comes back flagged, and the assistant is told to ask you to confirm it rather than present it as fact. The check compares words rather than meaning, so read what comes back before you send it anywhere.
It files both under the company and role.
One folder per job, holding references rather than copies, and starting at Saved. Whether you actually applied is yours to mark, in FastCV — the assistant cannot set it.
Ask for the PDF and you get a download link.
Time-limited, tied to that one document, and it works whether or not you have opened the editor. The editor link comes back with it, in case you would rather change the design first.
Use an API key instead
Scripts, self-hosted clients and anything running without a browser can authenticate with a FastCV API key instead of the OAuth flow. Create one under Connections in your dashboard, up to five at a time, and revoke any of them from the same page.
https://www.fastcv.co/v1/mcp
Authorization: Bearer fk_your_keyClients that accept custom headers take the same key:
{
"mcpServers": {
"fastcv": {
"url": "https://www.fastcv.co/v1/mcp",
"headers": {
"Authorization": "Bearer fk_your_key"
}
}
}
}A key is a password with your work history behind it. Put it in your client’s secret storage or an environment variable — never in a URL, a chat message, or committed configuration. FastCV stores only a hash of it, so a key is shown once and cannot be recovered later — only replaced.
When it doesn't take
Check the address character for character. It is https, and it ends at /v1/mcp with no trailing slash.
The connection was revoked or has expired. Reconnect from your client’s connector settings; nothing you made is affected.
It was deleted, or you are signed in with a different FastCV account. Ask it to list your resumes and pick from what comes back.
You changed the document in the browser mid-conversation. The assistant re-reads it and applies your change on top — nothing is lost, and it does not need you to do anything.
Correct, and deliberate. Tailoring writes a copy; the resume you own is only ever read. Edit that one in the editor.
Also correct. Templates, colours, fonts and spacing live in FastCV and no tool can set them. Open the editor link it gave you.
The check compares words, not meaning, so a rewrite from “Sr. Engineer” to “Senior Engineer” gets flagged. Confirm it and the assistant carries on.