Skip to main content
Glama
featurepulse

featurepulse-mcp

Official
by featurepulse
README.md
# FeaturePulse MCP Server

A Model Context Protocol (MCP) server for [FeaturePulse](https://featurepul.se) feedback management. Connect FeaturePulse to any MCP-compatible AI client to query feature requests, analyze MRR impact, and manage your product roadmap through natural language.

## Features

- **5 Tools** — Feature requests, stats, search, grouping, and status updates
- **MRR Data** — Every request includes revenue impact from paying customers
- **Search & Filter** — By status, priority, votes, or free-text search
- **Write Access** — Update feature request status and priority directly

## Prerequisites

- **Node.js** v18+
- **MCP Client** — Claude Code, Claude Desktop, Cursor, Windsurf, or any MCP-compatible client
- **FeaturePulse API Key** — Get one from your [FeaturePulse dashboard](https://featurepul.se/dashboard) under Project Settings

## Quick Start with Claude Code

The fastest way to start — run `npx` directly through Claude Code. No clone, no build.

### Step 1: Get Your API Key

1. Go to your [FeaturePulse dashboard](https://featurepul.se/dashboard)
2. Open **Project Settings**
3. Copy your **API Key**

### Step 2: Add the MCP Server

```bash
claude mcp add --transport stdio featurepulse \
  --scope user \
  --env FEATUREPULSE_API_KEY=<YOUR_API_KEY> \
  -- npx -y featurepulse-mcp
```

Replace `<YOUR_API_KEY>` with your API key.

### Step 3: Restart Claude Code

Quit and reopen Claude Code for the new server to load.

### Step 4: Verify

Ask Claude:

```
List the available FeaturePulse tools.
```

You should see 5 tools including `list_feature_requests` and `get_project_stats`.

## Setup with Claude Desktop

Add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "featurepulse": {
      "command": "npx",
      "args": ["-y", "featurepulse-mcp"],
      "env": {
        "FEATUREPULSE_API_KEY": "your-api-key-here"
      }
    }
  }
}
```

## Setup with Cursor / Windsurf

Add the same configuration to your editor's MCP settings file. Both Cursor and Windsurf support the MCP standard.

## Available Tools

| Tool | Type | Description |
|------|------|-------------|
| `list_feature_requests` | Read | Browse and filter feature requests with MRR data. Filter by status, priority; sort by votes, MRR, or date. |
| `get_project_stats` | Read | High-level overview — total requests, votes, MRR by status and priority. Top 10 by votes and MRR. |
| `search_feedback` | Read | Full-text search across feature request titles. |
| `analyze_feedback_by_group` | Read | Group requests by status or priority with aggregated counts and MRR. |
| `update_feature_status` | Write | Change the status, priority, or status message of a feature request. |

## Example Prompts

- "What are the top feature requests by MRR?"
- "Show me all pending high-priority requests"
- "How much revenue is behind planned features?"
- "Search for feedback about dark mode"
- "Mark the dark mode request as in_progress"
- "Give me a summary of feature requests grouped by status"

## Configuration

| Variable | Required | Description |
|----------|----------|-------------|
| `FEATUREPULSE_API_KEY` | Yes | Your project API key from the FeaturePulse dashboard |
| `FEATUREPULSE_URL` | No | API base URL (defaults to `https://featurepul.se`) |

## How It Works

```
AI Assistant  ←→  MCP Server (stdio/JSON-RPC)  ←→  FeaturePulse API (HTTPS)
```

The MCP server communicates over stdio using JSON-RPC. When your AI assistant calls a tool (e.g. `list_feature_requests`), the server makes authenticated requests to the FeaturePulse API and returns formatted results.

## Development

```bash
cd mcp-server
npm install
npm run dev    # Run with tsx (auto-reload)
npm run build  # Compile TypeScript
npm start      # Run compiled version
```

### Testing with MCP Inspector

```bash
npx @modelcontextprotocol/inspector npx featurepulse-mcp
```

## License

MIT

TDQS

A3.8/5.0

Scored across 6 tools

Disambiguation2/5

list_feature_requests and search_feedback both support text search, making it unclear which to use for finding requests. Similarly, get_project_stats and analyze_feedback_by_group both provide aggregated MRR and vote data by status/priority, overlapping in purpose.

Naming Consistency4/5

All tool names follow a consistent verb_noun pattern with snake_case, but the resource is referred to as both 'feature_requests' and 'feedback' (e.g., list_feature_requests vs search_feedback), and 'feature_status' is not a clear noun. This is a minor inconsistency that could cause confusion.

Tool Count5/5

Six tools is a well-scoped number for a feature request management server, covering listing, searching, analysis, and updates without redundancy.

Completeness3/5

The set lacks a create_feature_request or delete_feature_request tool, which is a notable gap in the lifecycle. However, it covers listing, searching, analysis, and status updates, so agents can work around the missing creation.

Maintenance

ActivityInactive
ResponsivenessNo issues