Setup guide · Cursor

Connect Cursor to FazerCards MCP

Cursor is the only one of these clients that can attach custom HTTP headers to a remote MCP server, so your FazerCards token travels in X-API-Key and the URL stays clean. Setup is one JSON file: global for every window, or scoped to a single project. Below are both scopes, the exact config block, and the failures as they read in MCP Logs.

Before you start

  • A FazerCards account with a balance available to spend from
  • A connection token starting with mcp_, created on the profile page via the "Connect to AI" card
  • A Cursor build with MCP support (settings section labelled MCP, or Tools & Integrations)
  • An editor that will not autocorrect straight quotes into typographic ones
  • A decision on scope: ~/.cursor/mcp.json for every project, or .cursor/mcp.json for one

Two files, two scopes

Cursor reads MCP configuration from a JSON file, and there are two of them. The global file lives at ~/.cursor/mcp.json (on Windows, C:\Users\<name>\.cursor\mcp.json) and makes the server available in every window you open. The project file is .cursor/mcp.json in the project root; it applies only while that folder is open and drops out of the tool list the moment you switch to another project.

Choose global if you query the catalog from wherever you happen to be working that day. Choose project if the FazerCards work belongs to one shop, bot or storefront repository, and you would rather not have order-placing tools loaded while editing unrelated code. Both files take the same shape, so moving an entry between them is copy and paste.

The header is the whole point

Because Cursor forwards arbitrary headers, the credential never has to appear in an address. The url value stays a plain https://api.fzr.cards/mcp with nothing secret in it, and the mcp_ token sits in X-API-Key. URLs are the part that leaks: they land in log lines, in error output, in a config someone pastes into a chat to ask for help. A header does not travel that way.

The flip side is that the header name is passed through verbatim and Cursor never inspects it. Case does not matter, so X-Api-Key is fine, but X-API_Key, XAPIKey or a stray space inside the value all produce a request that arrives with no credential at all. The symptom is a server that looks dead rather than a server that says no.

How the token itself behaves, and what running an order tool actually does to your account, is covered once on the MCP hub page.

Strict JSON, and why one typo takes everything down

mcp.json is parsed as plain JSON: no comments, no trailing comma after the last entry, straight ASCII quotes only. That is stricter than it sounds in practice, because a malformed file is not a broken FazerCards entry. Cursor fails to parse the whole document, and every MCP server declared in it disappears at once.

So the diagnostic is easy: if your other tools vanished at the same moment, the file is invalid and the connection is irrelevant. The usual cause is pasting the block out of a chat app or a word processor that quietly converts " into typographic quotes. Retype the quotes inside the editor, or run the file through any JSON validator before restarting.

Reloading, and where the real error is written

Cursor does not reliably hot-reload mcp.json. Toggling the server off and on in settings is not a reload; quit the application completely, including any instance still sitting in the tray or dock, then reopen it. Edits that appear to have no effect are almost always this and not a configuration mistake.

When something is genuinely wrong, the MCP settings screen only shows a red state. The reason is in the Output panel, in the channel named MCP Logs: HTTP status, transport errors and the server's own refusal text. Read that before changing anything in the file.

One behaviour worth setting deliberately: keep MCP tool confirmation enabled for this server. Cursor prompts before running a tool only while confirmation is on, and auto-run or agent mode bypasses the prompt entirely.

