Coreflows MCP

Um orquestrador MCP para fluxos de trabalho modernos de desenvolvimento. Reúne contexto do Jira, Github e Slack e transforma tickets em PRs prontos para merge.

Documentação

Core MCP

Ferramentas MCP que transformam tickets do Jira em PRs através do Claude Code. Busca contexto do Jira, GitHub, Notion e Slack, constrói prompts estruturados, lida com git push/PR/CI — tudo de forma autônoma.

Core MCP

🏆 Meio que Viralizou no Product Hunt & Reddit

image

Configuração (5 minutos)

1. Instalação

git clone https://github.com/adaOctopus/coolplugz-core.git
cd coolplugz-core
npm install

2. Crie seu .env

cp .env.example .env

Abra .env e preencha:

Obrigatório:

VariávelOnde conseguir
GITHUB_TOKENgithub.com/settings/tokens → Gerar token clássico → marque repo + workflow
SHELL_ENVSeu ambiente de desenvolvimento: wsl2, macos, linux, git-bash ou powershell
REPOS_ROOTCaminho absoluto onde seus repositórios ficam, ex.: /home/you/projects

Opcional (mas recomendado):

VariávelOnde conseguir
JIRA_API_TOKENid.atlassian.com/manage-profile/security/api-tokens
JIRA_EMAILO e-mail da sua conta Atlassian
JIRA_BASE_URLA URL do seu workspace, ex.: https://yourteam.atlassian.net
NOTION_TOKENnotion.so/my-integrations → Criar integração → copiar token
SLACK_TOKENapi.slack.com/apps → Criar app → Bot Token com channels:history, search:read
ANTHROPIC_API_KEYHabilita detecção de repositório com IA a partir do texto do ticket e rascunhos inteligentes de respostas no Slack
WSL_DISTROSomente se SHELL_ENV=wsl2 — o nome da sua distribuição (ex.: Ubuntu)

3. Inicie o servidor

npm run dev

Você deve ver:

CoolPlugz Core MCP server listening on :3100

4. Conecte ao Claude Code (uma única vez)

claude mcp add coolplugz --transport http http://localhost:3100/mcp

5. Use

Abra o Claude Code e diga:

Show my dashboard
Start PROJ-142

É isso. O CoolPlugz cuida do resto.


O Que Acontece Quando Você Usa

You: "Start PROJ-142"

CoolPlugz:
  ├── Fetches Jira ticket (description, acceptance criteria, comments)
  ├── Checks GitHub for existing branches/PRs
  ├── Pulls linked Notion specs
  ├── Finds relevant Slack mentions
  ├── Figures out which repo (from ticket links or fuzzy matching)
  ├── Builds a CRISPE implementation prompt
  └── Returns loop metadata → Claude Code knows exactly what to do next

Claude Code: writes the code, runs tests

You: (or Claude Code automatically calls push_branch)

CoolPlugz:
  ├── Pushes via token-authenticated HTTPS (no SSH needed)
  ├── Handles fork detection/creation automatically
  └── Returns next action → verify_and_submit

CoolPlugz (verify_and_submit):
  ├── Verifies push landed on GitHub (via API, not trusting output)
  ├── Opens PR with correct title/body
  ├── Polls CI for up to 5 minutes
  ├── If CI passes + no review comments → auto-marks DONE
  ├── If CI fails → fetches failure logs, tells Claude Code to fix
  └── If review comments → fetches them, tells Claude Code to address

Ferramentas Disponíveis

FerramentaO que faz
get_dashboardMostra todas as suas tarefas com status, PRs e bloqueios
start_taskBusca todo o contexto de um ticket do Jira e retorna o prompt de implementação
push_branchEnvia sua branch para o GitHub — lida com autenticação, forks, tudo
verify_and_submitVerifica o push, cria o PR, monitora o CI, conclui automaticamente se estiver verde
check_commentsBusca comentários não resolvidos de revisão de PR para tratar
complete_taskMarca uma tarefa como concluída após a verificação
get_task_stateMostra o estado real a partir do armazenamento + API do GitHub
check_conflictsDetecta conflitos de merge e dá passos para resolução
add_insightAdiciona uma instrução personalizada incluída em todos os prompts futuros
morning_reportGera um relatório de status formatado com tarefas concluídas, PRs, resultados de CI e rascunhos de mensagens do Slack
log_runRastreia início/fim de execução — alimenta o morning_report com dados reais de cada execução agendada

Instruções Personalizadas

Diga ao Claude Code para adicionar instruções que o CoolPlugz incluirá em todos os prompts futuros:

