Triangulates customer support tickets and feature requests for product planning.
PM Copilot
An MCP server that triangulates customer support tickets and feature requests to help PMs decide what to build next.
Real results: Analyzed 2,370 signals (2,136 support tickets + 234 feature requests) across 3 products in 55 seconds. Identified 16 themes, 15 convergent. Top priority: Booking & Scheduling (score: 134.6) — 629 tickets + 77 feature requests pointing at the same problem.
Read the full story: I built an MCP server that changed how I prioritize products — why I built this, how convergent signals work in practice, and what I learned building with Claude Code.
What Makes This Different
- Signal triangulation — Not just data access. Matches support tickets against feature requests to find convergent themes, then scores them with a weighted formula that gives convergent signals a 2x priority boost.
- Composability — Designed to work with other MCP servers. Pass churn data from Metabase or traffic trends from Google Analytics into
generate_product_planviakpi_context, and the methodology adjusts priorities accordingly. - PM methodology built in — Opinionated scoring based on 7 years of real product management across 9 products and 1M+ users. Not a generic framework — an actual decision-making process exposed as an MCP resource.
- PII scrubbing — Customer data never reaches the LLM unfiltered. SSNs, credit cards (Luhn-validated), emails, and phone numbers are redacted before analysis. Agent responses are filtered out of quotes.
Architecture
graph TD
A[Claude Desktop / Code] -->|stdio| B[pm-copilot]
A -->|stdio| C[Metabase MCP]
A -->|stdio| D[Google Analytics MCP]
B -->|Qualitative| E[HelpScout: tickets]
B -->|Qualitative| F[ProductLift: feature requests]
C -->|Quantitative| G[Conversion, Churn, Revenue]
D -->|Acquisition| H[Traffic, Channels, Trends]
B -.->|kpi_context| A
Claude orchestrates multiple MCP servers. PM Copilot handles qualitative customer signals. Other servers provide quantitative business metrics. The kpi_context parameter is the integration point — no point-to-point integrations required.
Quick Start
git clone https://github.com/dkships/pm-copilot.git
cd pm-copilot
npm install
cp .env.example .env # Edit with your credentials
npm run build
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"pm-copilot": {
"command": "node",
"args": ["/absolute/path/to/pm-copilot/dist/index.js"]
}
}
}
Claude Code
claude mcp add pm-copilot -- node /absolute/path/to/pm-copilot/dist/index.js
Or use the .mcp.json already in the project root — Claude Code picks it up automatically.
Tools
`synthesize_feedback`
Cross-references HelpScout tickets and ProductLift feature requests, returns theme-matched analysis with priority scores.
| Parameter | Type | Default | Description |
|---|---|---|---|
timeframe_days |
number | 30 | Days to look back (1-90) |
top_voted_limit |
number | 50 | Max feature requests by vote count |
mailbox_id |
string | — | HelpScout mailbox filter |
portal_name |
string | — | ProductLift portal filter |
detail_level |
string | "summary" |
"summary" (~19KB), "standard" (~68KB), or "full" (~563KB) |
Returns themes sorted by priority score, each with reactive/proactive counts, convergence flag, evidence summaries, and representative customer quotes.
`generate_product_plan`
Builds a prioritized product plan with evidence and customer quotes. Accepts external business metrics via kpi_context.
| Parameter | Type | Default | Description |
|---|---|---|---|
timeframe_days |
number | 30 | Days to look back (1-90) |
top_voted_limit |
number | 50 | Max feature requests by vote count |
mailbox_id |
string | — | HelpScout mailbox filter |
portal_name |
string | — | ProductLift portal filter |
kpi_context |
string | — | Business metrics from other MCP servers |
max_priorities |
number | 5 | Number of priorities to return (1-10) |
preview_only |
boolean | false | Audit mode: show what data would be sent |
detail_level |
string | "summary" |
"summary" (~7KB), "standard" (~21KB), or "full" (~584KB) |
`get_feature_requests`
Raw ProductLift data access for browsing feature requests directly.
| Parameter | Type | Default | Description |
|---|
Tools (3)
synthesize_feedbackCross-references HelpScout tickets and ProductLift feature requests to return theme-matched analysis with priority scores.generate_product_planBuilds a prioritized product plan with evidence and customer quotes, supporting external business metrics via kpi_context.get_feature_requestsRaw ProductLift data access for browsing feature requests directly.Environment Variables
HELPSCOUT_API_KEYrequiredAPI credentials for HelpScout integrationPRODUCTLIFT_API_KEYrequiredAPI credentials for ProductLift integrationConfiguration
{"mcpServers": {"pm-copilot": {"command": "node", "args": ["/absolute/path/to/pm-copilot/dist/index.js"]}}}