medical-mcp

Um servidor MCP que fornece informações médicas abrangentes consultando múltiplas APIs médicas autoritativas, incluindo FDA, WHO, PubMed, Google Scholar e RxNorm.

Documentação

🩺 Servidor MCP Médico

Traga dados médicos confiáveis diretamente para seu fluxo de trabalho com IA. Um servidor local para acesso privado e gratuito a FDA, OMS, PubMed, RxNorm, Semantic Scholar e Google Scholar. Sem chaves de API. Sem vazamento de dados.

Um servidor MCP (Model Context Protocol) que traz informações médicas autorizadas para ambientes de codificação com IA, como Cursor e Claude Desktop.

medical-mcp MCP server

Trust Score

Por que usar o Medical MCP?

  • 🔒 Seus dados nunca saem do seu computador – Funciona 100% localmente; sem rastreamento, sem logs, sem nuvem
  • 🆓 Sem chaves de API – Funciona imediatamente, zero configuração
  • 🏥 Fontes autorizadas – FDA, TGA, Health Canada, EMA, DailyMed, OMS, PubMed, RxNorm, ClinicalTrials.gov
  • ⚡ Configuração fácil – Instalação com um clique no Cursor ou configuração manual simples
  • 🔬 Abrangente – Informações sobre medicamentos, estatísticas de saúde, literatura médica, diretrizes clínicas, fontes pediátricas
  • 🛡️ Resiliente – Disjuntores, novas tentativas com backoff, limitadores de taxa e fallbacks automáticos
  • 📊 Classificação por evidência – Resultados marcados com tipo de estudo e nível de evidência (Meta-Análise → Relato de Caso). As marcações são rótulos automáticos do título e resumo, não graus verificados de forma independente.
  • 🏥 Monitoramento de saúde – Ferramenta integrada de verificação de saúde para diagnosticar a disponibilidade das fontes

Novidades na v2.0

  • Camada de resiliência – Disjuntores por fonte, novas tentativas com backoff exponencial + jitter, limitadores de taxa por token bucket por fonte
  • Busca web Monid – Scholar, AAP e HTML do PMC passam pelo Monid TinyFish (busca/coleta estilo Tavily). Semantic Scholar é o fallback sem chave
  • Classificação por evidência – Resultados do PubMed e de múltiplos bancos de dados marcados com tipo de estudo (Revisão Sistemática, ECR, Coorte, Relato de Caso, etc.) e grau de evidência (I–V). Essas marcações são rótulos automáticos do título e resumo, não graus verificados de forma independente.
  • Validação de respostas – Esquemas Zod validam todas as respostas das APIs upstream, registrando avisos sobre desvios de esquema sem interromper o funcionamento
  • Suporte a chave de API NCBI – A variável de ambiente opcional NCBI_API_KEY aumenta o PubMed de 3 req/seg para 10 req/seg
  • Ferramenta de verificação de saúde – health-check testa todas as fontes upstream e informa latência, estados dos disjuntores, status dos limitadores de taxa e saúde do cache
  • Registro estruturado – Registro estruturado em níveis (DEBUG/INFO/WARN/ERROR) com rastreamento de fonte e tempo para cada chamada de API
  • Tempos limite de solicitação – Todas as chamadas upstream têm tempos limite explícitos de resposta/prazo para evitar travamentos

Início Rápido

Instalar no Cursor (Recomendado):

🔗 Instalar no Cursor

Ou instalar manualmente:

npm install -g medical-mcp
# Or from source:
git clone https://github.com/JamesANZ/medical-mcp.git
cd medical-mcp && npm install && npm run build

Recursos

💊 Informações sobre Medicamentos

  • search-drugs – Pesquisa em FDA, DailyMed, TGA (Austrália), Health Canada e EMA. Filtre com countries (US, AU, CA, EU). Códigos não suportados são rejeitados em vez de retornados como resultados regulatórios vazios.
  • search-drug-nomenclature – Nomes padronizados de medicamentos via RxNorm (limit padrão é 25)
  • search-drug-safety – Eventos adversos do FDA FAERS (com IDs de relatório), recalls e escassez

📊 Estatísticas de Saúde

  • get-health-statistics – Dados do Observatório Global de Saúde da OMS (expectativa de vida, mortalidade, prevalência de doenças)

