Skip to content

The MCP starter stack for 2026: five servers most teams need

The MCP starter stack for 2026 is five servers: GitHub (pull requests and CI), Context7 (current library docs), Playwright or Chrome DevTools (the running app), Linear or Atlassian (tickets) and Sentry (production errors). Each installs in Claude Code, Codex and Cursor and passes one read-only check; together they carry a bug from Sentry to a reviewed pull request.

A bug ticket lands. You open Sentry to copy the stack trace, open the ticket to copy the acceptance criteria, paste both into the agent, wait for a fix, click through the app yourself, open the pull request, and paste the link back into the ticket. The agent wrote the code, but you were the integration layer between five systems. This page is for developers and tech leads who want the agent to do that plumbing and hand back evidence instead.

  • The exact claude mcp add and codex mcp add lines and the Cursor mcp.json for all five servers, checked on Claude Code 2.1.283 and codex-cli 0.157.1.
  • A read-only acceptance test that proves each server works before you trust it with a real task.
  • One workflow that uses all five: bug ticket to Sentry trace to fix to browser check to pull request to ticket comment.
  • A rule for when gh, or a CLI plus a skill, beats an MCP server.
  • The traps that make a correct-looking setup fail silently.

A server earns its place when, without it, you would paste something from that system into the agent every week. These five cover the loop most product teams run daily. The developer scorecard scores the same thing: a point for each MCP server you actually use in a normal week, up to three, not for what you installed.

SlotServerWhat the agent getsEvidence before you adopt it
Code hostGitHub MCP Server (remote, official)PRs, review threads, Actions logs, issuesIt reads the intended repository and cannot touch unrelated ones
Library docsContext7 (Upstash)Version-specific docs and examplesIt returns a page for the library version in your lockfile
Running appPlaywright MCP, or Chrome DevTools MCP for performance workNavigation, clicks, console and network over the accessibility treeIt loads your local app and reports the console without changing data
TicketsLinear or Atlassian Rovo (remote, official)Acceptance criteria in, status and comments outIt reads the intended project and cannot edit without your approval
Production errorsSentry MCP (remote, official)Issues, events, stack traces, tracesIt retrieves one known issue without changing its state

Swap slots to match your work. A platform team replaces Playwright with Terraform or Grafana; a data team replaces it with a database server. The top 30 MCP servers page has a stack per team type. The method stays the same: pick from observed weekly tasks, not from a list.

Popularity as of 2026-09-26, from GitHub stars and the install counts on each plugin’s page in the Claude plugin directory (claude.com/plugins): Context7 has ★62.4k and 417,801 plugin installs, Playwright MCP ★37.6k and 319,887, GitHub MCP Server ★33.2k and 319,381, Chrome DevTools MCP ★52.6k and 102,569, Atlassian ★1.1k and 92,289, Linear 48,038 installs, and Sentry MCP ★862 (Sentry’s separate sentry plugin, mainly its skills, has 38,810 installs). Stars measure attention on a repository, not use.

Install the five MCP servers in Claude Code, Codex and Cursor

Section titled “Install the five MCP servers in Claude Code, Codex and Cursor”

The server URLs and packages are identical across the three agents; only the command or config file differs. Every server except GitHub uses OAuth (Sentry, Linear, Atlassian) or no auth (Context7 without a key, Playwright locally), so the only secret you set is a GitHub token.

  1. Create a fine-grained GitHub token limited to the repositories the agent works on: Contents, Issues and Pull requests read and write, Actions read. Store it in your shell as GITHUB_PAT from your secret manager. For the full scope table, see which PAT scopes the GitHub MCP server needs.

  2. Add the servers with the tab for your agent. Use Linear or Atlassian, not both.

    Run in a terminal at the repository root. -s project writes a shareable .mcp.json; the single quotes keep ${GITHUB_PAT} as a reference that Claude Code expands at connect time, so the token never lands in the file.

    Terminal window
    claude mcp add -s project --transport http github https://api.githubcopilot.com/mcp/ -H 'Authorization: Bearer ${GITHUB_PAT}'
    claude mcp add -s project --transport http context7 https://mcp.context7.com/mcp
    claude mcp add -s project playwright -- npx @playwright/mcp@latest --isolated
    claude mcp add -s project --transport http sentry https://mcp.sentry.dev/mcp
    claude mcp add -s project --transport http linear https://mcp.linear.app/mcp
    # or, for Jira and Confluence:
    claude mcp add -s project --transport http atlassian https://mcp.atlassian.com/v2/mcp

    Then start claude and run /mcp to sign in to Sentry and Linear or Atlassian (or run claude mcp login sentry from the terminal). Teammates who pull .mcp.json see each server as pending approval until they accept it.

    Prefer plugins? claude plugin install github@claude-plugins-official (and the same for context7, playwright, linear, atlassian) installs the same server packaged as a plugin; the GitHub, Context7, Playwright and Linear plugins carry no skills (Claude Code 2.1.286). The GitHub plugin reads a fixed variable name, GITHUB_PERSONAL_ACCESS_TOKEN.

  3. Pick the browser server for the job. Playwright MCP is the default for functional checks. For performance traces, Lighthouse and heap snapshots, use Chrome DevTools MCP in place of Playwright for that work: claude mcp add -s project chrome-devtools -- npx chrome-devtools-mcp@latest (use -s user instead to keep it personal) or codex mcp add chrome-devtools -- npx chrome-devtools-mcp@latest; in Cursor, add "chrome-devtools": { "command": "npx", "args": ["chrome-devtools-mcp@latest"] } under mcpServers. It sends usage statistics to Google by default; add --no-usage-statistics to opt out.

  4. Keep merge out of the agent’s reach. The token can merge if you can, so remove the tool on the client. In Claude Code, add "deny": ["mcp__github__merge_pull_request"] under permissions in .claude/settings.json. If you installed the plugin, the tool is mcp__plugin_github_github__merge_pull_request. Deny both names, or run /mcp to see the exact tool name. In Codex, add disabled_tools = ["merge_pull_request"] under [mcp_servers.github]. In Cursor, turn off the merge_pull_request tool for the github server in Settings → MCP (check the toggle on your version; this was not tested in a Cursor binary). Branch protection with a required review is the backstop in every tool.

