cursor mcpindependent directory

Posts / The Cursor MCP stack

The Cursor MCP stack

The ten servers this directory covers, and why they belong in one mcp.json instead of twenty.

Direct answer

A working Cursor MCP stack is a handful of official servers that match how you already ship software: tickets, specs, design, docs, git, the running UI, the database, crashes, and payments. This directory lists ten. Paste the JSON, then turn off the ones you are not using this hour. A 20,000-server marketplace is a junk drawer.

Overhead of a workbench with ten labeled tool tags, a laptop, a printed wireframe, and a ticket stub
Ten tools on the bench. That is already a lot.

I keep seeing mcp.json files that look like a Steam library. Forty community servers, half of them abandoned npm packages, all enabled. Then someone asks why the agent never calls GitHub.

This directory is the opposite of that. Ten official servers. One product loop.

A day, not a shopping list

Think about the path a change already takes on a team that uses Cursor.

The ticket lives in Linear. The spec is a Notion page you wrote last Tuesday. The frame is still in Figma. The code will sit in git, and the review will happen on GitHub. While you write, you need today's Next.js or Stripe docs, which is Context7, not the model's memory of a release from last year. You need to look at the running page, which is Playwright. If the answer is on a random changelog that Context7 does not index, that is Firecrawl. The schema is in Supabase. The crash is in Sentry. If money moves, Stripe is the account, not a guessed Checkout shape.

That is one stack. It is also ten names, which is already a lot.

If your mcp.json is longer than the component you are editing, you have a hobby, not a setup.

What each one is for

I will not re-paste the install JSON here. Each server page has it. This is the job description.

Context7 is Upstash's hosted docs MCP. Cursor can see your repo. It cannot see this week's Tailwind or Next.js pages unless something fetches them. Without it, the agent invents APIs that used to exist.

GitHub's official hosted server is for the product: issues, pull requests, checks, code search. Local git is already there. This is github.com.

Linear is the ticket. GitHub is the PR. People mash those together in chat and then wonder why the agent cannot quote the acceptance line.

Notion is the spec you already wrote. If the truth is a database row in Notion and the agent only sees git, you get last week's export.

Figma is structured layout, variables, and a screenshot of the selection. A PNG in chat is a rumor. More on that in A Figma to Cursor loop.

Playwright is a real browser on your machine. That is why it is local stdio, not a URL. Microsoft's server drives navigate, snapshot, click. You use it when the page is localhost.

Firecrawl fetches public pages into markdown. Context7 is libraries. Firecrawl is "scrape this URL I am staring at." The install this directory documents is npx plus an API key.

Supabase talks to the platform: projects, tables, logs. It is how the agent looks at the schema before it writes CREATE TABLE.

Sentry is the stack frame in the other window. Paste an issue URL and stay in the file.

Stripe's hosted MCP is the Stripe account and the API, with OAuth or a restricted key. Context7 can still be better for "how does Checkout work in Next.js." Use both if you actually ship payments.

Why not twenty

Cursor will load whatever you put in mcp.json. The agent still gets a finite list of tools. In 2025, people on the Cursor forum measured that as the first 40 tools. The number may have moved. The failure mode did not: extra servers steal slots from the one you needed. I wrote that up in The 40-tool limit.

Eight of these ten are a URL. Two spawn a local process. That split is When remote HTTP is enough.

What I would put in a fresh mcp.json

Global file, for me, on every repo:

  • Context7
  • GitHub
  • Linear (if the company lives there)

Project file, for the app I am in:

  • Figma, if this repo has a file
  • Supabase and Stripe, if this repo has those accounts
  • Playwright, when I am looking at UI
  • Sentry, when I am looking at a crash

Firecrawl and Notion stay off until a prompt needs the web or the spec.

You can paste all ten. Then open Settings, Tools & MCP, and kill the ones that are not in this hour's work. Connected is not the same as useful.

FAQ

Which MCP servers should I put in Cursor first?

Start with the ones that match work you already do: Context7 for library docs, GitHub for PRs, and then Linear, Figma, or Playwright if those are in the loop. Add the rest when a prompt actually needs them.

Should I install every server in this directory at once?

You can paste them all into mcp.json. Leave most of them off in Settings, Tools & MCP until you need that tool surface. Each extra tool definition competes for the agent's attention.

Sources

Install JSON: Context7, GitHub, Linear, Figma.