🔬 Literatura Médica

  • search-medical-literature – Pesquise mais de 30 milhões de artigos do PubMed (com classificação por evidência). O question ou rerank opcional reordena esses resultados para que artigos que realmente respondem à pergunta fiquem acima de artigos que apenas compartilham palavras-chave.
  • rank-search-hits – Mesma reordenação para uma lista que você já possui (título + resumo). Apenas classificação de recuperação — não é diagnóstico ou aconselhamento.
  • get-article-details – Informações detalhadas do artigo por PMID
  • search-google-scholar – Artigos acadêmicos via Monid TinyFish (research_paper) quando MONID_API_KEY está definido; caso contrário, Semantic Scholar
  • search-medical-journals – Principais periódicos (NEJM, JAMA, Lancet, BMJ, Nature Medicine)

🏥 Ferramentas Clínicas

  • search-clinical-guidelines – Recomendações de prática de organizações médicas
  • search-clinical-trials – ClinicalTrials.gov
  • list-sources – Catálogo completo de adaptadores de registro e fontes de ferramentas dedicadas (OMS, PubMed, RxNorm, Scholar, AAP), incluindo qual ferramenta MCP alcança cada uma. Este não é o fanout de cinco reguladores do search-drugs.

👶 Fontes Pediátricas

  • search-pediatric-guidelines – Relatórios de política/clínicos da AAP via PubMed, além de Bright Futures. Resultados web fora do domínio são descartados; os rótulos vêm da página, não de qual busca foi executada.
  • search-pediatric-literature – Pesquisa de principais periódicos pediátricos. question / rerank opcionais como na literatura médica.
  • search-pediatric-drugs – Medicamentos com rotulagem pediátrica, NDC, fabricante e URL do DailyMed

🛡️ Confiabilidade e Monitoramento

  • health-check – Teste todas as fontes upstream, informe latência/status, estados dos disjuntores e saúde do cache
  • get-cache-stats – Veja estatísticas do cache (taxa de acertos, uso de memória, contagem de entradas)

Instalação

Cursor (Um Clique)

Clique no link de instalação acima ou use:

cursor://anysphere.cursor-deeplink/mcp/install?name=medical-mcp&config=eyJtZWRpY2FsLW1jcCI6eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIm1lZGljYWwtbWNwIl19fQ==

Instalação Manual

Requisitos: Node.js 18+ e npm

git clone https://github.com/JamesANZ/medical-mcp.git
cd medical-mcp
npm install
npm run build
npm start

Claude Desktop

Adicione ao claude_desktop_config.json:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "medical-mcp": {
      "command": "node",
      "args": ["/absolute/path/to/medical-mcp/build/index.js"],
      "env": {
        "NCBI_API_KEY": "your_optional_key_here"
      }
    }
  }
}

Reinicie o Claude Desktop após a configuração.

Exemplos de Uso

Pesquisar Informações sobre Medicamentos

{
  "tool": "search-drugs",
  "arguments": { "query": "Tylenol", "limit": 5 }
}

Pesquisar Literatura Médica (com Classificação por Evidência)

Os resultados agora incluem marcações de evidência:

1. Efficacy of COVID-19 Treatments: A Meta-Analysis
   Evidence: [Systematic Review / Meta-Analysis • tool grade I]
   Authors: Smith J, Jones K...

2. Randomized Trial of Remdesivir in Adults
   Evidence: [Randomized Controlled Trial • tool grade II]
   Authors: Chen L, Wang M...

Executar Verificação de Saúde

{ "tool": "health-check", "arguments": {} }

Retorna:

✅ FDA: healthy (234ms)
✅ PubMed: healthy (156ms)
✅ WHO: healthy (890ms)
✅ RxNorm: healthy (312ms)
✅ ClinicalTrials: healthy (445ms)
✅ SemanticScholar: healthy (189ms)

NCBI API Key: ✅ Configured (10 req/sec PubMed)

Arquitetura

Pilha de Resiliência

Toda chamada de API passa por uma pilha de resiliência de três camadas:

Request → Rate Limiter → Circuit Breaker → Retry (with backoff) → Upstream API
  • Limitador de taxa — Token bucket por fonte evita exceder os limites da API (PubMed: 3/seg sem chave, 10/seg com; FDA: 4/seg; Google Scholar: 0,2/seg)
  • Disjuntor — Após 3 falhas consecutivas, o circuito abre por 60s, prevenindo falhas em cascata. Transições: FECHADO → ABERTO → MEIO_ABERTO → FECHADO
  • Nova tentativa — Backoff exponencial com jitter total em falhas transitórias (429, 5xx, erros de rede). Máximo de 2 novas tentativas

