LLM-powered scientific assistant for drug discovery using Groq and LangChain with tools for molecular descriptors, adverse effects, and compound information
This server has severe definition quality issues. Tool descriptions are present but minimal (10-50 chars, well below the 194-char baseline). Input schemas are visible but lack parameter descriptions entirely, every tool accepts only a string parameter with no guidance on format, constraints, or expected values. Output schemas are completely undocumented; tools return free-form strings or dicts with no structure guidance for the LLM. Tool names lack action verbs (e.g., 'DrugDescriptorCalculator' instead of 'compute_drug_descriptors'). No error handling guidance, no pagination support, no idempotency markers. The codebase shows tool definitions scattered across multiple files (durg_tools.py, mcp_tools.py, mcp_router.py, scientific_tools/) with inconsistent registration patterns, making it unclear which tools are actually exposed via MCP. Critical: parameter descriptions are completely absent, LLMs cannot infer what 'drug_name' or 'query' should contain, format, or constraints.
Compute basic molecular descriptors from SMILES
Verify scientific drug information
Returns medical usage and category of a drug.
Suggests drug alternatives.
Returns known side effects.
Get adverse effects of a drug from OpenFDA
Get chemical compound information from PubChem.
Zero parameter descriptions across all 8 tools. Every tool accepts string input(s) with no guidance on format, constraints, valid values, or examples. LLMs cannot infer whether 'drug_name' expects 'Paracetamol', 'paracetamol', 'acetaminophen', or a PubChem CID.
No output schemas documented. Tools return free-form strings ('...is commonly used in medical treatment') or dicts (compute_descriptors returns {mw, logp, hbd, hba, canonical}) with no type hints or field descriptions. LLMs cannot plan downstream calls or extract structured data.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 26 | 2026-07-28+ | v2 |
Search biomedical research papers related to a query.
Tool names lack action verbs. 'DrugDescriptorCalculator' should be 'compute_drug_descriptors'; 'FactChecker' should be 'verify_drug_facts'. Verb-first naming (get_, search_, compute_) helps LLMs parse intent from the name alone.
Tool descriptions are too brief (10-50 chars vs. 194-char baseline). 'Compute basic molecular descriptors from SMILES' lacks context on when to use it vs. get_compound_info, what SMILES format is expected, or what the output fields mean.
No error handling guidance. Tools return generic strings or dicts with no indication of failure modes, retryability, or recovery steps. E.g., get_adverse_effects calls OpenFDA but provides no guidance if the drug is not found or the API times out.