📇 ☁️ - Combine Help Scout tickets and ProductLift feature requests into prioritized product plans, scoring…
PM Copilot
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
An MCP server that triangulates customer support tickets, feature requests, and AI support agent conversations to help PMs decide what to build next.
---
> **Real results:** Analyzed 3,353 signals in one 30-day window: 1,678 support tickets, 276 feature requests, and 1,399 AI support agent conversations across 4 products.
>
> The chats are signal a ticket-only analysis never sees.
**Read the full story:** I built an MCP server that changed how I prioritize products
---
What makes this different
- **Signal triangulation.** Matches support tickets against feature requests to find convergent themes, and gives convergent themes a 2x priority boost.
- **The deflection blind spot.** An AI support agent answers questions that never become tickets, so ticket-based prioritization undercounts every theme the bot handles. Chatbase conversations come in as a third signal class, with a per-theme self_serve_failure_rate.
- **Composability.** Pass churn or traffic data from other MCP servers into generate_product_plan via kpi_context, and the methodology adjusts priorities.
Architecture
Quick start
Requires Node 20+. Not published to npm, so install from source:
.env lives in the repo root. The server loads it from there regardless of the working directory it's launched from.
Credentials
Configure at least one source; the analysis adapts to whichever you set up. Without HelpScout there are no support tickets, so themes get no severity score and no convergence boost; ProductLift and Chatbase still rank themes by frequency and votes.
| Variable | Required | Description |
|----------|----------|-------------|
| HELPSCOUT_APP_ID | No | OAuth app ID from https://secure.helpscout.net/apps/custom/ (set both or neither) |
| HELPSCOUT_APP_SECRET | No | OAuth app secret |
| PRODUCTLIFT_PORTALS | No | Multi-portal: name\|url\|key,name2\|url2\|key2 |
| PRODUCTLIFT_PORTAL_URL | No | Single portal URL |
| PRODUCTLIFT_API_KEY | No | Single portal Bearer token |
| PRODUCTLIFT_PORTAL_NAME | No | Portal display name (default: default) |
| CHATBASE_API_KEY | No | Account-wide secret key from Chatbase → Settings → API keys |
| CHATBASE_AGENTS | No | Multi-agent: name\|agentId,name2\|agentId2 |
| CHATBASE_AGENT_ID | No | Single agent id |
| CHATBASE_AGENT_NAME | No | Single agent display name (default: default) |
Chatbase API access needs a Standard plan or higher; on a lower plan the deflection signal becomes a warning. One agent per product gives product-level attribution a shared mailbox doesn't.
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
Claude Code
Or open Claude Code in the repo: it prompts you to approve the project .mcp.json.
Verify
Restart the client and ask it to run list_sources. It should list the sources you configured: HelpScout mailboxes, ProductLift portals and Chatbase agents.
Tools
Common filters
Shared by synthesize_feedback and generate_product_plan.
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| timeframe_days | number | 30 | Days to look back (1-90) |
| top_voted_limit | number | 50 | Top-voted requests per portal (1-200). Recent requests in the timeframe are always included on top |
| mailbox_id | string | — | HelpScout mailbox ID |
| mailbox_name | string | — | HelpScout mailbox name (case-insensitive), resolved to an ID |
| portal_name | string | — | ProductLift portal |
| agent_name | string | — | Chatbase agent |
| source_filter | string | — | Chatbase conversation source, comma-separated for multiple (e.g. Widget or Iframe or WhatsApp,API). Case-insensitive |
| include_comments | boolean | false | Also fetch customer comment text on feature requests (scrubbed; names and admin replies dropped) for theme matching and quotes. A modest gain for one extra call per request with comments; can take close to a minute on large portals |