--isolated gives each Playwright session an in-memory browser profile. A persistent profile can be opened by only one browser at a time, so without it the second agent in a parallel worktree fails to launch.

Prove each MCP server works before you trust it

Section titled “Prove each MCP server works before you trust it”

Installed is not working. Before the stack touches a real task, run one benign, read-only query per server and check the evidence: the intended resource, a traceable identifier in the answer, and no side effect. This is the acceptance test for the setup, and it takes one prompt.

Replace http://localhost:3000 with your dev server’s URL and start the server first: Playwright MCP opens pages but does not start your app. A FAIL row points you to the failure table below.

Claude Code and Codex both load MCP tool schemas through tool search (on by default in Claude Code, and in Codex since 0.143.0), so five servers do not flood the context window up front. Tool results do: a full Actions log, a 30-item issue list or a page snapshot lands in context. Measure it rather than guess:

  • In Claude Code, run /context in a fresh session before and after the acceptance test.
  • For a plugin install, claude plugin details PLUGIN_NAME prints its always-on token cost. Measured in September 2026 with Claude Code 2.1.286, the github, context7, playwright and linear plugins each report ~0 tok always-on, because the command does not count MCP tool schemas. For comparison, plugins that ship skills and hooks range from about 84 to about 41,500 always-on tokens. So for this stack, /context is the number that matters.
  • Ask for trimmed results in the prompt: failed log lines only, the first five issues, one page snapshot.

For more ways to cut result size, see reducing MCP token cost.

From Sentry error to merged fix: the five-server workflow

Section titled “From Sentry error to merged fix: the five-server workflow”

This is the loop the stack exists for. The agent moves between the five systems; you read the evidence it hands back and approve the pull request.

  1. Read the ticket. The agent pulls the acceptance criteria and the linked Sentry issue from Linear or Jira. The criteria are the definition of done.

  2. Read the trace. Through Sentry MCP it opens the issue, the latest event and the stack trace, and maps the in-app frames to local files.

  3. Reproduce first. It writes a failing test that reproduces the error from the event data, and runs it to show it fails. No reproduction, no fix.

  4. Fix against current docs. When the fix touches a library API, it checks Context7 for the version in the lockfile instead of trusting training data.

  5. Check the running app. The test now passes; the full suite runs. Then Playwright opens the affected page, repeats the user steps from the Sentry breadcrumbs, and reports the console and network.

  6. Open the pull request. It pushes the branch with git, then opens a pull request through GitHub MCP (or gh pr create) whose body carries the evidence: the Sentry issue link, the failing-then-passing test output, the Playwright console report, and the CI status.

  7. Report back. It comments the pull request link on the ticket and moves the ticket to In Review, not Done. A person merges.

Replace ENG-1423 with your ticket key. On Jira, the same prompt works through Atlassian Rovo; name the project key instead.

How you verify the result without reading every line

Section titled “How you verify the result without reading every line”

You check that the evidence exists and holds, and the repository enforces the rest:

  • The reproduction is the oracle. The test fails before the fix and passes after, in the output the agent pasted, and CI runs it again. A fix without a failing test first goes back. See how strong your oracle is.
  • Required checks gate the merge. Branch protection makes the CI suite required, so green means the same suite now passes on the pull request.
  • The browser check is behaviour, not code. The Playwright report shows the page the user hit now loads with a clean console. For UI changes, ask for a screenshot and attach it.
  • Production confirms it. After the release, Sentry shows no new events for that issue. Mark it resolved yourself once it stays quiet through a normal traffic cycle.
  • One reviewer signs off on the evidence and the test diff, using the evidence bundle as the checklist. Rollback is a git revert of one pull request.

