MCP server for Claude Code and Cursor
Usero is a remote MCP server. Add one config block to Claude Code, Cursor, Claude Desktop, Windsurf or VS Code and the agent can search your feedback inbox, pull clusters with verbatim quotes, file feedback, and call request_ai_pr to have Usero write and open a pull request server-side.
The feedback lives in one tab and the code lives in another. Every fix starts with a copy-paste from the inbox into the editor, and most of the time the paste never happens.
A developer working in Claude Code or Cursor asks the agent to fix something, and the agent has the repo, the tests and the terminal but not the ten reports that describe the bug. So the developer reads the reports in the dashboard, summarises them into a prompt, loses the exact wording, and the agent fixes the version of the problem the developer remembered rather than the one the users described. Canny, Featurebase, Productboard, Sleekplan, Pendo and Aha all ship MCP servers now, and the read side is table stakes. What none of them do is let the tool call open the pull request. The agent can read the complaint but cannot act on it without leaving the editor, so the loop from "a user said this" to "a branch exists" still has a human copying text across windows in the middle.
How it works
Disclosure: I build Usero, and I use this daily from Claude Code. The server runs at usero.io/mcp on the same Worker and database as the dashboard, authenticated with the same API key you use for the REST API. Ten tools. list_clients tells the agent which products it can see. search_feedback filters the inbox by query, status, source, environment, date and whether a screenshot is attached. get_feedback returns one report in full with the quotes, the sender, screenshots, the session replay link and any PR. list_clusters returns the clusters biggest first, each with severity, urgency and up to three verbatim sample quotes. get_cluster returns the members. create_feedback files a report from the agent. list_forms and list_form_responses read survey answers. get_pr_status checks a PR. And request_ai_pr asks Usero to write and open the pull request on the connected repo, server-side, so the agent needs no local checkout and your GitHub credentials never leave Usero. Two resources let an agent pin a client's clusters or a single report into context, and three prompt templates (triage_inbox, fix_top_complaint, write_changelog_from_feedback) cover the common asks. The server makes no LLM calls of its own. It is deterministic plumbing over your data, and the agent on your side does the thinking.
list_clusters returns every open cluster with its size, severity, urgency score and up to three verbatim quotes. The agent works from "after the bank verification popup it just spins forever", which names the code path, and not from a summary that dropped it.
The agent calls one tool with a feedback id and optional guidance. Usero clones the 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 back. Your CI runs, you review, you merge. Nothing merges on its own.
There is nothing to install. Claude Code, Cursor, Claude Desktop, Windsurf and VS Code Copilot all take the same URL and header. Any other client that speaks MCP over streamable HTTP works too. Fixes and new tools ship on our side, so the config block you paste today keeps working.
Clients that prompt before side effects skip the prompt on the eight read tools. create_feedback and request_ai_pr are the only writes, and request_ai_pr is capped at 5 per key per day so a looping agent cannot burn your PR allowance. Tool calls overall are limited to 120 per key per minute.



