Skip to main content
Glama
fbsampaio

bradesco-rede-mcp

by fbsampaio
README.md
# bradesco-rede-mcp

MCP server para consulta em tempo real a rede referenciada do Bradesco Saude. Expoe uma ferramenta `search_providers` que agentes LLM podem chamar para buscar medicos, hospitais, clinicas e laboratorios.

## Instalacao

```bash
npm install -g bradesco-rede-mcp
```

Requer Node 20+. Sem necessidade de browser ou Playwright — o servidor faz chamadas HTTP diretas a API do Bradesco.

## Configuracao no cliente MCP

### Claude Desktop

Adicione ao `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "bradesco-rede": {
      "command": "node",
      "args": ["/caminho/absoluto/bradesco-rede-mcp/dist/index.js"],
      "env": {
        "LOG_LEVEL": "info"
      }
    }
  }
}
```

### opencode

Adicione ao `opencode.json` na secao `mcp`, mesmo padrao: `command` + `args` + `env`.

> **Caminho absoluto e obrigatorio.**

## Variaveis de ambiente

Todas tem defaults. Configurar e otimizacao, nao pre-requisito.

| Variavel | Default | Descricao |
|---|---|---|
| `CACHE_TTL_MS` | 600000 (10 min) | TTL de cache |
| `CACHE_MAX_ENTRIES` | 100 | Tamanho maximo do LRU |
| `TIMEOUT_SEARCH_TOTAL_MS` | 60000 (60s) | Timeout por requisicao a API (evita chamadas penduradas) |
| `LOG_LEVEL` | info | debug, info, warn, error |
| `MAX_RESULTS` | 50 | Limite maximo por chamada |
| `BRADESCO_URL` | URL oficial | Override da URL alvo |

## Testes

```bash
npm test                                    # unit + integracao
RUN_LIVE_TESTS=true npm run test:live       # live (real API, lento)
```

## Limitacoes

- Uma busca por vez (sem concorrencia). Para v1, inflight=1 + cache em memoria e a unica protecao contra excesso de requisicoes (nao ha delay minimo entre buscas).
- Cache em memoria apenas (volatil ao reiniciar).
- Coordenadas aproximadas (capitais estaduais) — distancias podem ser imprecisas.
- Token de autenticacao renovado automaticamente.
- O filtro `plano` e aceito mas nao aplicado em v1 (wiring exige lookup de codigoRede, fora do escopo).
- O filtro `tipo` e aplicado client-side apos a busca (a API nao suporta filtro direto por tipo).
- Busca por localizacao apenas (so `estado`/`cidade`) nao e suportada — informe `nome` (>= 3 chars) ou `especialidade`.

## Troubleshooting

| Erro | Causa | Solucao |
|---|---|---|
| `SITE_UNREACHABLE` | API fora do ar ou sem rede | Verificar conexao e tentar novamente |
| `SEARCH_TIMEOUT` | Requisicao a API excedeu `TIMEOUT_SEARCH_TOTAL_MS` | Tentar novamente; se persistir, aumentar o timeout |
| `VALIDATION_ERROR` | Filtros insuficientes, UF invalida ou busca por localizacao apenas | Informar `nome` (>= 3 chars) ou `especialidade` junto com a localizacao |
| `SCRAPER_CRASH` | Erro inesperado | Verificar logs com LOG_LEVEL=debug |

## Aviso legal

> Esta ferramenta automatiza consultas a API publica de rede referenciada do Bradesco Saude para uso pessoal. Nao e afiliada ao Bradesco. O usuario e responsavel por cumprir os Termos de Uso do site alvo. Os dados retornados sao cacheados em memoria por curto periodo e nao sao persistidos ou redistribuidos.