A Model Context Protocol (MCP) server that lets AI assistants (Claude Code, Cursor) manage website feedback from Feedbucket.
Beta Software: This project is in beta. Use at your own risk. Please report issues on GitHub.
Before installing this MCP server, make sure you have:
- A Feedbucket account
- Feedbucket installed on your website
- Protected mode enabled (recommended):
- Go to Widget Settings
- Set "Trigger Feedbucket using a query string" to Yes
- Save settings and copy your secret key
npm install -g feedbucket-mcp# For protected projects:
feedbucket-setup https://your-website.com YOUR_FEEDBUCKET_SECRET
# For public projects:
feedbucket-setup https://your-website.comThe setup script automatically:
- Extracts the project ID from your website HTML
- Fetches the private key from Feedbucket API
- Configures Claude Code and Cursor
Restart Claude Code or Cursor to load the new MCP server.
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"
If you prefer to clone the repository:
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| 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 |
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
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.
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
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)
Mark a feedback item as resolved:
Parameters:
- feedback_id (number, required): The feedback ID
# 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# 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# Claude Code only
npm run setup -- https://your-website.com YOUR_SECRET --claude
# Cursor only
npm run setup -- https://your-website.com YOUR_SECRET --cursornpm run setup -- https://your-website.com YOUR_SECRET --extractnpm run setup -- --helpIf you prefer to configure manually:
Add to .mcp.json in your project root:
{
"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:
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.jsAdd to .cursor/mcp.json in your project root:
{
"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"
}
}
}
}| 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.
# 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 buildThis 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
| 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 |
MIT