"Add an insight: always use pnpm, never npm or yarn"
"Add an insight: this repo uses Tailwind, no inline styles"
"Add an insight for PROJ-142: the auth module uses Passport.js"

Insights globais se aplicam a todas as tarefas. Insights por tarefa se aplicam a um único ticket. Armazenados em ~/.coolplugz/data.json e persistem entre sessões.

Como o Construtor de Prompts Funciona

Cada start_task constrói um prompt estruturado usando o framework CRISPE:

SeçãoO que contém
[C] CapacidadePapel, repositório, branch, configuração do workspace (WSL2/macOS/Linux), caminhos locais
[R] InsightDescrição completa do ticket, critérios de aceite, comentários do Jira, especificações do Notion, contexto do Slack, comentários de revisão de PR
[I] DeclaraçãoA instrução específica de implementação
[S] PersonalidadeEstilo de código, convenções de commit (feat(PROJ-142): ...), regras de comunicação
[P] ExperimentoPermissões de execução autônoma, instruções de engenharia de loop, restrições de segurança
[F] CercaNunca deletar, nunca fazer push para main, nunca commitar segredos
[Q] QualidadeSegurança de tipos, mudanças cirúrgicas, padrões de segurança
[D] Insights do desenvolvedorSuas instruções personalizadas (de add_insight)
[E] Contexto de erroDetalhes de falhas anteriores em novas tentativas

Engenharia de Loop

Cada resposta de ferramenta carrega metadados estruturados em vez de listas de verificação em texto livre:

State: EXECUTING → Goal: DONE
Next: push_branch({ jiraKey: "PROJ-142", branch: "proj-142-impl", repo: "org/repo" })

O Claude Code lê isso e chama a próxima ferramenta automaticamente. A máquina de estados:

IDLE → start_task → EXECUTING → push_branch → PUSHED → verify_and_submit
  → CI passed, no comments → DONE ✅
  → CI failed → fix code → push_branch → verify_and_submit (loop)
  → Review comments → fix → push_branch → verify_and_submit (loop)

Prompt de Piloto Automático

Depois que tudo estiver conectado, cole este prompt no Claude Code para executar seus tickets no piloto automático — percorrendo o Jira, escrevendo código, enviando PRs e postando atualizações no Slack:

You are my autonomous dev agent. Use the coolplugz MCP tools to work through my Jira tickets without asking me anything.

Your loop:
1. Call get_dashboard to see all tasks and their status
2. For any task in QUEUED or EXECUTING state, call start_task with its Jira key
3. Follow the loop metadata exactly — the _meta.loop in each response tells you the next tool to call
4. After writing code and running tests, call push_branch to push
5. Call verify_and_submit — it opens the PR, polls CI, and tells you what to do next
6. If CI fails, read the failure logs, fix the code, and push again
7. If there are review comments, call check_comments, address them, push again
8. When done with a task, move to the next one from the dashboard
9. After completing all tasks, post a summary of what you did

Rules:
- Never ask me for confirmation — just do it
- Never push to main — always use feature branches
- Never commit secrets or .env files
- If you get stuck after 3 retries, mark it blocked and move on
- Commit messages follow: feat(TICKET-KEY): description

Agende (roda mesmo com o laptop fechado)

Cole isto no Claude Code para configurar um agendamento diário que executa seus tickets automaticamente:

Set up a scheduled task using /schedule that runs every weekday:

- 6:00 AM: Morning run
  1. Call log_run with action "start" and trigger "morning" — save the run_id
  2. Call get_dashboard to see all tasks
  3. For every QUEUED ticket, call start_task with its Jira key
  4. Follow the loop metadata for each: code → push_branch → verify_and_submit
  5. If CI fails, fix and retry up to 3 times
  6. When all tasks are processed, call log_run with action "finish", the run_id, and all task_results
  7. Call morning_report with mode "latest" and slack_channels ["standup", "engineering"]
  8. Show me the full report output

- 12:00 PM: Midday check
  1. Call log_run with action "start" and trigger "midday"
  2. Call get_dashboard — for any task stuck in EXECUTING or CI_FAILED, retry it
  3. For tasks with review comments, call check_comments, address them, push again
  4. Call log_run with action "finish" with results
  5. Call morning_report with mode "latest"

- 5:00 PM: End of day
  1. Call log_run with action "start" and trigger "evening"
  2. Call get_dashboard and process any remaining tasks
  3. Call log_run with action "finish" with results
  4. Call morning_report with mode "today" and slack_channels ["standup", "engineering", "product"]
  5. Show me the full report — I want to see what got done today

