Skip to main content
Glama
README.md
# Batman MCP Server

Este é um servidor MCP (Model Context Protocol) para a aplicação Batman API, que permite gerenciar o sistema de escalação de desenvolvedores para resolver incidentes durante a sprint.

## 📋 Funcionalidades

O servidor MCP expõe as seguintes funcionalidades da API Batman:

### 🔐 Autenticação
- **batman_login**: Fazer login na API Batman
- **batman_register**: Registrar novo usuário na API Batman

### 👥 Desenvolvedores
- **batman_get_developers**: Listar todos os desenvolvedores
- **batman_get_developer**: Obter um desenvolvedor específico
- **batman_create_developer**: Criar um novo desenvolvedor
- **batman_update_developer**: Atualizar um desenvolvedor
- **batman_delete_developer**: Remover um desenvolvedor

### 🚫 Indisponibilidades
- **batman_get_unavailabilities**: Listar indisponibilidades
- **batman_create_unavailability**: Criar uma nova indisponibilidade

### 🦇 Batman
- **batman_get_current_batman**: Obter o Batman e Robin atuais
- **batman_get_priority_details**: Obter detalhes do cálculo de prioridade
- **batman_assign_batman**: Atribuir o Batman atual

### 📜 Histórico
- **batman_get_history**: Obter histórico de Batmans

## 🚀 Instalação

1. **Instalar dependências:**
```bash
npm install
```

2. **Compilar o projeto:**
```bash
npm run build
```

3. **Executar o servidor:**
```bash
npm start
```

## 🔧 Configuração

O servidor MCP se conecta à API Batman no endereço `http://localhost:3000` por padrão. Para alterar a URL da API, modifique o construtor da classe `BatmanApiClient` em `src/api-client.ts`.

## 📖 Uso

### Configuração no Cliente MCP

Adicione o servidor ao seu cliente MCP (como Claude Desktop):

```json
{
  "mcpServers": {
    "batman": {
      "command": "node",
      "args": ["/caminho/para/batman-mcp-server/dist/index.js"]
    }
  }
}
```

### Exemplos de Uso

#### 1. Fazer Login
```json
{
  "name": "batman_login",
  "arguments": {
    "username": "admin",
    "password": "admin123"
  }
}
```

#### 2. Obter Batman Atual
```json
{
  "name": "batman_get_current_batman",
  "arguments": {}
}
```

#### 3. Listar Desenvolvedores
```json
{
  "name": "batman_get_developers",
  "arguments": {
    "byPriority": true
  }
}
```

#### 4. Criar Desenvolvedor
```json
{
  "name": "batman_create_developer",
  "arguments": {
    "name": "João Silva",
    "priority": 0
  }
}
```

#### 5. Criar Indisponibilidade
```json
{
  "name": "batman_create_unavailability",
  "arguments": {
    "developerId": "uuid-do-desenvolvedor",
    "description": "Férias",
    "startDate": "2024-01-15T00:00:00.000Z",
    "endDate": "2024-01-30T23:59:59.999Z",
    "level": 8
  }
}
```

#### 6. Atribuir Batman
```json
{
  "name": "batman_assign_batman",
  "arguments": {}
}
```

## 🏗️ Estrutura do Projeto

```
src/
├── index.ts              # Ponto de entrada
├── mcp-server.ts         # Servidor MCP principal
├── api-client.ts         # Cliente da API Batman
└── types.ts              # Tipos TypeScript
```

## 🔒 Autenticação

Para usar funcionalidades que requerem autenticação (criar, atualizar, remover), você deve primeiro fazer login usando `batman_login` ou `batman_register`. O token JWT será automaticamente incluído nas requisições subsequentes.

## 📝 Desenvolvimento

### Executar em modo de desenvolvimento:
```bash
npm run dev
```

### Linting:
```bash
npm run lint
```

### Formatação:
```bash
npm run format
```

## 🔗 API Batman

Este servidor MCP se conecta à API Batman que deve estar rodando em `http://localhost:3000`. Para mais informações sobre a API, consulte a documentação em `../api/README_API.md`.

## 📄 Licença

ISC 

TDQS

C2.8/5.0

Scored across 14 tools

Disambiguation5/5

Each tool targets a distinct resource and action. Developer CRUD, unavailability list/create, and Batman assignment/history/priority operations are clearly separated, with no overlapping purposes.

Naming Consistency4/5

All tools use a consistent batman_ prefix and follow a verb_noun pattern, but there are minor inconsistencies such as mixed singular/plural nouns (e.g., get_developers vs get_developer) and compound verb forms (get_current_batman, recalculate_priorities).

Tool Count5/5

14 tools is well within the ideal range and each tool serves a specific function in managing developers, unavailability, and Batman assignments.

Completeness4/5

The developer lifecycle is fully covered with CRUD, but unavailability is missing update and delete operations, representing a minor gap in the otherwise complete workflow.

Maintenance

ActivityInactive
ResponsivenessNo issues