> ## Documentation Index
> Fetch the complete documentation index at: https://docs.synkrony.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Model Context Protocol (MCP)

O Model Context Protocol é uma forma organizada de estruturar as informações que enviamos para modelos de linguagem (LLMs), permitindo que nos comuniquemos de maneira mais eficiente e consistente.
Ele funciona como se fosse uma API para LLMs.

O Synkrony utiliza o **SDK oficial do Ruby para MCP** ([modelcontextprotocol/ruby-sdk](https://github.com/modelcontextprotocol/ruby-sdk)), mantido oficialmente pela Anthropic e Shopify.

## Ideação para o Synkrony

A ideia é que você consiga, por meio da sua LLM predileta, organizar e obter informações de um projeto no Synkrony de maneira mais eficiente.

## Como usar?

### 1. Criar uma chave de API

Primeiro, crie uma chave de API seguindo o guia de [Configuração de Tokens de API](/configuracao-api-token).

### 2. Configurar o MCP

Escolha uma das opções abaixo para conectar o MCP do Synkrony com sua LLM:

#### Opção A: Claude Code (Recomendado)

Para produção, use o endpoint de produção:

```bash theme={null}
claude mcp add --scope user --transport http synkrony https://app.synkrony.ai/mcp/messages --header "Authorization: Bearer SEU-TOKEN-AQUI"
```

#### Opção B: Windsurf / Cursor

Crie ou edite o arquivo `mcp_config.json`:

```json theme={null}
{
  "mcpServers": {
    "synkrony": {
      "transport": {
        "type": "http",
        "url": "https://app.synkrony.ai/mcp/messages",
        "headers": {
          "Authorization": "Bearer SEU-TOKEN-AQUI"
        }
      }
    }
  }
}
```

**Endpoint MCP:** `POST https://app.synkrony.ai/mcp/messages`

## Recursos e Ferramentas Disponíveis

O MCP do Synkrony oferece dois tipos de capacidades:

### Resources (Dados que podem ser lidos)

#### Team Resource

* **URI:** `synkrony://team`
* **Descrição:** Lista todos os membros ativos da equipe disponíveis para atribuição de tarefas
* **Filtros:** `page`, `limit` (paginação)

#### Tasks Resource

* **URI:** `synkrony://tasks`
* **Descrição:** Lista e filtra tarefas com ordenação inteligente e sugestões de próximas ações

**Filtros disponíveis via Query String:**

* `user_name` - Filtrar por responsável
* `sprint_name` - Filtrar por sprint
* `project_name` - Filtrar por projeto
* `project_module_name` - Filtrar por módulo do projeto
* `status_name` - Filtrar por status
* `task_summary` - Buscar por texto no nome da tarefa
* `next_tasks_only` - Apenas tarefas da sprint atual em andamento
* `future_sprint_task` - Apenas tarefas de sprints futuras
* `only_important` - Apenas tarefas com prioridade alta
* `order_by` - Ordenar por: `priority`, `created_at`, `updated_at`, `position`, `name`
* `order_direction` - Direção: `asc` ou `desc`
* `page`, `limit` - Paginação

**Exemplos de uso com Query String:**

```
# Filtrar por sprint específica
synkrony://tasks?sprint_name=Sprint%201677

# Filtrar por projeto e status
synkrony://tasks?project_name=Synkrony&status_name=Done

# Apenas tarefas importantes da sprint atual
synkrony://tasks?next_tasks_only=true&only_important=true

# Buscar por texto no nome
synkrony://tasks?task_summary=MCP

# Ordenar por prioridade descendente
synkrony://tasks?order_by=priority&order_direction=desc
```

**Resource Templates Disponíveis:**

O servidor também expõe Resource Templates para consultas comuns. Use o método `resources/templates/list` para descobrir os templates disponíveis:

* `synkrony://tasks?sprint_name={sprint_name}` - Filtrar por sprint
* `synkrony://tasks?project_name={project_name}` - Filtrar por projeto
* `synkrony://tasks?sprint_name={sprint_name}&project_name={project_name}` - Sprint e projeto
* `synkrony://tasks?next_tasks_only=true` - Tarefas da sprint atual
* `synkrony://tasks?status_name={status_name}` - Filtrar por status
* `synkrony://tasks?user_name={user_name}` - Filtrar por responsável

Os clientes MCP podem usar esses templates substituindo os valores entre `{ }` pelos valores desejados.

### Tools (Ações que podem ser executadas)

#### CreateTasksTool

* **Uso:** `create_tasks` - Cria novas tarefas
* **Parâmetros:**
  * `name` (obrigatório) - Nome da tarefa
  * `project_name` (obrigatório) - Nome do projeto
  * `description` - Descrição da tarefa
  * `sprint_name` - Nome da sprint
  * `project_module_name` - Nome do módulo do projeto
  * `status` - Status: `Backlog`, `Ongoing`, `Done`
  * `priority` - Prioridade: `high`, `medium`, `low`
  * `estimate` - Estimativa em horas (não pode ser zero ou negativo)
  * `assignee_names` - Array de nomes dos responsáveis: `["João Silva", "Maria Santos"]`
  * `tags` - Array de tags: `["frontend", "urgente"]`

#### EditTasksTool

* **Uso:** `edit_tasks` - Edita tarefas existentes
* **Parâmetros:**
  * `id` (obrigatório) - ID da tarefa a editar
  * Mesmos parâmetros do `CreateTasksTool`, mas todos são opcionais exceto `id`

## Agente de Planejamento de Tarefas

Nosso MCP foi criado com o intuito de facilitar o planejamento de tarefas na sprint via chatbot. A ideia é que, em breve, teremos uma interface integrada à plataforma, mas por enquanto é possível escrever um prompt para planejar a sprint:

```markdown theme={null}
Você é um assistente que ajuda a planejar sprints para equipes de software usando o Synkrony.

O usuário irá descrever suas necessidades em linguagem natural.

Você deve extrair os seguintes campos da conversa:

- sprint_name (nome da sprint)
- team: lista de pessoas que serão alocadas nas tarefas, suas áreas de foco e sua capacidade em horas na sprint
- priority_areas (qual será o foco da equipe nesta sprint)

## Recursos e Ferramentas MCP Disponíveis

Use os seguintes recursos e ferramentas do Synkrony para o planejamento de sprints:

### 1. Team Resource

- **URI**: `synkrony://team`
- **Uso**: Leia este recurso para obter a lista de todos os membros ativos da equipe disponíveis para atribuição de tarefas
- **Filtros**: `page`, `limit` (para paginação)

### 2. Tasks Resource

- **URI**: `synkrony://tasks`
- **Uso**: Leia este recurso para listar e filtrar tarefas existentes
- **Filtros úteis**:
  - `sprint_name` - Filtrar por sprint específica
  - `project_name` - Filtrar por projeto
  - `user_name` - Filtrar por responsável
  - `status_name` - Filtrar por status
  - `next_tasks_only` - Apenas tarefas em andamento da sprint atual

### 3. CreateTasksTool

- **Uso**: Chame esta ferramenta para criar novas tarefas com nome, descrição, projeto, sprint, responsáveis, estimativas e tags

### 4. EditTasksTool

- **Uso**: Chame esta ferramenta para editar tarefas existentes (requer ID da tarefa) para atualizar qualquer campo

## Processo de Planejamento

1. Seu primeiro objetivo é completar o JSON com a estrutura de resposta:

- **Comece lendo o recurso `synkrony://team`** para obter a equipe disponível.
- **Leia o recurso `synkrony://tasks`** com filtros apropriados para ver as tarefas existentes do projeto/sprint.
- Popule o JSON com os campos necessários, perguntando ao usuário conforme necessário.

2. Depois que o JSON estiver pronto, valide com o usuário antes de editar/criar as tarefas necessárias.
3. Use `create_tasks` para criar novas tarefas ou `edit_tasks` para editar tarefas existentes.

## Estrutura do JSON

{
"ready": true,
"sprint_name": "Nome da Sprint",
"team": [
{"name": "Nome", "hours_per_person": "X", "skill_focus": "Área"},
...
],
"priority_areas": ["Área1", "Área2", ...]
}

## Regras Adicionais

- Priorize tarefas com um único responsável sempre que possível.
- Permita, no máximo, dois responsáveis por tarefa.
- Use os nomes das sprints do Synkrony para manter a consistência.
- Sempre verifique tarefas existentes antes de criar novas.
- Mantenha as estimativas realistas, baseadas na capacidade da equipe.
```