Rules for all runs:
- Use the coolplugz MCP tools
- Never ask for confirmation — just do it
- Never push to main — always feature branches
- Never commit secrets or .env files
- If stuck after 3 retries, mark blocked and move on
- Commit messages: feat(TICKET-KEY): description
- Always call log_run start/finish so morning_report has real data

Veja o relatório a qualquer momento

Você também pode chamar o relatório manualmente no Claude Code:

Call morning_report with mode "today" and slack_channels ["standup", "engineering"]

Modos:

  • latest — mostra os resultados da execução mais recente (padrão)
  • today — mostra todas as tarefas atualizadas hoje
  • full — mostra tudo no armazenamento

Referência de Variáveis de Ambiente

Obrigatórias

VariávelO que fazComo conseguir
GITHUB_TOKENEnvia branches, abre PRs, lê o estado do repositório, monitora o CIgithub.com/settings/tokens → Gerar token clássico → marque os escopos repo + workflow
SHELL_ENVDiz ao CoolPlugz como executar comandos de shell no seu ambienteUm de: wsl2, macos, linux, git-bash, powershell
REPOS_ROOTOnde seus repositórios estão clonados localmenteCaminho absoluto, ex.: /home/you/projects ou C:\Users\you\repos

Jira (habilita contexto de tickets)

VariávelO que fazComo conseguir
JIRA_API_TOKENBusca descrição do ticket, critérios de aceite, comentáriosid.atlassian.com/manage-profile/security/api-tokens → Criar token de API
JIRA_EMAILAutentica com o Jira (auth básica = email:token)O e-mail da sua conta Atlassian
JIRA_BASE_URLA URL da sua instância do Jiraex.: https://yourteam.atlassian.net

GitHub (já coberto pelo GITHUB_TOKEN acima)

O GITHUB_TOKEN cuida de tudo: ler repositórios, enviar branches, abrir PRs, monitorar status do CI, buscar comentários de revisão, detectar forks.

Escopos necessários: repo (acesso total ao repositório) + workflow (disparar/ler CI)

Notion (habilita busca de especificações)

VariávelO que fazComo conseguir
NOTION_TOKENPuxa documentos vinculados do Notion para o prompt CRISPE como contexto de referêncianotion.so/my-integrations → Criar integração → Copiar "Internal Integration Secret" → Compartilhar páginas alvo com a integração

Slack (habilita rastreamento de menções + rascunhos de respostas)

VariávelO que fazComo conseguir
SLACK_TOKENRastreia menções aos seus tickets no Slack, gera rascunhos de respostas com IAapi.slack.com/apps → Criar Novo App → OAuth & Permissões → Adicionar escopos: channels:history, search:read → Instalar no workspace → Copiar Bot User OAuth Token (xoxb-...)

Recursos de IA (opcional)

VariávelO que fazComo conseguir
ANTHROPIC_API_KEYHabilita detecção inteligente de repositório a partir do texto do ticket + respostas do Slack redigidas por IAconsole.anthropic.com → API Keys → Criar Chave

Workspace (opcional)

VariávelO que fazQuando necessário
WSL_DISTRONome da sua distribuição WSL2 para tradução de caminhosSomente se SHELL_ENV=wsl2 (ex.: Ubuntu)
PORTPorta do servidor MCPPadrão: 3100 — altere se a porta estiver ocupada

Armazenamento de Dados

Todos os dados ficam em ~/.coolplugz/data.json — tarefas, snapshots de contexto, mapeamentos de repositórios, insights, histórico de prompts. Nenhum banco de dados necessário. Exclua o arquivo para começar do zero.

Arquitetura

src/
├── index.ts              # MCP server (Express + StreamableHTTP)
├── config.ts             # Reads tokens from .env
├── store.ts              # JSON file store (~/.coolplugz/data.json)
├── lib/
│   ├── loopState.ts      # State machine
│   └── response.ts       # mcpText() and mcpLoop() builders
├── context/
│   ├── jira.ts           # Jira fetcher (Basic auth)
│   ├── github.ts         # GitHub state (branches, PRs, CI)
│   ├── notion.ts         # Notion doc fetcher
│   ├── slack.ts          # Slack mentions + AI draft replies
│   ├── repoResolver.ts   # Auto-detect repo from ticket content
│   └── assemble.ts       # CRISPE prompt builder
├── orchestrator/
│   └── githubApi.ts      # GitHub API helpers
└── tools/
    ├── orchestrator.ts   # start_task, verify_and_submit, etc.
    ├── pushBranch.ts     # Token-authenticated push + fork handling
    ├── getDashboard.ts   # Text dashboard
    └── addInsight.ts     # Custom instruction management

Licença

MIT