npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@makethisbetter/mcp

v1.11.0

Published

MCP server for Make This Better feedback data.

Downloads

601

Readme


Your users report bugs and requests through the widget. AI triage categorizes and prioritizes them. This MCP server lets your coding agent inspect and operate on feedback without copy-pasting anything. Production release stays in the CLI because it needs the deployed Git revision.

User reports a bug  →  AI triage  →  Agent picks it up  →  Commit + ready  →  Deploy + release
     (widget)          (server)      (this MCP server)       (agent + MCP)          (CLI)

Install

No global install needed. Put this in your MCP client's user-level configuration to use the server across projects:

{
  "mcpServers": {
    "makethisbetter": {
      "command": "npx",
      "args": ["-y", "@makethisbetter/mcp@latest"]
    }
  }
}

Setup

1. Authenticate

If you have the CLI installed, just log in — it creates the config for you:

makethisbetter login

Or create the config manually:

mkdir -p ~/.makethisbetter
cat > ~/.makethisbetter/config.json << 'EOF'
{
  "api_token": "YOUR_API_TOKEN",
  "api_url": "https://makethisbetter.dev/api/v1"
}
EOF

Get your API token from makethisbetter.dev > Settings > API Tokens.

If you belong to more than one account, add "account_id": "YOUR_ACCOUNT_ID" — without it the server picks your first account, and projects in the other one come back as "not found". makethisbetter login --account-id YOUR_ACCOUNT_ID writes this field into the same file.

For self-hosted instances, point api_url to your own server (e.g. https://feedback.yourapp.com/api/v1).

2. Add to your editor

Run once to add the server at user scope:

claude mcp add --scope user makethisbetter -- npx -y @makethisbetter/mcp@latest

Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "makethisbetter": {
      "command": "npx",
      "args": ["-y", "@makethisbetter/mcp@latest"]
    }
  }
}

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "makethisbetter": {
      "command": "npx",
      "args": ["-y", "@makethisbetter/mcp@latest"]
    }
  }
}

Run MCP: Open User Configuration from the Command Palette, then add:

{
  "servers": {
    "makethisbetter": {
      "command": "npx",
      "args": ["-y", "@makethisbetter/mcp@latest"]
    }
  }
}
{
  "mcpServers": {
    "makethisbetter": {
      "command": "node",
      "args": ["/path/to/makethisbetter-mcp/dist/index.js"]
    }
  }
}

What your agent can do

Ten tools cover the Feedback lifecycle up to production release.

| Tool | What it does | |------|-------------| | list | Browse one Project's active or archived Feedback, filterable by status, priority, or an AI-selected label. archived: true cannot be combined with status | | detail | Read-only deep dive for active or archived Feedback. Returns server-rendered markdown for reading plus structuredContent with every raw field — selector, console errors, AI triage analysis, the reporter's annotations and breadcrumbs, the ai_clarification_messages exchange, the viewport (screen_width / screen_height / reporter_language), and ai_triage_status / ai_triage_error so a failed triage is not mistaken for one that never ran | | pick | Claim a feedback item. Sets it to in_progress and returns the same markdown + structuredContent context in one call | | respond | Send final user-confirmed text as a One-way Reporter Notice, queue delivery, and close received or in-progress Feedback as responded; the Agent must never generate and send the body autonomously | | archive | Hide one Unclaimed Feedback from active views without changing its workflow status | | restore | Return one archived Feedback to active views | | ready | Save the factual implementation summary and move committed work to pending_release; the calling Agent must first verify the exact Feedback trailer in reachable Git history | | decline | Close as not_planned without notifying the Reporter | | duplicate | Close as duplicate with a same-Project canonical_feedback_id | | reopen | Return closed Feedback to received; available to Account Owners/Admins, Active Pro Members, and assigned Team Members |

The ready tool does not inspect Git. The Agent must verify the exact Feedback: <handle/FB-n> trailer before calling it. release remains CLI-only because it scans the deployed revision and rejects shallow history.

respond, archive, and restore are retry-safe. A successful respond means its delivery record is persisted and queued, not that delivery has completed. Account Owners/Admins and Active Pro Members may perform these operations across the Account; Team Members may do so only for authorised Projects.

Four more tools manage the projects (feedback boards) themselves:

| Tool | What it does | |------|-------------| | project_list | Browse the projects in your account — id, name, domain, feedback visibility, feedback count | | project_show | Read full detail for one project, including its widget API key and board URL. Account Owners/Admins and Active Pro Members also receive the identity-verification signing secret | | project_create | Create a new project. name, handle and domain are all required — the widget only runs on the project's own domain. Available to Account Owners/Admins and Active Pro Members. Returns the widget API key and signing secret | | project_update | Update an existing project's name, domain, or ai_context. Available to Account Owners/Admins and Active Pro Members; the handle is immutable |

How it looks in practice

Here's what actually happens when your agent has this MCP server connected:

You:     "Any new feedback?"

Agent:   Let me check.
         → list(project_handle: "acme", status: "received")
         3 items. acme/FB-42 is a bug — "Login button doesn't work on Safari,
         rage-clicked 5 times." Looks real.

You:     "Fix it."

Agent:   Picking it up.
         → pick(feedback_id: "acme/FB-42")
         Got the full context: Safari 18.5, and the DOM snapshot puts the
         cookie banner on top of the login button. Console error:
         "Cannot read property 'submit' of null."

         The cookie banner has z-index: 9999 and covers the login
         button on viewports under 768px. I'll fix the z-index
         stacking and add a responsive margin.

         *makes the code changes*

         Fixed and tested. I will commit with `Feedback: acme/FB-42`, verify
         that trailer, then call ready with the factual implementation summary.

         → ready(feedback_id: "acme/FB-42",
                 resolution_summary: "Fixed the mobile cookie banner stacking order.")

         The production deployment agent releases it only after deployment.

No dashboard tab-switching. No copy-pasting bug descriptions. Feedback goes in, fix comes out.

Development

git clone https://github.com/makethisbetter/mcp.git
cd mcp
npm install
npm run build
npm test

# Run locally
MAKETHISBETTER_CONFIG=./config.json node dist/index.js

Related

| Package | What | |---------|------| | Make This Better | The platform — dashboard, AI triage, feedback board | | Widget SDK | Collect feedback from your website | | CLI | Manage feedback from the terminal | | Skills | Claude Code slash commands |

License

MIT