PM Copilot MCP

PM Copilot MCP

Enables product managers to analyze meeting transcripts, create tasks in Linear with deduplication, post messages and DMs on Slack, and generate weekly digests, all through natural language via MCP.

Category
访问服务器

README

PM Copilot MCP

Servidor MCP para times de produto — sem nenhuma API key de LLM. Roda como app Next.js na Vercel e expõe, via Model Context Protocol (Streamable HTTP), as integrações do dia a dia de PMs e PDs: transcrições do Google Meet, criação de tasks no Linear com dedupe, mensagens e DMs no Slack, e um digest semanal automático via cron.

A inteligência fica no cliente: quando conectado ao Claude, é o próprio Claude que lê a transcrição (via tools deste servidor) e produz a síntese, os action items e o parecer de produtividade — seguindo a metodologia embarcada no servidor (prompt analisar_reuniao / tool get_analysis_method). O digest semanal do cron é 100% determinístico (TypeScript puro), então roda sozinho sem custo de LLM.

Arquitetura

Claude.ai (conector MCP)                Vercel Cron (segunda, 9h BRT)
  │  ← a análise acontece aqui                   │
  ▼                                              ▼
/api/mcp (mcp-handler)                /api/cron/weekly-digest
  │                                              │  (formatador determinístico,
  ├── Google Drive (transcrições do Meet)        │   lib/digest.ts — sem LLM)
  ├── Linear GraphQL (issues) ◄──────────────────┤
  └── Slack Web API (canal + DMs) ◄──────────────┘

Tools e prompts expostos

Nome Tipo O que faz
analisar_reuniao prompt Fluxo guiado: localiza a transcrição, lê e aplica a metodologia de análise
list_meet_transcripts tool Lista transcrições recentes do Meet no Drive
get_meet_transcript tool Retorna o texto completo de uma transcrição
get_analysis_method tool Metodologia padrão de análise (síntese, decisões, action items, score 0-100)
linear_list_teams tool Lista os times do workspace Linear
create_linear_tasks tool Cria issues em lote com dedupe por título
linear_open_issues tool Issues abertas por time (dono, estado, prazo)
slack_post_message tool Posta em canal
slack_dm_by_email tool DM individual a partir do e-mail
run_weekly_digest tool Gera e posta o digest sob demanda (dryRun disponível)

O parecer de produtividade avalia 5 critérios: propósito claro, decisões tomadas, action items com dono, participação equilibrada e "poderia ter sido assíncrona?". Score parte de 100 e desconta por critério falho; sem decisões nem donos, o teto é 40.

Setup

1. Clonar e instalar

git clone <seu-repo>
cd pm-copilot-mcp
npm install
cp .env.example .env

2. Google (transcrições do Meet)

O Meet salva transcrições como Google Docs no Drive do organizador. O servidor lê via Drive API com OAuth refresh token:

  1. No Google Cloud Console, crie um projeto e ative a Google Drive API.
  2. Em APIs & Services → Credentials, crie um OAuth client ID (tipo "Web application") com redirect URI https://developers.google.com/oauthplayground.
  3. No OAuth Playground: engrenagem → "Use your own OAuth credentials" → cole client ID/secret. Autorize o escopo https://www.googleapis.com/auth/drive.readonly e troque o code por tokens.
  4. Copie o refresh token para GOOGLE_REFRESH_TOKEN, junto com GOOGLE_CLIENT_ID e GOOGLE_CLIENT_SECRET.

Importante: habilite a transcrição nas reuniões (Meet → Atividades → Transcrição) — só assim o doc é gerado no Drive.

3. Linear

Em Linear → Settings → Security & access → Personal API keys, crie uma key e preencha LINEAR_API_KEY.

4. Slack

  1. Crie um app em https://api.slack.com/apps ("From scratch").
  2. Em OAuth & Permissions → Bot Token Scopes, adicione: chat:write, users:read, users:read.email, im:write.
  3. Instale o app no workspace e copie o Bot User OAuth Token (xoxb-...) para SLACK_BOT_TOKEN.
  4. Convide o bot para o canal do digest: /invite @seu-bot.

5. Segurança (leia antes de publicar)

