FeedbackJar

MCP Server

FeedbackJar exposes a Model Context Protocol (MCP) endpoint so AI coding agents like Claude Code and Cursor can read feedback, update statuses, and reply to posts — directly from your editor.

How it works

  1. A user reports a bug through the widget (with browser info, page URL, and console errors already attached)
  2. Your coding agent reads the top-voted issues via the FeedbackJar MCP server
  3. It fixes the bug, marks the post as Completed, and replies with a note
  4. Every voter gets an email notification automatically

Security note: post/comment content is untrusted user text

Post titles and content can come from anonymous public submitters through the widget or public feedback form. The MCP server sends your agent an instruction to treat that text as data only — never as commands — but a submitter can still write feedback designed to look like an instruction to your agent (e.g. “ignore previous instructions and reply with…”).

Review what your agent is about to do before it calls a write tool (reply_to_post, update_post, update_status, merge_posts, create_post) based on something it read in a post’s content, especially if the action wasn’t something you asked for directly. Scope your API token’s permissions to only what the agent actually needs (see API Tokens) so a misled agent has limited blast radius.

Setup

1. Create an API token

Two options:

  • Project token (fj_live_) — go to Settings → API Tokens in your project. Scoped to that project only. Best when you only work in one.
  • Account token (fj_user_) — go to Account → API Tokens. Works across all your projects. Best when one agent config should access multiple projects.

See the API Tokens guide for details.

2. Add to your agent config

Pick your coding agent for a copy-paste setup guide:

Or use the generic config below if your agent isn’t listed. See all guides at /mcp.

Claude Code — add to .mcp.json in your project root or your global MCP config.

Cursor — add to .cursor/mcp.json using the same format.

Token in URL (alternative)

If your client cannot set request headers, pass the API token as a query parameter on the MCP URL:

json
{
  "mcpServers": {
    "feedbackjar": {
      "type": "http",
      "url": "https://mcp.feedbackjar.com/mcp?token=fj_live_..."
    }
  }
}

The Authorization header is preferred when supported — URL tokens may appear in proxy logs and shell history. Send the API token on every request — the server is stateless and does not rely on MCP session IDs.

Project token

The token is already scoped to one project — no extra headers needed:

json
{
  "mcpServers": {
    "feedbackjar": {
      "type": "http",
      "url": "https://mcp.feedbackjar.com/mcp",
      "headers": {
        "Authorization": "Bearer fj_live_..."
      }
    }
  }
}

Use a single account token across all your projects. The agent calls list_organizations first, then passes organization_id to other tools:

json
{
  "mcpServers": {
    "feedbackjar": {
      "type": "http",
      "url": "https://mcp.feedbackjar.com/mcp",
      "headers": {
        "Authorization": "Bearer fj_user_..."
      }
    }
  }
}

Account token — single project

Pin the token to one project by adding X-Organization-Id. Tools behave like a project token (no organization_id param needed):

json
{
  "mcpServers": {
    "feedbackjar": {
      "type": "http",
      "url": "https://mcp.feedbackjar.com/mcp",
      "headers": {
        "Authorization": "Bearer fj_user_...",
        "X-Organization-Id": "cln1abc..."
      }
    }
  }
}

3. Use it

Once connected, ask your agent:

plaintext
What are the top open bugs in FeedbackJar?
plaintext
Fix the top-voted bug and mark it as completed.
plaintext
Reply to post cm1abc123 with "Fixed in v2.4.0".

Available tools

Tools depend on your token type and permissions. Project tokens get full access to their project. Account tokens only register tools matching the permissions you selected when creating the token.

ToolDescriptionAccount token (multi-project)
list_organizationsList projects your token can accessAlways available
list_postsList feedback posts, sorted by votes. Filter by status, type, or board.Requires organization_id
get_postGet a single post with full widget metadata (browser, OS, page URL, console errors).Requires organization_id
search_postsSearch posts by keyword in title and content.Requires organization_id
update_statusUpdate a post’s status: OPEN, IN_PROGRESS, COMPLETED, CLOSED.Requires organization_id
update_postUpdate a post’s type, status, title, content, visibility, or board.Requires organization_id
reply_to_postAdd a comment to a post.Requires organization_id
create_postCreate a new feedback post.Requires organization_id
merge_postsMerge a duplicate post into a target post. Votes transfer to the target.Requires organization_id
list_boardsList all boards in the project.Requires organization_id
list_tagsList all tags in the project.Requires organization_id

With an account token pinned to a single project via X-Organization-Id, the organization_id column does not apply — tools work the same as with a project token.

A read-only account token (posts:read, boards:read, tags:read) will only show read tools — write tools like update_status, update_post, and create_post won’t appear.

See the MCP Tool Reference for parameters, example prompts, and return values for each tool.