Ferramentas MCP
Referência completa de todas as 17 ferramentas MCP do SpecForge — parâmetros, uso e exemplos.
O SpecForge expõe 17 ferramentas MCP organizadas em cinco categorias. Essas ferramentas estão disponíveis para qualquer agente de código compatível com MCP (Claude Code, Cursor, VS Code com Copilot, Gemini CLI, etc.) uma vez que o servidor MCP do SpecForge esteja configurado.
Consultas
Seis ferramentas para ler dados do projeto, buscar tickets e gerar relatórios. São somente leitura — nunca modificam sua especificação.
get
Recupera uma única entidade por tipo e ID.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
type | "project" | "specification" | "epic" | "ticket" | "blueprint" | Sim | Tipo de entidade a recuperar |
id | string | Sim | ID da entidade |
specificationId | string | Não | Contexto da especificação (obrigatório para épicos e tickets) |
{
"type": "ticket",
"id": "tkt_abc123",
"specificationId": "spec_xyz789"
}Retorno
Retorna o objeto completo da entidade. O formato depende do parâmetro type:
Ticket (type: "ticket"):
| Campo | Tipo | Descrição |
|---|---|---|
id | string | ID do ticket |
epicId | string | ID do épico pai |
ticketNumber | number | Número sequencial do ticket |
title | string | Título do ticket |
description | string | Descrição detalhada |
status | "pending" | "ready" | "active" | "done" | "blocked" | Status atual |
progress | number | Progresso de conclusão (0–100) |
complexity | "small" | "medium" | "large" | "xlarge" | Estimativa de complexidade |
tags | string[] | Tags |
estimatedHours | number | Esforço estimado em horas |
acceptanceCriteria | object[] | Critérios de aceite com id, description, validated |
implementation | object | Passos de implementação, exemplos de código, pré-requisitos |
technicalDetails | object | Operações de arquivo, endpoints de API, operações de banco de dados |
notes | string | object | Notas de implementação ou notas estruturadas |
blockReason | string | Motivo do bloqueio (se aplicável) |
createdAt | string | Timestamp ISO 8601 |
updatedAt | string | Timestamp ISO 8601 |
Specification (type: "specification"):
| Campo | Tipo | Descrição |
|---|---|---|
id | string | ID da especificação |
projectId | string | ID do projeto pai |
title | string | Título da especificação |
description | string | O que construir |
status | "draft" | "planning" | "ready" | "in_progress" | "done" | Status atual |
progress | number | Progresso geral (0–100) |
goals | string[] | Objetivos da especificação |
requirements | string[] | Requisitos |
techStack | string[] | Tecnologias usadas |
tags | string[] | Tags |
estimatedHours | number | Esforço total estimado |
Epic (type: "epic"):
| Campo | Tipo | Descrição |
|---|---|---|
id | string | ID do épico |
specificationId | string | ID da especificação pai |
epicNumber | number | Número sequencial do épico |
title | string | Título do épico |
description | string | Descrição do épico |
objective | string | O que este épico alcança |
status | "todo" | "in_progress" | "completed" | Status atual |
progress | number | Progresso de conclusão (0–100) |
order | number | Ordem de exibição |
ticketCount | number | Total de tickets |
completedTicketCount | number | Tickets concluídos |
Project (type: "project"):
| Campo | Tipo | Descrição |
|---|---|---|
id | string | ID do projeto |
name | string | Nome do projeto |
description | string | Descrição do projeto |
specCount | number | Total de especificações |
completedSpecCount | number | Especificações concluídas |
ticketCount | number | Total de tickets em todas as specs |
list
Lista entidades de um tipo dado com filtros opcionais.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
type | "projects" | "specifications" | "epics" | "tickets" | "blueprints" | Sim | Tipo de entidade a listar |
projectId | string | Não | Filtrar por projeto (obrigatório para especificações) |
specificationId | string | Não | Filtrar por especificação (obrigatório para épicos e tickets) |
epicId | string | Não | Filtrar tickets por épico |
{
"type": "tickets",
"specificationId": "spec_xyz789",
"epicId": "epic_456"
}Retorno
Retorna uma lista paginada:
| Campo | Tipo | Descrição |
|---|---|---|
items | object[] | Array de entidades correspondentes à consulta |
total | number | Número total de entidades correspondentes |
nextToken | string | Token de paginação para a próxima página (se houver mais resultados) |
Cada item em items é o objeto completo da entidade (veja retornos de get acima para detalhes dos campos).
{
"items": [
{ "id": "tkt_abc123", "title": "Set up User model", "status": "ready", ... },
{ "id": "tkt_def456", "title": "Implement bcrypt hashing", "status": "pending", ... }
],
"total": 4
}search
Busca unificada em tickets com consultas full-text e filtros estruturados.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
query | string | Não | Busca full-text em títulos e descrições de tickets |
files | string[] | Não | Filtrar por caminhos de arquivo esperados |
tags | string[] | Não | Filtrar por tags |
status | string[] | Não | Filtrar por status: "pending", "ready", "active", "done" |
complexity | string[] | Não | Filtrar por complexidade: "small", "medium", "large", "xlarge" |
limit | number | Não | Máximo de resultados a retornar |
offset | number | Não | Offset de paginação |
fields | string[] | Não | Campos específicos a incluir nos resultados |
{
"query": "authentication middleware",
"status": ["ready", "pending"],
"complexity": ["large", "xlarge"],
"limit": 10
}Retorno
Retorna uma lista paginada de tickets:
| Campo | Tipo | Descrição |
|---|---|---|
items | Ticket[] | Array de tickets correspondentes |
total | number | Número total de correspondências |
nextToken | string | Token de paginação (se houver mais resultados) |
Ao usar o parâmetro fields, apenas os campos solicitados são incluídos em cada objeto ticket.
✅ Combine
filescomtagspara encontrar todos os tickets tocando uma parte específica do seu codebase. Por exemplo,files: ["src/auth/**"]comtags: ["security"].
get_next_actionable_tickets
Retorna tickets em status ready com todas as dependências satisfeitas, ordenados por complexidade.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
specificationId | string | Sim | Especificação a consultar |
projectId | string | Não | Contexto do projeto |
limit | number | Não | Máximo de tickets a retornar |
{
"specificationId": "spec_xyz789",
"limit": 5
}Retorno
Retorna um array de objetos ticket em status ready com todas as dependências satisfeitas, ordenados por complexidade (menor primeiro).
[
{
"id": "tkt_abc123",
"title": "Implement JWT token generation",
"status": "ready",
"complexity": "medium",
"epicId": "epic_456",
"ticketNumber": 3,
...
}
]Este é o ponto de entrada principal para agentes decidindo no que trabalhar a seguir. No Agent Teams, o orquestrador chama isso para atribuir tickets a workers.
get_blocked_tickets
Retorna tickets em status pending junto com os motivos pelos quais estão bloqueados.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
specificationId | string | Sim | Especificação a consultar |
Retorno
Retorna um array de entradas de tickets bloqueados:
| Campo | Tipo | Descrição |
|---|---|---|
ticket | Ticket | O objeto ticket bloqueado |
blockedBy | object[] | Array de { id, title, status } para cada dependência não resolvida |
daysBlocked | number | Número de dias que o ticket está bloqueado |
[
{
"ticket": { "id": "tkt_ghi789", "title": "Build login endpoint", "status": "pending", ... },
"blockedBy": [
{ "id": "tkt_def456", "title": "Implement bcrypt hashing", "status": "active" }
],
"daysBlocked": 2
}
]get_report
Gera relatórios analíticos em diferentes escopos e intervalos de tempo.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
type | "implementation" | "time" | "blockers" | "work" | "sessions" | Sim | Tipo de relatório |
scope | "project" | "specification" | "epic" | Sim | Escopo do relatório. sessions requer scope="project". |
scopeId | string | Sim | ID da entidade de escopo |
startDate | string | Não | Data inicial para relatórios com intervalo de tempo (ISO 8601) |
endDate | string | Não | Data final para relatórios com intervalo de tempo (ISO 8601) |
| Tipo de Relatório | Descrição |
|---|---|
implementation | Resumo de progresso com percentuais de conclusão e trabalho restante |
time | Análise de rastreamento de tempo com horas estimadas vs. reais |
blockers | Análise detalhada de bloqueadores com cadeias de dependência |
work | Histórico de work sessions e log de atividade |
sessions | Sessões ativas de planejamento, trabalho e revisão de um projeto (apenas escopo de projeto) |
Retorno
O formato da resposta varia por tipo de relatório:
implementation — Resumo de progresso:
| Campo | Tipo | Descrição |
|---|---|---|
project | Project | Projeto ou entidade de escopo |
specifications | object[] | Detalhamento por spec com completedEpics, totalEpics, completedTickets, totalTickets |
recentActivity | object[] | Ações recentes com ticketId, ticketTitle, action, timestamp |
time — Rastreamento de tempo:
| Campo | Tipo | Descrição |
|---|---|---|
totalHours | number | Horas reais gastas |
estimatedHours | number | Total de horas estimadas |
variance | number | Diferença entre estimado e real |
ticketBreakdown | object[] | Por ticket { ticketId, ticketTitle, estimated, actual } |
blockers — Análise de bloqueadores:
| Campo | Tipo | Descrição |
|---|---|---|
blockedTickets | object[] | Tickets bloqueados com ticket, blockedBy[], daysBlocked |
blockingChains | object[] | Bloqueadores raiz com rootBlocker, contagem de affectedTickets |
Ciclo de Vida
Nove ferramentas que conduzem especificações através de planejamento, implementação e revisão. São as ferramentas centrais do fluxo de trabalho.
start_planning_session
Abre uma sessão de planejamento para uma especificação, habilitando mudanças estruturais.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
specificationId | string | Sim | Especificação a planejar |
A especificação deve estar em estado draft ou planning.
Retorno
| Campo | Tipo | Descrição |
|---|---|---|
specificationId | string | ID da especificação |
sessionId | string | ID da sessão de planejamento |
previousStatus | string | Status antes de abrir a sessão |
newStatus | string | Status após abrir (ex.: "planning") |
message | string | Mensagem de confirmação |
action_planning_session
Realiza operações dentro de uma sessão de planejamento ativa. Esta é a ferramenta principal para construir especificações — ela lida com 25 operações distintas. Cada operação é passada como um objeto operation cujo type é o nome da operação; os campos restantes são o payload dessa operação.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
specificationId | string | Sim | Especificação sendo planejada |
operation | object | Sim | Operação a realizar — um objeto com um campo type (veja tabelas abaixo) mais os campos de payload por operação |
Para ler um único ticket, use a ferramenta get (type: "ticket") em vez de uma operação de planejamento.
Operações de Especificação e Estrutura
| Operação | Descrição |
|---|---|
update_spec | Atualizar campos da especificação (background, goals, nonGoals, constraints, successCriteria) |
create_epic | Criar um novo shell de épico (título, descrição, objetivo) |
update_epic | Expandir ou modificar um épico existente |
delete_epic | Remover um épico e seus tickets |
create_ticket | Criar um ticket dentro de um épico |
ticket_general_actions | Atualizar campos gerais de um ticket (título, descrição, complexidade, …) |
ticket_step_actions | Adicionar, atualizar ou remover passos de implementação de um ticket |
ticket_criteria_actions | Adicionar, atualizar ou remover critérios de aceite de um ticket |
ticket_test_actions | Adicionar, atualizar ou remover testes de um ticket |
delete_ticket | Remover um único ticket |
Operações de Blueprint
| Operação | Descrição |
|---|---|
create_blueprint | Criar um novo documento de blueprint |
update_blueprint | Modificar um blueprint existente |
delete_blueprint | Remover um blueprint |
link_blueprint_to_tickets | Vincular um blueprint a um ou mais tickets |
unlink_blueprint_to_tickets | Desvincular um blueprint de tickets |
Operações de Vínculo de Passo
| Operação | Descrição |
|---|---|
link_step_file | Anexar um caminho de arquivo a um passo de implementação |
unlink_step_file | Desanexar um caminho de arquivo de um passo de implementação |
link_step_snippet | Anexar um snippet de blueprint a um passo de implementação |
unlink_step_snippet | Desanexar um snippet de blueprint de um passo de implementação |
Operações de Dependência
| Operação | Descrição |
|---|---|
create_dependencies | Definir links de dependência entre tickets |
delete_dependencies | Remover links de dependência entre tickets |
Operações de Justificativa e Eleição
| Operação | Descrição |
|---|---|
apply_creator_election | Aplicar a decisão de creator-election para entidades disputadas |
justify | Declarar um campo como não-aplicável com uma justificativa |
unjustify | Remover uma justificativa de não-aplicável |
Operação de Status
| Operação | Descrição |
|---|---|
get_planning_status | Obter o status atual da sessão de planejamento e o progresso das fases |
Exemplo — Criando um ticket:
{
"specificationId": "spec_xyz789",
"operation": {
"type": "create_ticket",
"epicId": "epic_456",
"title": "Implement JWT token generation",
"description": "Create a service that generates signed JWT access tokens with configurable expiration.",
"complexity": "medium"
}
}Retorno
A resposta depende da operação:
Operações de estrutura (create_epic, create_ticket, update_epic, ticket_general_actions, …): Retorna o objeto da entidade criada ou atualizada.
Operações de exclusão (delete_epic, delete_ticket, delete_blueprint): Retorna confirmação { id, message }.
Operações de vinculação (create_dependencies, link_blueprint_to_tickets, link_step_file, …): Retorna { id, message } ou a entidade vinculada.
Operação de status (get_planning_status): Retorna o status atual da sessão de planejamento e o progresso das fases.
ℹ️ A especificação permanece no único estado
planningdurante toda a sessão. A máquina de planejamento de 7 fases (planning_spec→epic_decomposition→epic_expansion→ticket_decomposition→ticket_expansion→cross_validation→planned) avança na sessão de planejamento, não na especificação. Você não gerencia essas fases manualmente.
complete_planning_session
Encerra a sessão de planejamento e dispara o gate de Planning Review.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
specificationId | string | Sim | Especificação para completar o planejamento |
Retorno
| Campo | Tipo | Descrição |
|---|---|---|
specificationId | string | ID da especificação |
message | string | Mensagem de confirmação |
gateResult | object | Resultado do Planning Review (se o gate estiver habilitado) |
gateResult.passed | boolean | Se o review passou |
gateResult.score | number | Score de prontidão (0–100) |
gateResult.findings | object[] | Problemas encontrados: { severity, category, field, message, suggestion } |
Se o gate de Planning Review está habilitado e a especificação passa, ela avança para ready.
start_work_session
Inicia trabalho de implementação em um ticket específico.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
ticketId | string | Sim | Ticket para trabalhar (deve estar em status ready) |
Transiciona o ticket de ready para active.
Retorno
Retorna o contexto completo de implementação:
| Campo | Tipo | Descrição |
|---|---|---|
ticket | Ticket | O ticket sendo implementado (objeto completo) |
epic | Epic | O épico pai |
specification | Specification | A especificação pai |
dependencies.blockedBy | object[] | Tickets que devem ser concluídos antes: { id, title, status } |
dependencies.blocks | object[] | Tickets aguardando este: { id, title, status } |
relatedTickets | object[] | Outros tickets no mesmo épico: { id, title, status, sameEpic } |
patterns | object | Padrões de código e convenções do projeto |
activeSession | object | null | Resumo da sessão de implementação ativa |
previousAttempts | object[] | Tentativas anteriores de implementação com resultados de testes |
relatedDiscoveries | object[] | Descobertas de tickets relacionados |
{
"ticket": {
"id": "tkt_abc123",
"title": "Implement JWT token generation",
"status": "active",
"acceptanceCriteria": [
{ "id": "ac-0", "description": "Tokens are signed with RS256", "validated": false }
],
"implementation": {
"steps": [
{ "order": 1, "title": "Create JwtService", "action": "create", "detail": "..." }
]
},
...
},
"epic": { "id": "epic_456", "title": "Token Management", ... },
"specification": { "id": "spec_xyz789", "title": "Auth System", ... },
"dependencies": { "blockedBy": [], "blocks": [...] },
"relatedTickets": [...],
"previousAttempts": [],
"relatedDiscoveries": []
}action_work_session
Registra progresso, resultados e descobertas durante a implementação.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
ticketId | string | Sim | Ticket ativo |
steps | object[] | Não | Atualizações de conclusão de passos |
acceptanceCriteria | object[] | Não | Resultados de critérios de aceite |
testResults | object[] | Não | Resultados de execução de testes |
notes | string | Não | Notas de implementação |
files | object[] | Não | Mudanças de arquivo feitas |
discovery | object | Não | Novas informações descobertas durante implementação |
blockReason | string | Não | Reportar um bloqueador externo |
{
"ticketId": "tkt_abc123",
"steps": [
{ "index": 0, "completed": true },
{ "index": 1, "completed": true }
],
"files": [
{ "path": "src/auth/jwt.service.ts", "action": "created" },
{ "path": "src/auth/jwt.service.test.ts", "action": "created" }
],
"notes": "Used jose library instead of jsonwebtoken for Edge Runtime compatibility."
}Retorno
Retorna confirmação com o estado atualizado da work session:
| Campo | Tipo | Descrição |
|---|---|---|
ticketId | string | ID do ticket |
workSessionId | string | ID da work session |
message | string | Mensagem de confirmação |
complete_work_session
Finaliza trabalho em um ticket com um resumo e resultados de validação.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
ticketId | string | Sim | Ticket ativo |
summary | string | Sim | Resumo do trabalho realizado |
files | object[] | Não | Lista final de mudanças de arquivo |
actualHours | number | Não | Horas gastas na implementação |
validation | object | Não | Resultados de validação: tests, lint, typeCheck, build |
Retorno
| Campo | Tipo | Descrição |
|---|---|---|
ticketId | string | ID do ticket |
status | "done" | Novo status do ticket |
workSessionId | string | ID da work session concluída |
message | string | Mensagem de confirmação |
dependentsUnblocked | string[] | IDs de tickets que se tornaram ready como resultado |
Transiciona o ticket de active para done. Tickets dependentes são recalculados e podem se tornar ready.
Mutações
Duas ferramentas para modificar e vincular dados do projeto.
reopen_specification
Reabre uma especificação completada ou revisada para trabalho adicional.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
specificationId | string | Sim | Especificação a reabrir |
Retorno
| Campo | Tipo | Descrição |
|---|---|---|
specificationId | string | ID da especificação |
previousStatus | string | Status antes de reabrir |
newStatus | string | Novo status (ex.: "in_progress") |
message | string | Mensagem de confirmação |
link_pull_request
Associa um pull request a um ticket completado.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
ticketId | string | Sim | Ticket a vincular |
prNumber | number | Sim | Número do pull request |
prUrl | string | Sim | URL completa do pull request |
title | string | Sim | Título do PR |
author | string | Sim | Autor do PR |
repoUrl | string | Sim | URL do repositório |
Retorno
Retorna o objeto link criado:
| Campo | Tipo | Descrição |
|---|---|---|
id | string | ID do link |
ticketId | string | ID do ticket |
linkType | "pull_request" | Tipo de link |
url | string | URL do PR |
prNumber | number | Número do PR |
title | string | Título do PR |
status | string | Status do PR |
createdAt | string | Timestamp ISO 8601 |
Orquestração
Duas ferramentas para entender e navegar o grafo de dependência.
get_critical_path
Calcula a cadeia de dependência mais longa em uma especificação — a sequência de tickets que determina o tempo mínimo para conclusão.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
specificationId | string | Sim | Especificação a analisar |
Retorno
| Campo | Tipo | Descrição |
|---|---|---|
criticalPath | object[] | Lista ordenada de tickets no caminho crítico |
criticalPath[].id | string | ID do ticket |
criticalPath[].title | string | Título do ticket |
criticalPath[].status | string | Status atual |
criticalPath[].estimatedHours | number | Esforço estimado |
criticalPath[].complexity | string | Nível de complexidade |
totalEstimatedHours | number | Soma do esforço estimado no caminho crítico |
pathLength | number | Número de tickets no caminho crítico |
get_dependency_tree
Renderiza a árvore de dependência completa upstream e downstream para uma especificação.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
specificationId | string | Sim | Especificação a analisar |
Retorno
Retorna uma estrutura de árvore mostrando todos os tickets, suas dependências e status:
| Campo | Tipo | Descrição |
|---|---|---|
tree | object[] | Nós raiz (tickets sem dependências) |
tree[].id | string | ID do ticket |
tree[].title | string | Título do ticket |
tree[].status | string | Status atual |
tree[].epicId | string | ID do épico pai |
tree[].children | object[] | Tickets dependentes downstream (estrutura recursiva) |
totalTickets | number | Contagem total de tickets |
completedTickets | number | Contagem de tickets concluídos |
Útil para visualizar a forma geral do trabalho e identificar gargalos.
Utilitário
feedback
Submeta feedback, reporte problemas ou sugira melhorias.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
operation | "submit" | "list" | "get" | Sim | Operação de feedback |
category | string | Não | Categoria do feedback (para submit) |
summary | string | Não | Resumo do feedback (para submit) |
severity | string | Não | Severidade do problema (para submit) |
tool | string | Não | Qual ferramenta o feedback se refere (para submit) |
Retorno
Depende da operação:
submit: Retorna{ id, message }— o ID do feedback e confirmação.list: Retorna um array de entradas de feedback comid,category,summary,status,createdAt.get: Retorna a entrada completa do feedback por ID.
Veja Também
- Comandos CLI — Equivalentes CLI para operações comuns
- Estados da Especificação — Máquina de estados disparada por ferramentas de ciclo de vida
- Estados do Ticket — Estados de ticket acionados por ferramentas de work session