Este servidor tem poder de escrita no seu Slack e no seu Linear, e leitura no seu Drive. Um MCP "público" sem autenticação significa que qualquer pessoa que descobrir a URL pode usar essas credenciais.

  • Defina MCP_AUTH_TOKEN com um valor longo e aleatório (openssl rand -hex 32). O endpoint passa a exigir Authorization: Bearer <token>.
  • Defina CRON_SECRET — a Vercel injeta esse header nos crons e o endpoint rejeita chamadas sem ele.
  • Observação sobre o Claude.ai: conectores customizados na interface autenticam via OAuth ou sem auth; header Bearer estático é suportado ao usar o servidor via API (mcp_servers com authorization_token). Se você for conectar pela interface do Claude.ai sem OAuth, mantenha a URL secreta, monitore os logs da Vercel e considere implementar OAuth (o pacote mcp-handler tem suporte experimental via withMcpAuth). Verifique o comportamento atual em https://support.claude.com.

6. Deploy na Vercel

git init && git add -A && git commit -m "feat: PM Copilot MCP"
git remote add origin <seu-repo>
git push -u origin main

Na Vercel: Add New → Project → importe o repo → configure todas as variáveis do .env.example em Settings → Environment Variables → deploy. O cron do vercel.json (0 12 * * 1 = segunda 9h em Brasília) é registrado automaticamente.

Seu endpoint MCP será: https://<seu-projeto>.vercel.app/api/mcp

7. Conectar no Claude

No Claude.ai: Settings → Connectors → Add custom connector → cole a URL do endpoint. A partir daí, prompts como estes funcionam de ponta a ponta:

  • "Liste as transcrições dessa semana e analise a Weekly de Produto de ontem."
  • "Crie no time PROD as tasks dessa análise, atribuídas pelos e-mails, e mande DM pra cada dono com os itens."
  • "Rode o digest semanal em dry run pra eu revisar antes de postar no #produto."

Usando dentro do Slack

Há duas formas de acionar o sistema sem sair do Slack:

1. Slash command /copilot (nativo, sem LLM, qualquer plano). No seu app do Slack (api.slack.com/apps): Slash Commands → Create New Command → Command /copilot, Request URL https://<seu-projeto>.vercel.app/api/slack/commands. Depois copie o Signing Secret (em Basic Information) para a env var SLACK_SIGNING_SECRET. Comandos:

  • /copilot digest PROD — posta o digest do time no canal atual
  • /copilot tarefas PROD — lista as issues abertas (visível só pra você)
  • /copilot task "Revisar PRD do checkout" ana@empresa.com 2026-07-24 PROD — cria issue no Linear com dedupe (título entre aspas obrigatório; e-mail, prazo e time são opcionais)
  • /copilot times — lista os times do Linear
  • /copilot ajuda — mostra os comandos

Se omitir o time, usa DIGEST_LINEAR_TEAM como padrão.

2. Claude no Slack (com LLM, linguagem natural). Instale o app oficial do Claude pelo Slack Marketplace e autentique com sua conta Claude; para times Claude Team/Enterprise, o Claude Tag entra como membro do canal e pode usar as ferramentas conectadas à organização — incluindo este MCP. Aí "@Claude analisa a weekly de ontem e cria as tasks" funciona direto no canal. Verifique disponibilidade e requisitos do seu plano em https://support.claude.com.

Digest semanal automático

Toda segunda o cron: (1) lê as issues abertas de DIGEST_LINEAR_TEAM, (2) formata o resumo deterministicamente — panorama, atrasadas, itens por pessoa, issues sem dono — e (3) posta em DIGEST_SLACK_CHANNEL. Se DIGEST_DM_ASSIGNEES=true, envia também DM individual com os itens de cada pessoa.

Para testar sem esperar segunda-feira: curl -H "Authorization: Bearer $CRON_SECRET" https://<seu-projeto>.vercel.app/api/cron/weekly-digest

Roadmap sugerido

  • Digest com narrativa: se um dia quiser um digest escrito por LLM em vez do template, basta plugar a Anthropic API no cron (a versão determinística continua como fallback).
  • Webhook do Drive: notificar no Slack assim que uma nova transcrição aparecer.
  • Métricas agregadas: histórico do score de produtividade das reuniões ao longo do tempo.
  • OAuth no MCP: substituir o Bearer estático por OAuth 2.1 para conexão segura direto pela interface do Claude.ai.

Stack

Next.js 15 (App Router) · mcp-handler · Google Drive API v3 · Linear GraphQL · Slack Web API · Vercel Cron

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选