Create an API key on your profile page, then pick your client. Claude Code is one command (single quotes keep the key in your shell profile instead of the config file; Claude Code expands it when it connects), Cursor is one JSON file, and the Claude Code plugin bundles the server config with a skill that teaches the agent when to reach for it.
export USERO_API_KEY=usk_live_... # in your shell profile
claude mcp add --transport http usero https://usero.io/mcp \
--header 'Authorization: Bearer ${USERO_API_KEY}'{
"mcpServers": {
"usero": {
"url": "https://usero.io/mcp",
"headers": {
"Authorization": "Bearer usk_live_..."
}
}
}
}/plugin marketplace add usero-feedback/claude-plugin
/plugin install usero
# then: /usero:triage_inboxA Claude Code session against the live Usero inbox, 376 items, the one we use to run Usero itself. The question was one line. The agent made five Usero tool calls, took 45 seconds, and its verdict was on our clustering, not just the bugs.
What are users complaining about most in Usero right now? Give me the top 3 with a quote each, and tell me whether the biggest cluster is one bug or several.
125 clients (list redacted). Picked "Usero prod", 376 feedback items.
10 clusters, biggest first. #1 "Compact Header Layout Request", 20 reports, feature request, severity low. Further down: "Container Instance Limit Errors", 13 reports, bug, severity high, urgency 88, sentiment -0.9.
Three calls, one per high-severity bug cluster. "Container Instance Limit Errors", 13 members: "Container returned 500: Maximum number of running container instances exceeded...", "PR generation timed out after 15 minutes...". "Analytics Export Functionality Failure", 12 members: "Export fails", "Tried to search feedback but got unexpected error". "Get Started Button Navigation Bug", 9 members.
Is the biggest cluster one bug or several? Several, in every one of these, once you look at the individual members, the AI clustering has lumped together loosely-related complaints rather than repeats of one root cause: - Cluster #1 mixes the actual container-limit 500 error with unrelated things: PR generation timeouts, a stuck/slow PR revision flow, a duplicated "Creating pull request..." message, a 404-instead-of-login-redirect bug, and a mobile modal going off-screen. - Cluster #2 mixes the export failure with a search error, wrong "unresolved" counts, a resolved-count graph stuck at 0, duplicate notification emails, and one user pointing out clusters "aren't really clusters when they each have 1 item" (worth noting given what you're looking at right now). - Cluster #3 mixes the landing-page button bug with several unrelated mobile/overflow layout complaints (text/buttons running off screen, keyboard hiding the send button). So treat these cluster titles as themes, not single tickets, each one likely needs to be split into 3-5 discrete fixes rather than one PR.
The honest objection
Often you would not, and the tools are built for that. If the fix is in the code you have open, let the agent read the cluster with get_cluster and patch it locally; that is the common case for a developer in Cursor. request_ai_pr is for the other cases: a PM or founder in Claude Desktop with no checkout, a bug in a repo you are not working in today, or a batch of small fixes you want opened as separate PRs while you keep working. It runs in Usero's container with the Usero GitHub App, so your own GitHub credentials are never handed to the agent, and the PR body links back to the feedback that asked for it. Both paths end in a normal pull request you review. Pick per fix.
FAQ
Every MCP client on the docs page accepts a static header today, and not all of them finish an OAuth flow, so a key was the shortest path to working everywhere. Keys are created and revoked one at a time on your profile page: make one per client, name it after the machine, and revoke exactly that one when the machine goes. Usero stores the SHA-256 hash of the key plus its first 12 characters for display. On each request the key in the header is hashed and matched against that hash; the raw key is never written anywhere. The key acts as you, so the agent sees the clients you are a member of and nothing more. OAuth, with per-client consent and expiring tokens, is the planned next step.
Measured against the live server on 2026-09-05 with cl100k tokenisation, so approximate: about 300 tokens in Claude Code, about 3,200 in Cursor or Claude Desktop. Claude Code 2.1 defers MCP tool definitions and loads only the tool names and the server instructions at session start, which for 13 tools is 43 tokens of names plus 252 of instructions. Clients that load every schema up front take the whole tools/list response, 2,957 tokens of JSON, plus the instructions.
Claude Code, Cursor, Claude Desktop, Windsurf and VS Code with GitHub Copilot agent mode have tested config snippets on the docs page. Anything that speaks MCP over streamable HTTP works, since the server is stateless JSON-RPC over POST with no session id and no SSE. Codex and other newer clients that accept a remote URL plus a header connect the same way.
No. The MCP server is included on every tier, including the free one. Pull requests opened through request_ai_pr count against the same monthly PR allowance as the dashboard button and the REST API, and nothing else is metered.
120 tool calls per API key per minute. Past that, the tool returns an error naming the seconds to wait. request_ai_pr is capped at 5 per key per UTC day. search_feedback returns at most 50 items per call and get_cluster returns 50 members by default, 200 at most, with a flag telling the agent when the list was truncated.
Resolve or delete feedback, change client settings, connect integrations, invite members, touch billing, or see clients you are not a member of. Those stay in the dashboard on purpose. If your workflow needs one of them from an agent, tell us through the contact page.
No. The MCP server makes no LLM calls. It returns your data to the agent you connected, and that agent does the reading. The only model Usero runs on your behalf is the one that writes the pull request when you call request_ai_pr, which is the same path as the dashboard button.
Tools are never removed inside 90 days of being announced. A tool on its way out gets "deprecated" in its description first. The docs page carries a changelog table, and the Claude Code plugin version bumps on every tool change.
Free tier. No credit card. Two-minute install. The AI opens the PR, you merge it.
Keep reading