Step by step

  1. Generate a connection token in the panel

    In the FazerCards panel, open your profile page and use the "Connect to AI" card to create a connection link. The link is of the form https://api.fzr.cards/mcp/<token> and the token begins with mcp_. In Cursor you need only the token itself, not the link.

  2. Pick the scope and open the right file

    For access in every Cursor window, edit ~/.cursor/mcp.json (C:\Users\<name>\.cursor\mcp.json on Windows). For one repository only, create .cursor/mcp.json in the project root. Create the folder and the file if they do not exist yet; nothing else in Cursor needs to be prepared first.

  3. Declare the server under mcpServers

    Inside the root object "mcpServers", add an entry with a short name of your choosing. A remote server needs "url" set to https://api.fzr.cards/mcp and a "headers" object. Omit "type", and do not add "command" or "args" - those describe a local process and will make Cursor try to launch a binary that does not exist.

  4. Put the token in the X-API-Key header

    Inside "headers", set "X-API-Key" to your mcp_ token. Type or paste it so that no space slips in before or after the value, and make sure every quote in the file is a straight ASCII quote.

  5. Validate the file, then restart Cursor fully

    Confirm the file still parses as JSON - a single trailing comma will unload every server listed. Then quit Cursor entirely rather than closing the window, and open it again so the new configuration is read.

  6. Confirm the server loaded and keep confirmation on

    Open the MCP settings screen and check that the entry is connected and its tools are listed. Leave tool confirmation enabled for this server, since these tools act on a live account, and remember that auto-run or agent mode will skip the confirmation prompt.

Configuration

{
  "mcpServers": {
    "fazercards": {
      "url": "https://api.fzr.cards/mcp",
      "headers": {
        "X-API-Key": "mcp_your_token_here"
      }
    }
  }
}

If something goes wrong

Every MCP server disappeared after you edited the file, not just FazerCards

The document is invalid JSON. Look for a trailing comma after the last entry or typographic quotes pasted from a chat app, fix the first error a JSON validator reports, then restart Cursor.

MCP Logs shows a 401 and an authentication-required message

The header value is not a live token. Check that it starts with mcp_, that no space was pasted with it, and that it has not been revoked; generate a fresh connection link in the panel and paste the new token.

Cursor reports that the server failed to start, mentioning spawn or a missing command

The entry still carries "command" or "args" from a local-server example. Delete them and any "type" field; a remote server is declared with url and headers only.

The server connects but exposes no tools, and MCP Logs says nothing about authentication

The header name is misspelled and passes through untouched, so the request arrives anonymous. Compare it character by character with X-API-Key - case is irrelevant, punctuation is not.

Changes to mcp.json seem to be ignored

Cursor did not reload. Quit the application completely, including a background or tray instance, and reopen it; switching the server off and on in settings does not re-read the file.

The server works in one window and is missing in another

It is declared in a project .cursor/mcp.json, which loads only while that folder is open. Move the entry into ~/.cursor/mcp.json if you want it everywhere.

Questions

Should .cursor/mcp.json be committed to git?

Not with a real token inside. Either add it to .gitignore and commit an example file with a placeholder value, or keep the entry in your global ~/.cursor/mcp.json where it never sits in a repository. If a token has already been pushed, revoke it in the panel and generate a new one.

Does this work in auto-run / agent mode?

It does, and that is exactly what to be deliberate about: auto-run executes MCP tools without prompting, including tools that place orders on your account. Keep MCP tool confirmation enabled for this server, and if you use agent mode heavily for unrelated work, declare FazerCards in a project file so it is not loaded in those windows.

Global file or project file - which should I use?

Global (~/.cursor/mcp.json) if you want the catalog and order tools in every window. Project (.cursor/mcp.json) if the work belongs to one repository, since the server is loaded only while that folder is open. Declare it in one place or the other, not both under the same name - duplicate names across scopes make it hard to tell which entry a window is actually using.

Why does the file have to be strict JSON?

Cursor parses it with an ordinary JSON parser, so comments, trailing commas and single quotes are all fatal. And the failure is total rather than local: an invalid document means Cursor loads no MCP servers at all, which is why a bad paste looks like several tools breaking simultaneously.

Where do I find MCP Logs?

In the Output panel - the same panel that holds terminal and problem output - select the MCP Logs channel from its drop-down. Connection failures, HTTP statuses and refusal messages are written there; the MCP settings screen only shows a green or red indicator.

Can I declare two FazerCards accounts at once?

Yes. Add a second entry under "mcpServers" with a different name, for example "fazercards" and "fazercards-second", each with its own headers block and token. Cursor exposes both tool sets side by side, so keep the names short and clearly distinguishable to avoid asking the assistant to work against the wrong account.