Skip to main content
Glama
ProDoctor MCP Server

ProDoctor MCP Server

by dotojr123

Servidor MCP para API ProDoctor Cloud

Servidor Model Context Protocol (MCP) que expõe a API Aberta do ProDoctor Cloud como ferramentas acessíveis por agentes de IA (Claude Code, Cursor, Codex, etc.) via protocolo STDIO.

Arquitetura

src/
├── index.ts                  # Bootstrap MCP (server + handlers genéricos)
├── client/
│   └── prodoctor-api.ts      # Axios client + rate limiter (token-bucket) + retry
├── utils/
│   ├── dates.ts              # formatDate, formatObjectDates (ISO → dd/mm/yyyy)
│   └── strings.ts            # cleanString (normalização CPF/telefone)
└── tools/
    ├── index.ts              # Agregador central (ALL_TOOLS + TOOL_HANDLERS)
    ├── agenda.ts             # 10 tools — módulo Agenda completo
    ├── pacientes.ts          # 3 tools — listar, pesquisar, detalhar
    ├── usuarios.ts           # 2 tools — listar, detalhar
    └── procedimentos.ts      # 3 tools — pesquisar, detalhar, tabelas

Princípios

  • Rate limiting: token-bucket de 120 req/min que aguarda (nunca devolve 429 ao agente).

  • Retry: backoff exponencial (2 tentativas) em 429/5xx.

  • Fim do filtro em memória: buscas passam filtros server-side (PascalCase); fallback apenas sobre a página retornada.

  • Schemas tipados: JSON Schema detalhado em cada tool — o agente sabe exatamente o que preencher.

  • Sem switch gigante: dispatcher via Map<name, handler>, fácil de estender.

Related MCP server: mcp-brasilapi

Instalação e Configuração

Pré-requisitos

  • Node.js 18+

  • npm

Instalar

npm install

Configurar credenciais

Copie .env.example para .env e preencha suas chaves:

cp .env.example .env
PRODOCTOR_API_KEY="sua_chave_api_aqui"
PRODOCTOR_API_PASSWORD="sua_senha_api_aqui"
PRODOCTOR_TIMEZONE="-03:00"
PRODOCTOR_TIMEZONE_NAME="America/Sao_Paulo"
PRODOCTOR_BASE_URL="https://open-api.prodoctor.net"

Dica: envolva valores com caracteres especiais em aspas duplas para evitar interpretação do # como comentário.

Compilar e executar

npm run build
npm start

Ou em modo desenvolvimento:

npm run dev

Ferramentas Disponíveis (18 tools)

Agenda (10)

Tool MCP

Endpoint API

Descrição

agenda_listar_agendamentos

POST /Agenda/Listar

Lista agendamentos do dia para um usuário

agenda_buscar_agendamentos_paciente

POST /Agenda/Buscar

Busca agendamentos de um paciente por período

agenda_horarios_livres

POST /Agenda/Livres

Busca horários livres na agenda

agenda_inserir_agendamento

POST /Agenda/Inserir

Insere novo agendamento

agenda_alterar_agendamento

PUT /Agenda/Alterar

Altera dados de um agendamento (remarcar)

agenda_desmarcar_agendamento

PATCH /Agenda/Desmarcar

Desmarca/cancela um agendamento

agenda_excluir_agendamento

POST /Agenda/Excluir

Exclui definitivamente um agendamento

agenda_detalhar_agendamento

POST /Agenda/Detalhar

Detalha informações de um agendamento

agenda_buscar_por_status_tipo

POST /Agenda/BuscarPorStatusTipo

Busca agendamentos por status/tipo

agenda_alterar_status_agendamento

PATCH /Agenda/AlterarStatus

Altera status de um agendamento

Pacientes (3)

Tool MCP

Endpoint API

Descrição

pacientes_listar

POST /Pacientes

Lista pacientes (paginado, sem filtro)

pacientes_pesquisar

POST /Pacientes

Pesquisa por nome/CPF/telefone (server-side + fallback)

paciente_detalhar

GET /Pacientes/Detalhar/{codigo}

Detalha cadastro de um paciente

Usuários (2)

Tool MCP

Endpoint API

Descrição

usuarios_listar

POST /Usuarios

Lista todos os usuários

usuario_detalhar

GET /Usuarios/Detalhar/{codigo}

Detalha um usuário específico

Procedimentos + Tabelas (3)

Tool MCP

Endpoint API

Descrição

procedimentos_pesquisar

POST /Procedimentos

Pesquisa procedimentos por tabela/nome/código

procedimento_detalhar

GET /Procedimentos/Detalhar/{tabela}/{codigo}

Detalha um procedimento

tabelas_procedimentos_listar

GET /TabelasProcedimentos

Lista tabelas de procedimentos disponíveis

Integração com IDEs

O servidor é executado via STDIO. Configure seu cliente MCP apontando para:

{
  "mcpServers": {
    "prodoctor": {
      "command": "node",
      "args": ["/caminho/absoluto/para/prodoctor-mcp-server/dist/index.js"],
      "env": {
        "PRODOCTOR_API_KEY": "sua_chave",
        "PRODOCTOR_API_PASSWORD": "sua_senha"
      }
    }
  }
}

Ou use o arquivo .env no diretório do servidor.

Testes

node test-connection.js

Testa conexão direta com a API e o protocolo MCP via STDIO.

Cobertura de Endpoints

