batman-mcp
# 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
Scored across 14 tools
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.
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).
14 tools is well within the ideal range and each tool serves a specific function in managing developers, unavailability, and Batman assignments.
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.