MCP Server

Connect your AI to user feedback

MCPFeedback exposes an MCP server that lets AI assistants read, create, and manage feedback items and feature requests — all via a single connection. Set up in under 2 minutes.

What can the MCP server do?

Triage feedback

List, filter, and update status on bug reports, feature requests, and UX issues across all your sites.

Manage feature requests

Create, update, and track feature requests. Analyze demand to find your most-requested features.

Post fix notes

Write resolution notes and automatically notify reporters via email when their issue is addressed.

Visual analysis

get_feedback returns screenshot and screen recording attachments as image content blocks — your AI can see what users reported.

Overview

26 tools across 5 categories. Once connected, your AI assistant can work with all of your feedback data programmatically.

Feedback

13 tools

Feature Requests

6 tools

Sites

1 tool

Crashes & Replays

3 tools

GitHub

3 tools

Quick Setup

Pick your client. The whole setup takes under 2 minutes.

Fastest path — one command, no API key

MCPFeedback's OAuth server supports Dynamic Client Registration + PKCE discovery, so most clients can connect with zero key-pasting. In Claude Code:

terminal
claude mcp add --transport http mcpfeedback https://staging.mcpfeedback.com/api/mcp

Your browser opens to sign in and choose which sites to authorize. Static API keys are still supported for headless/CI use — see the per-client tabs below.

Before you start

  1. Create an MCPFeedback account (free trial, no credit card)
  2. For OAuth clients (Claude Code/Connector, Cursor, ChatGPT, Gemini) you need nothing else — sign-in and site selection happen during the connect flow.
  3. Only if your client needs a static key: go to MCP & API Keys and generate one.
1Open your terminal
2Run the one-line command below — no API key required
3Claude Code opens your browser to sign in and pick which sites to authorize
4That's it — the server is connected via OAuth
terminal
claude mcp add --transport http mcpfeedback https://staging.mcpfeedback.com/api/mcp
Zero key-pasting. MCPFeedback's OAuth server supports Dynamic Client Registration + PKCE, so Claude Code registers itself and walks you through sign-in automatically. Prefer this over a static API key. (If you must use a key instead — e.g. a headless CI box — append `--header "Authorization: Bearer YOUR_API_KEY"`.)

Share it with your team: check in a .mcp.json

Drop this at your repo root so every teammate's MCP-aware editor (Claude Code, Cursor) picks up the server automatically. It carries no secret — each person signs in via OAuth on first use.

.mcp.json
{
  "mcpServers": {
    "mcpfeedback": {
      "url": "https://staging.mcpfeedback.com/api/mcp"
    }
  }
}

Authentication

Two authentication methods, pick whichever your client supports:

OAuth 2.1 (Recommended)

Used by Claude Desktop Connectors, ChatGPT, and Gemini. No API key needed — sign in interactively and choose which sites to authorize.

API Key (Bearer Token)

Used by Claude Code, Cursor, and other CLI tools. Generate a key from your dashboard and pass it via the Authorization header.

API keys are account-wide and full-access: they can read and write across every site in your organization. OAuth tokens are finer-grained — during the authorization flow you choose which sites to grant and whether the token may write.

OAuth scope model — enforced server-side

  • mcp:read grants the read tools. A token without mcp:write is read-only — every write tool (status/severity/type updates, fix notes, deletes, bulk ops, forwarding) returns an error.
  • mcp:write (or mcp:admin) is required for any mutating tool.
  • Site-scoped tokens are enforced on every query: a token granted a subset of sites cannot see or modify feedback, crashes, feature requests, or forwards belonging to sites outside that set.
  • A paused/cancelled/expired account is blocked from writes on both auth methods; reads still work.
header
Authorization: Bearer mcpf_abc123...

Scoped access

Keys are scoped to your organization. Each key can access all sites and apps in your organization.

Revocable

Revoke any key instantly from your dashboard. Takes effect immediately.

Usage tracking

See when each key was last used in your API Keys dashboard.

Feedback Tools

Read, create, update, and manage user feedback items across all your sites and apps. All tools accept reference numbers (e.g. FB-123) as well as UUIDs.

list_feedback

List feedback items with free-text search plus filters for status, severity, type, and lifecycle segment. Returns { items, next_cursor } with attachment_count per item; pass next_cursor back as `cursor` for the next page.