Classificação por Evidência

Resultados do PubMed e de múltiplos bancos de dados são classificados automaticamente:

GrauTipo de EstudoExemplos
IRevisão Sistemática / Meta-AnáliseRevisões Cochrane, estudos PRISMA
IIEnsaio Clínico RandomizadoEnsaios duplo-cegos controlados por placebo
IIIEstudo de Coorte / Caso-ControleProspectivos, retrospectivos, baseados em população
IVRelato de Caso / Série de CasosApresentações de casos clínicos
VOpinião de Especialista / EditorialComentários, perspectivas, revisões narrativas

Essas marcações são rótulos automáticos do título e resumo, não graus verificados de forma independente.

Fallback Automático

Quando MONID_API_KEY está definido, a busca Scholar/AAP e a coleta de HTML do PMC passam pelo Monid TinyFish. Sem chave, o Scholar usa como fallback a API do Semantic Scholar — gratuita, bem estruturada, 100 req/seg, sem necessidade de chave de API.

Validação de Respostas

Todas as respostas das APIs upstream são validadas contra esquemas Zod. Se uma fonte mudar o formato de resposta da API, o servidor registra um aviso, mas continua operando com dados brutos — sem travamentos, apenas alertas.

Fontes de Dados

FonteCoberturaFrequência de AtualizaçãoResiliência
FDARótulos de medicamentos aprovados nos EUATempo realDisjuntor + nova tentativa
DailyMedRótulos estruturados de produtos dos EUADiáriaDisjuntor + nova tentativa
TGA ARTGRegistro Australiano de Produtos TerapêuticosTempo realDisjuntor + nova tentativa
Health Canada DPDMedicamentos comercializados/aprovados no CanadáTempo realDisjuntor + nova tentativa
EMAMedicamentos autorizados centralmente na UEJSON duas vezes ao diaCache em memória + nova tentativa
FDA FAERS / recalls / escassezSinais de segurança dos EUATempo realDisjuntor + nova tentativa
OMSEstatísticas globais de saúde (194 países)AnualDisjuntor + nova tentativa
PubMedMais de 30 milhões de citações médicasDiáriaDisjuntor + nova tentativa + chave NCBI
RxNormNomenclatura padronizada de medicamentos (EUA)SemanalDisjuntor + nova tentativa
TinyFish via MonidArtigos de pesquisa + web com escopo de domínioTempo realMONID_API_KEY opcional
Semantic ScholarMais de 200 milhões de artigos com dados de citaçãoTempo realDisjuntor + nova tentativa
AAPBright Futures e declarações de políticaPeriódicaDegradação graciosa
Periódicos PediátricosPrincipais periódicos pediátricosDiáriaDisjuntor + nova tentativa
ClinicalTrials.govEnsaios intervencionais e observacionaisTempo realDisjuntor + nova tentativa

Configuração

Variáveis de Ambiente

Desempenho e Confiabilidade:

VariávelPadrãoDescrição
NCBI_API_KEY(nenhum)Chave gratuita da API PubMed — 3x mais throughput. Obtenha uma em NCBI
MONID_API_KEY(nenhum)Opcional. Quando definida, Scholar/AAP/HTML do PMC usam a busca e coleta TinyFish do Monid (coletor web estilo Tavily). Obtenha uma chave em Monid
TINYFISH_API_KEY(nenhum)Fallback opcional se você chamar o TinyFish diretamente em vez de através do Monid.
TYPESAFE_API_KEY(nenhum)Opcional. Necessária para reordenar resultados de literatura com JEV (jev-1.13.0). Sem ela, a busca funciona como antes. Obtenha uma chave em TypeSafe
LOG_LEVELINFONível de registro: DEBUG, INFO, WARN, ERROR, SILENT

Cache:

VariávelPadrãoDescrição
CACHE_ENABLEDtrueAtivar/desativar cache
CACHE_MAX_SIZE1000Máximo de entradas de cache
CACHE_TTL_FDA86400TTL da FDA em segundos (24h)
CACHE_TTL_PUBMED3600TTL do PubMed (1h)
CACHE_TTL_WHO604800TTL da OMS (7d)
CACHE_TTL_RXNORM2592000TTL do RxNorm (30d)
CACHE_TTL_GOOGLE_SCHOLAR3600TTL do Google Scholar (1h)
CACHE_TTL_BRIGHT_FUTURES2592000TTL do Bright Futures (30d)
CACHE_TTL_AAP_POLICY604800TTL da Política da AAP (7d)
CACHE_TTL_REGULATORS86400TTL de TGA/EMA/Health Canada
CACHE_TTL_SAFETY3600TTL de FAERS/recalls/escassez
CACHE_TTL_TRIALS3600TTL de busca de ensaios clínicos
CACHE_CLEANUP_INTERVAL300000Intervalo de limpeza em ms (5min)

