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.
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_KEYaumenta o PubMed de 3 req/seg para 10 req/seg - Ferramenta de verificação de saúde –
health-checktesta 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):
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 comcountries(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 (limitpadrã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). Oquestionourerankopcional 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 PMIDsearch-google-scholar– Artigos acadêmicos via Monid TinyFish (research_paper) quandoMONID_API_KEYestá definido; caso contrário, Semantic Scholarsearch-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édicassearch-clinical-trials– ClinicalTrials.govlist-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 dosearch-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/rerankopcionais 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 cacheget-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:
| Grau | Tipo de Estudo | Exemplos |
|---|---|---|
| I | Revisão Sistemática / Meta-Análise | Revisões Cochrane, estudos PRISMA |
| II | Ensaio Clínico Randomizado | Ensaios duplo-cegos controlados por placebo |
| III | Estudo de Coorte / Caso-Controle | Prospectivos, retrospectivos, baseados em população |
| IV | Relato de Caso / Série de Casos | Apresentações de casos clínicos |
| V | Opinião de Especialista / Editorial | Comentá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
| Fonte | Cobertura | Frequência de Atualização | Resiliência |
|---|---|---|---|
| FDA | Rótulos de medicamentos aprovados nos EUA | Tempo real | Disjuntor + nova tentativa |
| DailyMed | Rótulos estruturados de produtos dos EUA | Diária | Disjuntor + nova tentativa |
| TGA ARTG | Registro Australiano de Produtos Terapêuticos | Tempo real | Disjuntor + nova tentativa |
| Health Canada DPD | Medicamentos comercializados/aprovados no Canadá | Tempo real | Disjuntor + nova tentativa |
| EMA | Medicamentos autorizados centralmente na UE | JSON duas vezes ao dia | Cache em memória + nova tentativa |
| FDA FAERS / recalls / escassez | Sinais de segurança dos EUA | Tempo real | Disjuntor + nova tentativa |
| OMS | Estatísticas globais de saúde (194 países) | Anual | Disjuntor + nova tentativa |
| PubMed | Mais de 30 milhões de citações médicas | Diária | Disjuntor + nova tentativa + chave NCBI |
| RxNorm | Nomenclatura padronizada de medicamentos (EUA) | Semanal | Disjuntor + nova tentativa |
| TinyFish via Monid | Artigos de pesquisa + web com escopo de domínio | Tempo real | MONID_API_KEY opcional |
| Semantic Scholar | Mais de 200 milhões de artigos com dados de citação | Tempo real | Disjuntor + nova tentativa |
| AAP | Bright Futures e declarações de política | Periódica | Degradação graciosa |
| Periódicos Pediátricos | Principais periódicos pediátricos | Diária | Disjuntor + nova tentativa |
| ClinicalTrials.gov | Ensaios intervencionais e observacionais | Tempo real | Disjuntor + nova tentativa |
Configuração
Variáveis de Ambiente
Desempenho e Confiabilidade:
| Variável | Padrão | Descriçã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_LEVEL | INFO | Nível de registro: DEBUG, INFO, WARN, ERROR, SILENT |
Cache:
| Variável | Padrão | Descrição |
|---|---|---|
CACHE_ENABLED | true | Ativar/desativar cache |
CACHE_MAX_SIZE | 1000 | Máximo de entradas de cache |
CACHE_TTL_FDA | 86400 | TTL da FDA em segundos (24h) |
CACHE_TTL_PUBMED | 3600 | TTL do PubMed (1h) |
CACHE_TTL_WHO | 604800 | TTL da OMS (7d) |
CACHE_TTL_RXNORM | 2592000 | TTL do RxNorm (30d) |
CACHE_TTL_GOOGLE_SCHOLAR | 3600 | TTL do Google Scholar (1h) |
CACHE_TTL_BRIGHT_FUTURES | 2592000 | TTL do Bright Futures (30d) |
CACHE_TTL_AAP_POLICY | 604800 | TTL da Política da AAP (7d) |
CACHE_TTL_REGULATORS | 86400 | TTL de TGA/EMA/Health Canada |
CACHE_TTL_SAFETY | 3600 | TTL de FAERS/recalls/escassez |
CACHE_TTL_TRIALS | 3600 | TTL de busca de ensaios clínicos |
CACHE_CLEANUP_INTERVAL | 300000 | Intervalo de limpeza em ms (5min) |
Deduplicação:
| Variável | Padrão | Descrição |
|---|---|---|
DEDUP_ENABLED | true | Ativar/desativar deduplicação entre fontes |
DEDUP_SIMILARITY_THRESHOLD | 0.9 | Limiar de correspondência difusa de títulos (0.0–1.0) |
DEDUP_LOG_REMOVED | false | Registrar 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