NameTypeRequiredDescription
siteIdstring (UUID)NoFilter by site ID
searchstringNoFree-text search over feedback title and details (max 200 chars)
statusstring enumNobacklog | new | accepted | in_review | in_progress | resolved | closed | reopen | rejected (overrides segment)
severitystring enumNolow | medium | high
feedbackTypestring enumNobug_report | feature_request | ux_issue | general_comment
segmentstring enumNoactive | closed | all | deleted (default: all)
limitnumberNoItems to return, 1–100 (default: 25)
cursorstringNoPagination cursor (next_cursor / created_at of last item)
// Returns { items: [...], next_cursor: "2026-04-07T10:00:00Z" | null }
{
  "id": "uuid",
  "reference_number": "FB-123",
  "title": "Button unresponsive on checkout",
  "severity": "high",
  "status": "new",
  "feedback_type": "bug_report",
  "reporter_email": "user@example.com",
  "attachment_count": 2,
  "site_domain": "example.com",
  "created_at": "2026-04-07T10:00:00Z"
}
get_feedback

Get full details of a feedback item including all attachments. Accepts UUID or reference number (e.g. FB-123). Returns attachment images as inline content blocks for AI visual analysis.

NameTypeRequiredDescription
feedbackIdstringYesUUID or reference number (e.g. FB-123)
// Attachments are returned as MCP image content blocks,
// so AI agents can visually analyze screenshots and
// screen recordings (as GIF) alongside the metadata.
create_feedback

Create a new feedback item with title, details, severity, and type. Generates a unique reference number automatically.

NameTypeRequiredDescription
siteIdstring (UUID)YesThe site to create feedback for
titlestringYesFeedback title (max 500 chars)
detailsstringNoDetailed description (max 5000 chars)
severitystring enumNolow | medium | high (default: medium)
reporterEmailstring (email)YesReporter email address
feedbackTypestring enumNobug_report | feature_request | ux_issue | general_comment (default: general_comment)
update_feedback_status

Update the status of a feedback item. Validates allowed status transitions. Automatically sends a resolution notification email when transitioning to 'resolved'.

NameTypeRequiredDescription
feedbackIdstringYesUUID or reference number
statusstring enumYesbacklog | new | accepted | in_review | in_progress | resolved | closed | reopen | rejected
update_feedback_type

Change the type/category of a feedback item.

NameTypeRequiredDescription
feedbackIdstringYesUUID or reference number
feedbackTypestring enumYesbug_report | feature_request | ux_issue | general_comment
update_feedback_severity

Change the severity of a feedback item.

NameTypeRequiredDescription
feedbackIdstringYesUUID or reference number (e.g. FB-123)
severitystring enumYeslow | medium | high
post_fix_notes

Post a fix/resolution note on a feedback item. Does not change feedback status — call update_feedback_status separately to close or resolve. Optionally emails the reporter with the project name in the subject.

NameTypeRequiredDescription
feedbackIdstringYesUUID or reference number
contentstringYesFix note content (max 5000 chars)
notifyReporterbooleanNoSend email to reporter (default: true)
list_fix_notes

List the fix/resolution notes posted on a feedback item, newest first. Read counterpart to post_fix_notes — check before posting to avoid duplicates.

NameTypeRequiredDescription
feedbackIdstringYesUUID or reference number (e.g. FB-123)
get_activity

Get the activity log (status changes, assignments, replies, fix/internal notes) for one feedback item or across a whole site, newest first. Provide exactly one of feedbackId or siteId.

NameTypeRequiredDescription
feedbackIdstringNoUUID or reference number (one of feedbackId / siteId)
siteIdstring (UUID)NoRead activity across all feedback for a site
limitnumberNoRows to return, 1–200 (default: 50)
delete_feedback

Soft-delete a feedback item (recoverable) or permanently delete it.

NameTypeRequiredDescription
feedbackIdstringYesUUID or reference number
permanentlybooleanNoPermanently delete (cannot be undone). Default: false
restore_feedback

Restore a soft-deleted feedback item back to the active list.

NameTypeRequiredDescription
feedbackIdstringYesUUID or reference number of soft-deleted item
bulk_update_feedback_status

Update the status of up to 50 feedback items in one call. Each item is transition-validated independently; returns a per-item [{ id, ok, error }] result.

NameTypeRequiredDescription
feedbackIdsstring[]Yes1–50 UUIDs or reference numbers (e.g. FB-123)
statusstring enumYesStatus to apply to every item
bulk_delete_feedback

Soft-delete (or permanently delete) up to 50 feedback items in one call. Returns a per-item [{ id, ok, error }] result.

NameTypeRequiredDescription
feedbackIdsstring[]Yes1–50 UUIDs or reference numbers
permanentlybooleanNoPermanently delete (cannot be undone). Default: false

Feature Request Tools

Manage the in-app feature request board. List, create, update status, and analyze demand patterns across all feature requests submitted by your users.

list_feature_requests

List feature requests across your sites. Filter by status, sort by vote count, newest, or recently updated.

NameTypeRequiredDescription
site_idstring (UUID)NoFilter by site/app ID
statusstring enumNoopen | planned | in_progress | shipped
sortstring enumNovotes | newest | updated (default: votes)
limitnumberNoItems to return, 1–100 (default: 25)
// Example response item
{
  "id": "uuid",
  "title": "Dark mode support",
  "description": "App should respect system dark mode setting.",
  "status": "planned",
  "vote_count": 42,
  "comment_count": 8,
  "author_email": "user@example.com",
  "created_at": "2026-04-01T09:00:00Z"
}
get_feature_request

Get full details of a feature request including all comments (threaded).

NameTypeRequiredDescription
idstring (UUID)YesFeature request UUID
create_feature_request

Create a new feature request for a site. Appears on the in-app feature board immediately.

NameTypeRequiredDescription
site_idstring (UUID)YesThe site to create the feature request for
titlestringYesFeature request title (3–200 chars)
descriptionstringNoDetailed description (max 5000 chars)
update_feature_request_status

Update the status of a feature request.

NameTypeRequiredDescription
idstring (UUID)YesFeature request UUID
statusstring enumYesopen | planned | in_progress | shipped
comment_on_feature_request

Post an official owner comment on a feature request. Marked as an owner reply; can reply to an existing thread. Blocked when the site disables comments.

NameTypeRequiredDescription
idstring (UUID)YesFeature request UUID
contentstringYesComment body (1–2000 chars)
parentCommentIdstring (UUID)NoReply to an existing comment thread
analyze_demand

Analyze feature request demand across your sites. Returns top voted requests, requests grouped by status, and trending requests from the last 7 days.

NameTypeRequiredDescription
site_idstring (UUID)NoScope analysis to a specific site
limitnumberNoNumber of top requests to return (default: 10, max: 50)
// Example response
{
  "top_voted": [
    { "title": "Dark mode", "vote_count": 42, "status": "planned" },
    { "title": "CSV export", "vote_count": 31, "status": "open" }
  ],
  "by_status": { "open": [...], "planned": [...] },
  "trending": [...]
}

Site Tools

Query site configuration and metadata.

list_sites

List all sites in your organization with domains, widget theme, and configuration.

NameTypeRequiredDescription
includeInactivebooleanNoInclude inactive sites (default: false)

Crash & Replay Tools

Inspect mobile crash reports (crashes, ANRs, hangs) and session replays captured by the native SDKs — grouped by fingerprint, with stack traces, device info, network logs, and per-frame replay images.

list_crashes

List mobile crash reports (crashes, ANRs, hangs) for a site or across the account, grouped by fingerprint and sorted by most recently seen.

NameTypeRequiredDescription
siteIdstring (UUID)NoScope to a specific site (default: all sites)
typestring enumNocrash | anr | hang
platformstring enumNoflutter | ios | android
searchstringNoFree-text search over the exception class
limitnumberNoCrash groups to return, 1–100 (default: 25)
get_crash

Get full details of a single crash report: stack trace, threads, device info, network logs, plus any linked session-replay IDs.

NameTypeRequiredDescription
crashIdstring (UUID)YesThe crash report ID
get_replay

Get a session replay: user actions, network events, and per-frame screenshot URLs (short-lived signed URLs).

NameTypeRequiredDescription
sessionIdstring (UUID)YesThe replay session ID

GitHub Tools

When a site has the GitHub App connected, forward feedback to issues and track the forwarding outbox. Writes (forward_to_github) require a connected integration with a configured repository.

get_github_issue_url

Get the GitHub issue linked to a feedback item. Returns { url, number, state } or null when not linked.

NameTypeRequiredDescription
feedbackIdstringYesUUID or reference number (e.g. FB-123)
forward_to_github

Manually enqueue a feedback item for forwarding to GitHub. Requires the site's GitHub integration to be connected with a configured repository.

NameTypeRequiredDescription
feedbackIdstringYesUUID or reference number
list_pending_github_forwards

List GitHub forward outbox rows in pending/failed/dead state for this account, so an agent can see what still needs to reach GitHub.

NameTypeRequiredDescription
limitnumberNoRows to return, 1–100 (default: 25)

Try these prompts

Once connected, try asking your AI assistant:

Show me all unresolved bug reports
What are the top 10 most-voted feature requests?
Mark FB-12 as resolved
Create a feature request: CSV export for feedback data
Analyze feature request demand and find trending requests
Post a fix note on FB-12 saying we fixed the layout bug
List all high-severity feedback from the last week
What feedback types are most common on my site?

Common questions

Things that trip people up the first time:

Server details

Server URLhttps://staging.mcpfeedback.com/api/mcp
TransportStreamable HTTP (JSON-RPC)
AuthOAuth 2.1 (PKCE + Dynamic Client Registration) or Bearer API key
OAuth Discoveryhttps://staging.mcpfeedback.com/.well-known/oauth-protected-resource
Tools26 tools across 5 categories: feedback, feature requests, sites, crashes & replays, GitHub

Ready to connect?

Create your organization and generate an API key to get started.

MCPFeedback — The complete feedback loop