Home · Guides

Cursor MCP setup

Cursor reads mcp.json from one of two places, and which one you pick decides who gets the server.

This project only<project>/.cursor/mcp.json
Every project~/.cursor/mcp.json

A working entry, with the field people leave out:

{
  "mcpServers": {
    "time-tracker": {
      "type": "stdio",
      "command": "/opt/homebrew/bin/node",
      "args": ["/Users/you/mcp-servers/servers/time-tracker/dist/index.js"]
    }
  }
}

The current field table marks type as required, with stdio for a server Cursor launches itself. Write it out rather than relying on command and args alone.

Where to look after you save

The Customize page in the sidebar is where servers are installed and managed, and it lists the server with its tools once the process has started. The older Tools and MCP settings pane is not where the current documentation sends you. If the server is listed but has no tools under it, it started and then failed the handshake, which is a different problem from not starting at all.

envFile is stdio only

An env object next to command is read inline. envFile is accepted for stdio servers only: a remote HTTP or SSE server does not read it, and its credentials belong in headers in the config instead. This is the documented restriction, and it is easy to trip over when you convert a local entry into a remote one and the key silently stops being sent.

A remote server instead

{
  "mcpServers": {
    "invoice": {
      "type": "http",
      "url": "https://mcp.zovo.one/mcp/invoice/t/YOUR_TOKEN"
    }
  }
}

mcp/connect prints the URL with the token already in the path, so there is no header to configure and nothing to install. Free terms are on that page: 600 calls an hour and a data space kept 30 days, refreshed on every write.

What you can do once it is connected

With the time tracker connected, this is a real session:

Start a timer for Acme, task API refactor.

Paste this into Claude with the server connected.

Then, later, "stop the timer and tell me how long I worked", and at the end of the week "how many hours did I put into Acme, grouped by task". The free tier gives unlimited timers and entries, with reads clamped to the last seven days and hourly rates on two projects, which is the split recorded in data/facts.json. There are 11 tools on that server, counted from data/tools.json.

Per-server Cursor pages with the exact block for each of the 30 servers are under setup/cursor.

Questions

Project mcp.json or the home one?

Project, when the server is part of how this repo is worked on and you want it committed for the team. Home, when it is your own tooling and you want it in every window. Both files are read; the project one wins for a name that appears in both.

Cursor lists the server but no tools show up.

The process started and the handshake did not finish. Run the same command in a terminal and watch stderr. With these servers, the usual cause is a dist directory that was never built, so node exits immediately with a module-not-found error.

Is there a tool limit in Cursor?

Cursor's own documentation is the place to check for a current number, and it changes. What is safe to say is that some clients do cap the number of tools they surface at once, and the office-suite bundle in this repository exposes every child server's tools in one connection, which makes it the fastest way to reach any such cap. Installing the two or three servers you use avoids the question.

Does the free tier need an account?

No. A local install has no account, no key and no login: leave MCP_LICENSE_KEY unset and the free tier is what runs. The hosted URLs mint an anonymous token with no sign-up either.

Related

All MCP servers and prices · All guides · Buy the bundle $39