← All posts

How to Fix Website Bugs in Cursor Using Client Feedback

Cursor's agent is good at small, well-described fixes. Client feedback is rarely well described. "The button looks weird on my phone" doesn't say which button, which phone, or what weird means.

pinreview fills in what the client didn't say. When someone pins feedback on your site, pinreview records a screenshot, the CSS selector of the element they clicked, their browser and screen size, and any console errors. Connect Cursor to pinreview and its agent gets that whole report, not your paraphrase of it.

This guide sets up the connection, walks through one fix, and ends with a routine for a full client review round.

What you need

  • Cursor, with the repository for the site open.
  • A pinreview project on the Starter, Business or Agency plan. The connection uses MCP, which is included on paid plans. Compare plans.
  • A pinreview token. In pinreview, open Settings → AI tools, name the token (say, "Cursor on my laptop") and click Create token. Copy it straight away; pinreview shows it only once.

Step 1: Add pinreview to Cursor

Cursor reads MCP servers from ~/.cursor/mcp.json, which applies to every project. The AI tools page in pinreview shows this snippet with your token filled in:

{
  "mcpServers": {
    "pinreview": {
      "url": "https://api.pinreview.one/mcp",
      "headers": { "Authorization": "Bearer prt_…" }
    }
  }
}

If you'd rather connect pinreview to one project only, put the same block in .cursor/mcp.json in that repository, but don't paste your token into a file you commit. Cursor fills in environment variables in the headers field, so reference one instead:

{
  "mcpServers": {
    "pinreview": {
      "url": "https://api.pinreview.one/mcp",
      "headers": { "Authorization": "Bearer ${env:PINREVIEW_TOKEN}" }
    }
  }
}

Set PINREVIEW_TOKEN in your shell profile, then restart Cursor so it picks the variable up. Everyone on the team can commit the same file and use their own token.

Step 2: Check the connection

Open Customize in Cursor's sidebar. pinreview should appear in the list of MCP servers, switched on, with its tools: list_projects, list_tasks, get_task and the rest.

Then open a chat in Agent mode and ask:

List my pinreview projects.

Cursor asks for approval before it calls an MCP tool the first time. Approve it, and the agent answers with your projects, their board columns and the number of open tasks in each.

Step 3: Fix a bug from a client's report

Say the client pinned "Signup button overlaps the footer" on your staging site, and it's task #12 in the Acme project. Start with a diagnosis:

Open task #12 in the Acme project. Look at the screenshot and console
errors, find the component that matches the Element selector, and explain
what's causing the problem. Don't change anything yet.

Here's what happens:

  1. The agent calls get_task. The result includes the page URL, the CSS selector (say main > form button.btn-primary), the browser, the viewport (390 × 844, a phone), the description and the comment thread.
  2. The screenshot comes back too. Cursor attaches returned images to the chat, and if the model you've selected supports images, it looks at them. Pick a model with image support for visual bugs.
  3. The agent searches your codebase for the selector, finds the signup form, and explains the cause: for example, a fixed height on the footer that only breaks at narrow widths.

If the explanation matches the screenshot, ask for the fix:

Fix it. Then add a comment to #12 saying what you changed, and move the
task to Done.

Review the diff before you accept it, as you would for any agent change. Then check the page in your browser at the viewport size from the task. The agent can read the report, but it can't see your staging site.

A routine for a full review round

One bug is easy. A round of thirty pins from a client is where the connection saves real time. This order works well:

  1. Triage on the board first. Close duplicates, set severity and archive the opinions that aren't bugs. Here's how to triage website bugs on a Kanban board.
  2. Work page by page. "List the To Do tasks in Acme where the page URL contains /pricing." Fixes on one page tend to touch the same components.
  3. Diagnose, then fix. For anything unclear, ask for the explanation first and approve the fix second.
  4. Reply to the client from the task. "Add a comment to #12, visible to the reporter, saying it's fixed on staging and asking them to check on their phone." Comments from the agent are internal unless you ask for this.
  5. Keep batches small. Five fixes you can review beat thirty you can't.

For more ready-to-use requests, see 10 prompts to fix website bugs. They work the same way in Cursor.

Approvals: what to allow

Cursor asks before every MCP tool call by default, and it can run allowlisted tools without asking.

The reading tools are safe to allowlist: list_projects, get_project, list_tasks, get_task and export_board. They only read the board.

Keep approval on for the tools that change it, at least until you trust your routine: update_task, add_comment, create_task, archive_task and restore_task. None of them can delete anything; archiving is reversible. But a moved card or a comment to a client is worth a glance before it happens.

Troubleshooting

  • pinreview doesn't appear, or shows an error. Check the JSON is valid and the header reads exactly Authorization: Bearer prt_…, then restart Cursor.
  • The environment variable isn't picked up. Cursor reads it when it starts. Set it, then quit and reopen Cursor.
  • "MCP requires a paid plan for …" The project's organization is on the Free plan. Upgrade under Settings → Billing.
  • The agent ignores the screenshot. The selected model may not support images. Switch models, or ask it to rely on the selector, viewport and console errors.

The MCP docs cover the remaining error messages.

The bottom line

Your client already told pinreview everything a fix needs, even the parts they didn't know they were saying. Connect Cursor, and its agent can go from the pin to the pull request, then tell the client it's done.

New to MCP? Start with what MCP is and why it matters for web teams. Using another editor? There are guides for GitHub Copilot in VS Code and Claude Code.

Start free →

Turn website feedback into action.

Start free