Skip to main content
Glama
README.md
# Feedbucket MCP Server

A Model Context Protocol (MCP) server that lets AI assistants (Claude Code, Cursor) manage website feedback from [Feedbucket](https://feedbucket.app).

> **Beta Software**: This project is in beta. Use at your own risk. Please report issues on [GitHub](https://github.com/swiftcomza/feedbucket-mcp/issues).

## Prerequisites

Before installing this MCP server, make sure you have:

1. A [Feedbucket](https://feedbucket.app) account
2. Feedbucket installed on your website
3. Protected mode enabled (recommended):
   - Go to [Widget Settings](https://dashboard.feedbucket.app/projects/YOUR_PROJECT_ID/settings/widget)
   - Set "Trigger Feedbucket using a query string" to **Yes**
   - Save settings and copy your secret key

## Quick Start

### 1. Install from npm

```bash
npm install -g feedbucket-mcp
```

### 2. Run the setup wizard

```bash
# For protected projects:
feedbucket-setup https://your-website.com YOUR_FEEDBUCKET_SECRET

# For public projects:
feedbucket-setup https://your-website.com
```

The setup script automatically:
- Extracts the project ID from your website HTML
- Fetches the private key from Feedbucket API
- Configures Claude Code and Cursor

### 3. Restart your IDE

Restart Claude Code or Cursor to load the new MCP server.

### 4. Start using it

Ask your AI assistant:
- "Show me unresolved feedback from Feedbucket"
- "What's the feedback summary for this project?"
- "Add a comment to feedback #12345 saying we've fixed this"

---

## Alternative: Clone from GitHub

If you prefer to clone the repository:

```bash
git clone https://github.com/swiftcomza/feedbucket-mcp.git
cd feedbucket-mcp
npm install && npm run build
npm run setup -- https://your-website.com YOUR_FEEDBUCKET_SECRET
```

---

## Available Tools

| Tool | Description |
|------|-------------|
| `feedback_list` | List and filter feedback with smart summarization |
| `feedback_get` | Get full details of a specific feedback item |
| `feedback_stats` | Quick project overview (total, resolved, by type, recent activity) |
| `feedback_comment` | Add comments to feedback items |
| `feedback_resolve` | Mark feedback as resolved |
| `api_status` | Check API connection status |

### feedback_list

List feedback with powerful filtering:

```
Parameters:
- resolved (boolean): Filter by resolution status
- limit (number): Items to retrieve (default: 10, max: 50)
- offset (number): Skip items for pagination
- summary (boolean): Return condensed format (default: true)
- page_filter (string): Filter by page URL (partial match)
- reporter_filter (string): Filter by reporter name
- feedback_type (string): 'screenshot', 'video', or 'text'
- created_after (string): ISO date filter
```

### feedback_get

Get complete details for a single feedback item:

```
Parameters:
- feedback_id (number, required): The feedback ID
```

Returns full text, all comments, attachments, browser/device info, and console logs.

### feedback_stats

Get a quick project health overview:

```
Returns:
- Total feedback count
- Resolved vs unresolved breakdown
- Feedback by type (screenshot/video/text)
- Recent activity (7 days, 30 days)
- Top 5 pages with most feedback
```

### feedback_comment

Add a comment to a feedback item:

```
Parameters:
- feedback_id (number, required): The feedback ID
- comment (string, required): Comment text
- reporter_name (string): Defaults to "Claude AI Assistant"
- reporter_email (string): Defaults to "claude@anthropic.com"
- resolve (boolean): Also resolve the feedback (default: false)
```

### feedback_resolve

Mark a feedback item as resolved:

```
Parameters:
- feedback_id (number, required): The feedback ID
```

---

## Setup Options

### Automatic Setup (recommended)

```bash
# Protected project - provide URL and secret
npm run setup -- https://your-website.com YOUR_SECRET

# Public project - just the URL
npm run setup -- https://your-website.com
```

### Manual Project ID (if auto-detection fails)

```bash
# With project ID only (public)
npm run setup -- --project-id tMbUCuQ4FeFJVViMEPlb

# With project ID and API key (protected)
npm run setup -- --project-id tMbUCuQ4FeFJVViMEPlb --api-key YOUR_SECRET
```

### Configure only one IDE

```bash
# Claude Code only
npm run setup -- https://your-website.com YOUR_SECRET --claude

# Cursor only
npm run setup -- https://your-website.com YOUR_SECRET --cursor
```

### Extract credentials without configuring

```bash
npm run setup -- https://your-website.com YOUR_SECRET --extract
```

### Full help

```bash
npm run setup -- --help
```

---

## Manual Configuration

If you prefer to configure manually:

### Claude Code

Add to `.mcp.json` in your project root:

```json
{
  "mcpServers": {
    "feedbucket": {
      "command": "node",
      "args": ["/path/to/feedbucket-mcp/dist/index.js"],
      "env": {
        "FEEDBUCKET_PROJECT_ID": "your-project-id",
        "FEEDBUCKET_PRIVATE_KEY": "your-private-key",
        "FEEDBUCKET_API_KEY": "your-api-key"
      }
    }
  }
}
```

Or use the CLI:

```bash
claude mcp add feedbucket \
  -e FEEDBUCKET_PROJECT_ID="your-project-id" \
  -e FEEDBUCKET_PRIVATE_KEY="your-private-key" \
  -e FEEDBUCKET_API_KEY="your-api-key" \
  -- node /path/to/feedbucket-mcp/dist/index.js
```

### Cursor

Add to `.cursor/mcp.json` in your project root:

```json
{
  "mcpServers": {
    "feedbucket": {
      "command": "node",
      "args": ["/path/to/feedbucket-mcp/dist/index.js"],
      "env": {
        "FEEDBUCKET_PROJECT_ID": "your-project-id",
        "FEEDBUCKET_PRIVATE_KEY": "your-private-key",
        "FEEDBUCKET_API_KEY": "your-api-key"
      }
    }
  }
}
```

---

## Environment Variables

| Variable | Required | Description |
|----------|----------|-------------|
| `FEEDBUCKET_PROJECT_ID` | Yes | Project ID from the `data-feedbucket` attribute |
| `FEEDBUCKET_PRIVATE_KEY` | Yes | Private key for commenting/resolving (auto-fetched by setup) |
| `FEEDBUCKET_API_KEY` | No* | API key for protected projects (`feedbucketKey` from URL) |

*Required if your project uses query string protection.

---

## Development

```bash
# Install dependencies
npm install

# Development mode (with hot reload)
npm run dev

# Type checking
npm run typecheck

# Linting
npm run lint

# Build for production
npm run build
```

---

## Architecture

This MCP server was reverse-engineered from the Feedbucket browser widget to provide:

- **Smart Summarization**: Optimizes large datasets for AI consumption
- **Client-side Filtering**: Reduces API calls by filtering locally
- **Full TypeScript**: Strict mode with comprehensive types
- **Production Ready**: Proper error handling and validation

### API Endpoints Used

| Method | Endpoint | Purpose |
|--------|----------|---------|
| GET | `/projects/{id}` | Fetch project with all feedback |
| POST | `/feedback/{id}/comments` | Add comment to feedback |
| PUT | `/feedback/{id}/resolve` | Mark feedback as resolved |

---

## License

MIT

TDQS

A3.7/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: api_status checks connectivity, feedback_comment adds comments, feedback_get retrieves details, feedback_list fetches items, feedback_resolve marks items as resolved, and feedback_stats provides summaries. The tools target different actions on the feedback resource, making misselection unlikely.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with 'feedback_' prefix for feedback-related operations (e.g., feedback_comment, feedback_get) and 'api_' for the status check. This predictable naming scheme enhances readability and agent usability.

Tool Count5/5

With 6 tools, the server is well-scoped for managing feedback in a Feedbucket project. Each tool earns its place by covering essential operations like listing, getting, commenting, resolving, and checking stats, plus an API status tool, without being overwhelming or insufficient.

Completeness5/5

The tool set provides complete CRUD/lifecycle coverage for feedback management: list (feedback_list), read (feedback_get), update (feedback_comment, feedback_resolve), and delete is implied through resolution. Additional tools for stats and API status enhance functionality, leaving no obvious gaps for agents to handle feedback workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues