Certus
Fornece informações médicas e de medicamentos em tempo real usando a API openFDA.
Documentação
Certus
Um servidor Model Context Protocol (MCP) pronto para produção, para informações médicas e de medicamentos em tempo real e com autoridade. O Certus integra-se ao Claude Desktop e fornece acesso ao vivo a dados de medicamentos da FDA, incluindo escassez, recalls e rotulagem, por meio das APIs openFDA.
Versões do Projeto
Este projeto suporta implementações em Python e JavaScript dos servidores MCP. Você pode usar qualquer uma das versões, dependendo do seu ambiente e preferências.
- Versão Python: em
PY_version/(completa em recursos) - Versão JavaScript: em
JS_version/(Node.js, paridade de recursos para informações aprimoradas de medicamentos)
Início Rápido
1. Clone o Repositório
# Clone and enter the project directory
$ git clone <your_repository_url>
$ cd med_info_mcp_project
Configuração da Versão Python (PY_version/)
Instalação
cd PY_version
pip install -r ../requirements.txt
touch __init__.py
Configuração do Ambiente (Opcional)
Crie um arquivo .env para sua chave de API OpenFDA (opcional, melhora os limites de taxa):
OPENFDA_API_KEY=your_api_key_here
Obtenha uma chave de API gratuita em: https://open.fda.gov/apis/authentication/
Testes
Teste o cliente RxNorm:
python3 drug_features.py
Teste o cliente OpenFDA:
python3 openfda_client.py
Integração com Claude Desktop (Python)
Edite o arquivo de configuração do Claude Desktop:
{
"mcpServers": {
"enhanced-medication-info": {
"command": "python3",
"args": ["/full/path/to/PY_version/enhanced_mcp_server.py"]
},
"drug-features": {
"command": "python3",
"args": ["/full/path/to/PY_version/drug_server.py"]
}
}
}
Configuração da Versão JavaScript (JS_version/)
Pré-requisitos
- Node.js v18 ou superior
Instalação
cd JS_version
npm install
Configuração do Ambiente (Opcional)
Defina sua chave de API OpenFDA (opcional, melhora os limites de taxa):
export OPENFDA_API_KEY="your_api_key_here"
Obtenha uma chave de API gratuita em: https://open.fda.gov/apis/authentication/
Testes
Execute o cliente de teste:
npm test
# or
node test-client.js
Integração com Claude Desktop (JavaScript)
Edite o arquivo de configuração do Claude Desktop:
{
"mcpServers": {
"enhanced-medication-info": {
"command": "node",
"args": ["/full/path/to/JS_version/enhanced-mcp-server.js"],
"env": {
"OPENFDA_API_KEY": "your_openfda_api_key_here"
}
}
}
}
Recursos (Ambas as Versões)
- Perfis Abrangentes de Medicamentos: rotulagem da FDA, status de escassez, fabricante e mais
- Busca de Escassez em Tempo Real: dados de escassez ao vivo da openFDA (mais de 1.900 registros)
- Informações de Recall: recalls de medicamentos atuais e históricos do banco de dados de fiscalização da FDA
- Consulta Apenas de Rótulo: recupere apenas a rotulagem de medicamentos aprovada pela FDA
- Orientação para Busca de Escassez: dicas e estratégias para encontrar dados de escassez
- Análise de Tendências de Mercado: analise padrões de escassez e risco para um medicamento
- Análise em Lote: avalie escassez, recalls e risco para até 25 medicamentos de uma vez
Estrutura do Projeto
med_info_mcp_project/
├── JS_version/ # JavaScript/Node.js implementation
│ ├── enhanced-mcp-server.js
│ ├── openfda-client.js
│ ├── package.json
│ ├── test-client.js
│ └── ...
├── PY_version/ # Python implementation
│ ├── enhanced_mcp_server.py
│ ├── drug_server.py
│ ├── drug_features.py
│ ├── ...
├── data/ # Data files (e.g., images for testing)
├── requirements.txt # Python dependencies
├── README.md # This file
└── ...
Endpoints e Ferramentas da API
Todos os endpoints são expostos como ferramentas MCP e podem ser chamados via Claude Desktop ou programaticamente. Abaixo está um resumo de cada endpoint para as versões Python e JavaScript:
Servidor MCP de Informações Aprimoradas de Medicamentos
| Nome da Ferramenta | Descrição | Parâmetros | Exemplo de Solicitação/Resposta |
|---|---|---|---|
get_medication_profile | Perfil completo do medicamento (rótulo + escassez) | drug_identifier (str, obrigatório), identifier_type (str, padrão: openfda.generic_name) | { "drug_identifier_requested": "lisinopril", ... } |
search_drug_shortages | Buscar escassez de medicamentos | search_term (str, obrigatório), limit (int, padrão: 10) | { "search_term": "amoxicillin", "shortage_data": {...} } |
search_drug_recalls | Buscar recalls de medicamentos | search_term (str, obrigatório), limit (int, padrão: 10) | { "search_term": "acetaminophen", "recall_data": {...} } |
get_drug_label_only | Apenas informações de rótulo da FDA | drug_identifier (str, obrigatório), identifier_type (str, padrão: openfda.generic_name) | { "drug_identifier": "lisinopril", "label_data": {...} } |
get_shortage_search_guidance | Orientação para encontrar informações de escassez | drug_name (str, obrigatório) | { "drug_name": "clindamycin", "additional_search_strategies": {...} } |
analyze_drug_market_trends | Analisar tendências de escassez/mercado | drug_name (str, obrigatório), months_back (int, padrão: 12) | { "drug_analyzed": "amoxicillin", "trend_data": {...} } |
batch_drug_analysis | Análise em lote para múltiplos medicamentos | drug_list (lista de str, máx. 25), include_trends (bool, padrão: False) | { "batch_analysis": {...} } |
Servidor MCP de Recursos de Medicamentos (somente Python)
| Nome da Ferramenta | Descrição | Parâmetros | Exemplo de Resposta |
|---|---|---|---|
check_drug_interactions | Verificar possíveis interações medicamentosas | drug1 (str, obrigatório), drug2 (str, obrigatório), additional_drugs (lista, opcional) | { "interaction_analysis": {...} } |
convert_drug_names | Converter entre nomes genéricos e de marca | drug_name (str, obrigatório), conversion_type (str: "generic", "brand", "both", padrão: "both") | { "name_conversion": {...} } |
get_adverse_events | Obter relatórios de eventos adversos da FDA (FAERS) | drug_name (str, obrigatório), time_period (str, padrão "1year"), severity_filter (str, padrão "all") | { "adverse_event_analysis": {...} } |
Fontes de Dados e Documentação da API
- API de Rótulo de Medicamentos openFDA (docs)
Endpoint:https://api.fda.gov/drug/label.json - API de Escassez de Medicamentos openFDA (docs)
Endpoint:https://api.fda.gov/drug/shortages.json - API de Fiscalização/Recalls de Medicamentos openFDA (docs)
Endpoint:https://api.fda.gov/drug/enforcement.json - API FAERS (Eventos Adversos) openFDA (docs)
Endpoint:https://api.fda.gov/drug/event.json - API RxNorm (docs)
Endpoint:https://rxnav.nlm.nih.gov/REST
Solução de Problemas e Perguntas Frequentes
- MCP não funciona no Claude Desktop?
- Verifique novamente os caminhos e comandos do arquivo de configuração
- Garanta que as dependências estejam instaladas (
pip install -r requirements.txtounpm install) - Reinicie o Claude Desktop
- Problemas com a chave de API? Adicione sua chave ao
.env(Python) ou como variável de ambiente (JS) para limites de taxa mais altos - Versão errada do Claude? Use o Claude Desktop, não o claude.ai web
- Permissões? Garanta que os arquivos do servidor sejam executáveis
Dependências
- Python: Veja
requirements.txt - JavaScript: Veja
JS_version/package.json
Licença
Este projeto fornece acesso a dados públicos da FDA por meio das APIs openFDA. Sempre consulte profissionais de saúde para decisões médicas.
Contribuindo
Contribuições são bem-vindas! Abra issues ou pull requests para melhorias ou correções de bugs.