Deduplicação:

VariávelPadrãoDescrição
DEDUP_ENABLEDtrueAtivar/desativar deduplicação entre fontes
DEDUP_SIMILARITY_THRESHOLD0.9Limiar de correspondência difusa de títulos (0.0–1.0)
DEDUP_LOG_REMOVEDfalseRegistrar duplicatas removidas

Desempenho: Respostas em cache retornam em <10ms vs 800–1500ms para chamadas de API. Taxa de acerto esperada: 60%+ para consultas comuns.

Segurança e Privacidade

  • ✅ Somente localhost – O servidor roda localmente, sem acesso externo
  • ✅ Sem armazenamento de dados – Todas as consultas são em tempo real, nada é salvo em disco
  • ✅ Isolamento de processos – Os dados médicos permanecem na sua máquina
  • ✅ Nenhuma chave de API necessária – Funciona sem credenciais (chaves NCBI e Monid são opcionais)

Detalhes Técnicos

Construído com: Node.js, TypeScript, MCP SDK Dependências: @modelcontextprotocol/sdk, superagent, zod, express, cors Plataformas: macOS, Windows, Linux

Estrutura do código-fonte:

src/
├── index.ts                    # MCP tool definitions
├── utils.ts                    # Core API functions + formatters
├── constants.ts                # API URLs, config constants
├── types.ts                    # TypeScript types
├── logger.ts                   # Structured leveled logging
├── rank/                       # Optional JEV post-retrieval ranker (question vs abstract)
│   ├── policy.ts               # Keep / demote / drop — no HTTP
│   └── jev-client.ts           # TypeSafe System One client (jev-1.13.0)
├── cache/
│   ├── config.ts               # TTL policies, env var support
│   └── manager.ts              # In-memory LRU cache
├── resilience/
│   ├── index.ts                # Composed resilientCall()
│   ├── circuit-breaker.ts      # Per-source circuit breaker
│   ├── retry.ts                # Exponential backoff + jitter
│   └── rate-limiter.ts         # Token bucket rate limiter
├── validation/
│   └── schemas.ts              # Zod schemas for API responses
├── sources/                    # Country/source registry + adapters
│   ├── adapters/               # FDA, TGA, Health Canada, EMA, DailyMed, FAERS, trials, TinyFish
│   └── ...
└── utils/
    ├── deduplication.ts         # Cross-source paper dedup
    ├── evidence-grading.ts      # Study type classification
    └── semantic-scholar.ts      # Semantic Scholar API client

Aviso Médico

⚠️ Importante: Esta ferramenta fornece informações de fontes confiáveis, mas não deve substituir aconselhamento médico profissional, diagnóstico ou tratamento. Sempre consulte profissionais de saúde qualificados para decisões médicas.

Contribuindo

⭐ Se este projeto ajudar você, dê uma estrela no GitHub! ⭐

Contribuições são bem-vindas! Abra uma issue ou envie um pull request.

Licença

Licença MIT – veja LICENSE.md para detalhes.

Suporte

Se você achar este projeto útil, considere apoiá-lo:

⚡ Rede Lightning

lnbc1pjhhsqepp5mjgwnvg0z53shm22hfe9us289lnaqkwv8rn2s0rtekg5vvj56xnqdqqcqzzsxqyz5vqsp5gu6vh9hyp94c7t3tkpqrp2r059t4vrw7ps78a4n0a2u52678c7yq9qyyssq7zcferywka50wcy75skjfrdrk930cuyx24rg55cwfuzxs49rc9c53mpz6zug5y2544pt8y9jflnq0ltlha26ed846jh0y7n4gm8jd3qqaautqa

₿ Bitcoin: bc1ptzvr93pn959xq4et6sqzpfnkk2args22ewv5u2th4ps7hshfaqrshe0xtp

Ξ Ethereum/EVM: 0x42ea529282DDE0AA87B42d9E83316eb23FE62c3f