Veja ENDPOINTS-API.md para o mapeamento completo de cobertura dos 66 endpoints da API. Módulos com cobertura total: Agenda (10/10). Módulos parciais agora completos: Pacientes (listar+detalhar), Usuários (listar+detalhar), Procedimentos (pesquisar+detalhar+tabelas). Módulos não-médicos ainda não implementados: Anamneses, Convênios, Domínios, Especialidades, Estoque, Exportações, Financeiro, Imagens, Impressos, Locais.

Notas sobre campos presumidos

Campos inferidos sem spec oficial confirmada estão marcados no código-fonte com // PRESUMIDO. Eles facilitam o uso imediato mas podem divergir da API real — ajuste ao validar com a spec oficial.

Autenticação e Rate Limit

  • Headers: X-APIKEY, X-APIPASSWORD, X-APITIMEZONE, X-APITIMEZONENAME

  • Limite da API: 120 requisições/minuto — gerenciado automaticamente pelo token-bucket

Available Tools

18 tools
agenda_alterar_agendamentoC

Altera as informações de um agendamento existente (ex: remarcar data/hora).

Inputs: data (required), hora (required), usuarioId (required), pacienteId (required), +6 more.

agenda_alterar_status_agendamentoC

Altera o status atual de um agendamento (ex: Confirmado, Aguardando, Finalizado).

Inputs: estadoCodigo (required), agendamentoId (required).

agenda_buscar_agendamentos_pacienteB

Busca os agendamentos de um paciente específico num período.

Inputs: pacienteId (required), dataFim, dataInicio, quantidade.

agenda_buscar_por_status_tipoC

Busca agendamentos filtrando pelo status/tipo da consulta.

Inputs: usuarioId (required), estadoCodigo (required), dataFim, dataInicio, +1 more.

agenda_desmarcar_agendamentoC

Desmarca (cancela) um agendamento existente na agenda.

Inputs: data (required), hora (required), usuarioId (required), observacao, +1 more.

agenda_detalhar_agendamentoC

Traz informações detalhadas sobre um agendamento específico.

Inputs: agendamentoId (required).

agenda_excluir_agendamentoB

Exclui definitivamente um agendamento da agenda.

Inputs: agendamentoId (required).

agenda_horarios_livresB

Busca por horários livres na agenda de um usuário em um período determinado.

Inputs: dataFim (required), usuarioId (required), dataInicio (required), duracao, +1 more.

agenda_inserir_agendamentoC

Insere um novo agendamento na agenda.

Inputs: data (required), hora (required), usuarioId (required), pacienteId (required), +5 more.

agenda_listar_agendamentosA

Lista os agendamentos do dia para um usuário (médico/colaborador) específico.

Inputs: usuarioId (required), data.

paciente_detalharB

Detalha todas as informações do cadastro de um paciente específico.

Inputs: codigo (required).

pacientes_listarA

Lista pacientes cadastrados (paginado, sem filtro).

Inputs: pagina, quantidade.

pacientes_pesquisarA

Pesquisa pacientes por nome, CPF e/ou telefone. A busca é feita no servidor; se a API não suportar os filtros, aplica fallback apenas sobre a página retornada.

Inputs: cpf, nome, telefone, quantidade.

procedimento_detalharA

Detalha informações completas de um procedimento médico com base em sua tabela e código.

Inputs: codigo (required), tabela (required).

procedimentos_pesquisarA

Pesquisa procedimentos médicos de uma tabela. A busca por nome/código é feita no servidor; se a API não suportar os filtros, aplica fallback apenas sobre a página retornada.

Inputs: nome, codigo, quantidade, tabelaCodigo.

tabelas_procedimentos_listarB

Busca as tabelas de procedimentos médicos disponíveis no sistema.

Inputs: no named parameters.

usuario_detalharB

Detalha informações específicas de um usuário (médico, atendente, etc.) cadastrado.

Inputs: codigo (required).

usuarios_listarB

Lista todos os usuários (médicos e colaboradores) cadastrados no sistema.

Inputs: no named parameters.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 18 tools

    Disambiguation5/5

    Each tool targets a distinct action on specific entities (agenda, paciente, procedimento, tabela, usuario). Even within the appointment group, verbs like alterar, buscar, desmarcar, detalhar, excluir, horarios_livres, inserir, listar are clearly separated. No two tools have overlapping purposes.

    Naming Consistency5/5

    All tools follow a consistent snake_case pattern with an entity prefix followed by a verb or verb_noun (e.g., agenda_inserir_agendamento, paciente_detalhar). No mixing of conventions or cases.

    Tool Count5/5

    18 tools cover the main operations of a medical scheduling system: appointments (10), patients (3), procedures (3), procedure tables (1), and users (2). The count is well-scoped for the domain without being excessive or insufficient.

    Completeness3/5

    Appointment lifecycle is fully covered (CRUD, status changes, free slots). However, patient management lacks creation and update tools (only list, search, detail). Procedure and user tools also miss creation/update/deletion. These gaps hinder complete workflow automation.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      C
      maintenance
      Exposes tools from the Ecuro Light API for managing clinical appointments, patient records, and clinic availability. It enables users to perform healthcare management tasks such as scheduling, patient search, and report generation through MCP-compatible clients.
      -
    • A
      license
      A
      quality
      D
      maintenance
      Exposes the BrasilAPI as MCP tools, enabling AI agents to query Brazilian public data such as CEP, CNPJ, DDD, IBGE, banks, PIX, FIPE, NCM, exchange rates, taxes, weather, CVM information, holidays, ISBN, domains, stock tickers, and TUSS.
      41
      Apache 2.0
    • A
      license
      C
      quality
      D
      maintenance
      Exposes the Feegow clinic management API as MCP tools for agents, enabling scheduling, patient management, and more via natural language.
      97
      MIT