<- All posts

Usero Journal

How to Connect User Feedback to Claude Code and Cursor With a Feedback MCP Server

Will Smith··7 min read

A feedback MCP server lets the agent in your editor read your user feedback directly. Add one config block to Claude Code or Cursor and the agent can pull the open clusters, quote the users word for word, and in one case ask the tool to open the pull request.

The usual way feedback reaches an agent is a paste. You read a few reports in the dashboard, summarise them into the prompt, and the agent fixes the version of the bug you remembered. The exact wording, the one that names the button or the card type, is usually the part that got dropped. An MCP server skips the paste. The agent calls a tool, gets the reports back as data, and works from those.

This guide covers what a feedback MCP server gives you, which tools ship one, how to connect it to each client, and a worked example using Usero’s server, which I build, so the example is the one I can show you end to end.

What MCP Is, in One Paragraph

The Model Context Protocol is a standard way for an AI client to discover and call tools on a server. The client asks the server what tools it has, gets back a list with names, descriptions and argument schemas, and from then on the model can call any of them mid conversation. A remote server is a URL. A local server is a process the client starts. Either way, once it is configured, the agent decides when to call it. You do not.

Which Feedback Tools Have One

As of September 2026, six feedback tools ship an official MCP server, so if you already use one of these you may not need to switch anything:

Plus Usero, on every tier including free. Linear has one too, and it is worth knowing about because a lot of teams keep their feedback in Linear issues. The read side is much the same across all of them: list items, search, get one in full. The differences are in what the agent can do after reading. Most stop at read. A couple let it file an item. One lets it ask for a pull request.

Step 1: Get a Credential

Every remote server needs something in the request that says who you are. For OAuth servers (Sleekplan, Linear) the client opens a browser window on first connect and you approve it. For API key servers, you create a key in the tool and paste it into the config. In Usero that is the profile page, under API keys. Name the key after the machine it will live on, because you will want to revoke exactly that one later. It is shown once.

Step 2: Add the Server to Your Client

Each client has its own config file, and each wants the same three things: a name for the server, the URL, and the authorization header. Here is the Usero server in each of the five clients I have tested. Swap the URL and header format for whichever tool you use; the shape is the same.

Claude Code

claude mcp add --transport http usero https://usero.io/mcp \
  --header "Authorization: Bearer usk_live_..."

Add --scope user to make it available in every project. Check it with claude mcp list, then try claude -p "list my usero clients".

Cursor

Create .cursor/mcp.json in the project, or ~/.cursor/mcp.json for all of them:

{
  "mcpServers": {
    "usero": {
      "url": "https://usero.io/mcp",
      "headers": { "Authorization": "Bearer usk_live_..." }
    }
  }
}

Reload the window after editing. Cursor Settings, then MCP, should show the server with a green dot and a tool count.

Claude Desktop

Settings, then Connectors, then Add custom connector. Paste the URL and add an Authorization header with the Bearer value. Older builds without a header field can use the mcp-remote proxy; the docs page has that config.

Windsurf and VS Code

Windsurf reads ~/.codeium/windsurf/mcp_config.json and calls the URL field serverUrl. VS Code with Copilot agent mode reads .vscode/mcp.json and wants "type": "http" next to the URL. Otherwise identical.

If you commit a project-level config for a team, put the key in an environment variable and reference it from the file. A key in git is a key everyone with the repo has.

Step 3: Ask a Question That Needs the Data

The first prompt should be one the agent cannot answer without calling the server, so you can see the calls happen. "What are users complaining about most right now? Give me the top 3 with a quote each." is a good one. Here is what that did against Usero’s seeded development inbox, from a real claude -p session on 2026-09-04.

The agent called list_clients first, which is what the server instructions tell it to do, and got back three clients with their feedback counts. It picked the one with 73 items. Then list_clusters, which returned six clusters biggest first, each with a severity, an urgency score and up to three verbatim quotes. The top one was "Checkout times out on 3DS card payments", 18 reports, critical, with the quote "after the bank verification popup it just spins forever". Then two get_cluster calls to look inside the next two.

The interesting bit was the answer. Clusters two and three had no quotes, because their members were seed rows that literally read "Seed report N for prioritization matrix testing". The agent said so, gave the one real quote it had, declined to invent the other two, and suggested I check whether the client was a production feed before acting on the rest. Four Usero tool calls, 15 seconds. That is the whole reason to hand the agent the data instead of a summary: it can tell when the data is thin.

Step 4: Close the Loop