When gh beats GitHub MCP, and a CLI plus a skill beats MCP

Section titled “When gh beats GitHub MCP, and a CLI plus a skill beats MCP”

MCP is the right layer when the agent must read or change live external state that needs authentication. It is not always the cheapest one. All three agents run shell commands, so a well-known CLI is often enough.

JobBetter routeWhy
Read one failing CI loggh run view RUN_ID --log-failedFewer tokens than a full log through MCP
Open a PR and watch checksgh pr create, gh pr checks --watchOne command each; the agent already has a shell
Reply to review threads one by one, triage 50 issuesGitHub MCPThread IDs, pagination and structured results are awkward in gh
An agent with no shell (desktop chat, hosted agent)GitHub MCPIt is the only route
Many repetitive browser steps in a long session@playwright/cli with its skillPlaywright’s README says coding agents “might benefit from using the CLI+SKILLS instead”, because tool schemas and snapshots cost context
Current library docs in a shell-capable agentnpx ctx7 setup (Context7’s CLI plus a skill)Same docs, no MCP server to run
Sentry, Linear, Jira dataThe vendor’s remote MCP serverOAuth-scoped access that a skill alone cannot provide

The Playwright route installs with npm install -g @playwright/cli@latest and then playwright-cli install --skills in the workspace. Two other options: agent-browser, a browser skill, and installing and managing skills. Rule of thumb: prefer the CLI when the agent has a shell and the output can be trimmed; prefer MCP when the system needs OAuth, typed results or an organization-wide allowlist.

Add a sixth server without breaking the stack

Section titled “Add a sixth server without breaking the stack”

The same selection method covers every server after the first five. Each one widens what a prompt injection can reach, so it has to earn its place.

  1. Name the recurring task, from the last two weeks of work, and what the server must never do.
  2. Choose a maintained source: the vendor’s own server or one your team reviewed. Record the owner and version. Registry presence proves identity, not quality.
  3. Limit credentials and data: one development resource, read-only, unless the task proves a write is needed. See MCP security.
  4. Run one benign acceptance query and check the evidence: right resource, traceable identifier, no side effect.
  5. Review the set monthly. Remove servers nobody used, expired endpoints, duplicated capabilities and tokens broader than the job.

What breaks in the MCP starter stack, and how do you recover?

Section titled “What breaks in the MCP starter stack, and how do you recover?”
SymptomCauseRecovery
A server added in Claude Code never connectsThe URL was added without --transport http, so Claude Code stored it as a stdio commandclaude mcp remove NAME, then add it again with --transport http
error: unknown option '--url'--url is a Codex flagIn Claude Code, pass the URL as a positional argument after --transport http
GitHub returns Bad credentials or 401GITHUB_PAT is not set in the shell that launched the agent, or the token expiredExport it, restart the agent from that shell, check the token’s repository list
GitHub headers ignored in Codexheaders = {…} is not a Codex key and is dropped without an errorUse bearer_token_env_var, http_headers or env_http_headers
Sentry token auth fails on the remote serverThe header is Authorization: Sentry-Bearer TOKEN, not BearerPrefer OAuth through /mcp or codex mcp login sentry
Atlassian connection refusedAn old /v1/sse URL, unsupported since 30 June 2026Use https://mcp.atlassian.com/v2/mcp
Second parallel agent cannot start a browserA persistent Playwright profile is locked by the first agentAdd --isolated, or give each worktree its own --user-data-dir
Playwright cannot reach localhostThe dev server is not runningStart it first; the server drives a browser, not your app
Context7 has no docs for a libraryNot every library is indexedPoint the agent at the library’s own docs or source, and pin a known ID next time (use library /supabase/supabase)
The agent grows slower and picks wrong toolsOverlapping servers (two browser servers, two trackers) compete for the same jobRemove the duplicate; keep one server per slot
A token shows up in .mcp.json or a transcriptThe header was typed with a literal token, or double quotes expanded itRevoke the token, remove it from Git history, add it back as a ${GITHUB_PAT} reference
A ticket or Sentry event tells the agent to do something oddTicket text and error payloads are untrusted input and can carry a prompt injectionKeep write tools behind the approval rule, merge out of reach, and turn on GitHub lockdown mode for public repositories; see GitHub MCP in depth for how to enable it

For connection problems beyond this stack, see MCP connection issues.

Where to go next with the MCP starter stack

Section titled “Where to go next with the MCP starter stack”

Start from the MCP overview if the protocol is new to you. To place the stack in your team’s rules, see governance and autonomy and the cross-tool capability map.