Reading is the easy half. What happens next depends on the server. With a read-only server the agent has the quotes and you fix the bug in the repo you have open, which for a developer in Cursor is the normal case and works fine. The difference with Usero is one extra tool, request_ai_pr. The agent passes a feedback id and optional guidance, and Usero clones the connected repo in its own container, writes the change on a branch and opens a normal pull request on GitHub. The caller gets a PR id and can poll get_pr_status. No local checkout, and the agent never holds your GitHub credentials. You review the diff and merge, or not.

When would you use that over a local fix? A PM in Claude Desktop with no checkout. A bug in a repo you are not working in today. Five small fixes you want as five separate PRs while you keep going on something else. It is capped at 5 per key per day so a looping agent cannot burn the month’s PR allowance in an afternoon.

Things That Went Wrong for Me

  • The server shows but has no tools. In Claude Code that is almost always the transport. Run claude mcp list; if it says sse, remove it and re-add with --transport http.
  • Cursor shows a red dot. A trailing comma in the JSON, every time. Reload the window after fixing it.
  • curl returns 406. The streamable HTTP transport requires Accept: application/json, text/event-stream, both types in one header. Clients send it; hand-written curl does not.
  • An empty client list. The key is valid but the account behind it is not a member of anything. A teammate’s key sees the teammate’s clients.

The full list, with the 401 versus 403 cases, is on the Usero MCP docs.

If You Want To Try Usero

The feature page has the ten tools in plain words, the setup snippets and the transcript above in full. It is on every tier including free, and the only metered thing is the PR allowance, which is the same one the dashboard button uses. Sign up, create a key, and ask your editor what users are complaining about.

Frequently Asked Questions

What is a feedback MCP server?

A server that exposes a feedback tool over the Model Context Protocol, so an AI coding agent such as Claude Code or Cursor can call it as a tool. Instead of you pasting reports into a prompt, the agent asks the server for the open feedback, the clusters and the quotes, and works from that. Canny, Featurebase, Productboard, Sleekplan, Pendo, Aha and Usero all run one.

Do I need to install anything locally?

For a remote server, no. You add one config block with the URL and a credential and the client connects over HTTP. Some servers are local and run through npx; those need Node on your machine and a process per client. Check which kind your tool ships before you start.

Which clients support remote MCP servers?

Claude Code, Cursor, Claude Desktop, Windsurf and VS Code with Copilot agent mode all accept a URL plus a header. Codex and most newer agents do too. The config file differs per client but the fields are the same three: a name, the URL, and the authorization header.

Can the agent change things in my feedback tool?

Depends on the server. Most expose read tools only. Some add a create tool for filing feedback from the agent. Usero also exposes request_ai_pr, which asks the tool to open a pull request on the connected repo. Look for tools marked read-only in the tool list; clients that prompt before side effects skip the prompt on those.

Is connecting my feedback to an agent safe?

The credential acts as you, so the agent sees whatever you can see. Create a key per client, name it after the machine it lives on, and revoke it from the tool when you stop using that machine. Keep the key in an environment variable if you commit the config file for a team.

Continue reading

How Frill’s Widget Editor Works: The Preview Is the Production Widget

Inside Frill’s widget editor: a preview that boots the production widget with the real key, sub-550ms on every control, and no mobile preview.

8 min read

How the AnnounceKit Email Digest Works: We Waited for the Draft That Never Came

We enabled the AnnounceKit email digest, set it to send Saturday, and came back on Saturday. No draft, no digest, and nothing in the product showing whether it ran: no draft view, no send history, and a config that froze into upgrade modals mid-trial while staying armed. Plus the weekly digest we built for Usero the same night: a cadence choice instead of a second channel, a draft-preview email with a one-click skip, and an admin page that always shows the next digest and what happened to the last one. Free.

8 min read

How AnnounceKit Boosts Announcements: Four Megaphones, No Front Door

A second night inside a live AnnounceKit trial, this time on boosters and the email digest. The modal booster collects reactions and feedback right where the announcement lands, then fires again on reload at someone who already answered. The digest emails you a draft 12 hours before it sends. And every path a reader could take to become an email subscriber failed in our workspace, so the email side had nobody to send to. Plus what we built the same night: changelog email subscriptions on Usero, with a confirmation link before anyone is subscribed and requesters deduped out of the broadcast. Free on every plan.

9 min read

Build a feedback loop your team actually uses

Usero collects, clusters, and turns user feedback into shipped fixes.

Get started free