MCP server for DROMA drug-omics association analysis (FastMCP 2.13+ compatible)
The server exposes a single tool `analyze_drug_omic_pair` with a comprehensive input schema. The tool description is detailed and domain-specific (233 chars), well above the 10-char minimum and within the 194-char average baseline. However, there are critical gaps: (1) the tool description does NOT explicitly state it is READ_ONLY and will not modify state, despite being marked Risk:READ_ONLY in metadata; (2) parameter descriptions are present but inconsistent in quality, many lack guidance on expected format or constraints (e.g., 'dataset_name' says 'e.g., CCLE, gCSI' but doesn't clarify if these are the only valid values or examples); (3) the output schema is NOT documented, LLMs cannot plan downstream operations or extract fields from results; (4) no error handling or recovery guidance is provided; (5) several parameters like 'select_features' and 'select_drugs' use generic names that could be clearer ('omics_feature_name', 'drug_name'). The schema itself is well-formed with types and defaults, placing this at the lower-middle tier for a single-tool server.
Analyze associations between a drug and an omic feature. Equivalent to R function: analyzeDrugOmicPair() This function analyzes the relationship between drug sensitivity and molecular features (e.g., gene expression, mutations, copy number variations). It supports both continuous features (mRNA, methylation, CNV, protein) and discrete features (mutations, fusions). For MultiDromaSet objects with multiple studies, it can: - Create individual plots for each study - Create a merged plot combining all studies (if merged_enabled=True) - Perform meta-analysis across studies (if meta_enabled=True)
Output schema is not documented. LLMs cannot determine what fields the tool returns, making it impossible to plan downstream operations or extract structured results.
Parameter descriptions lack specificity on expected values and formats. 'dataset_name' description includes examples ('CCLE', 'gCSI') but does not state whether these are the only valid options or a subset. This invites the LLM to hallucinate invalid dataset names.
Tool description does not explicitly state that this is a READ_ONLY, non-destructive operation. While Risk metadata marks it as READ_ONLY, the description should state 'This tool does not modify data' for LLM clarity.
No error handling or recovery guidance. If an invalid drug name or feature is provided, the description does not explain what the LLM should do next (e.g., call a discovery tool to list available drugs/features).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 56 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | 2.13+ | v1 |
Parameter 'feature_type' uses enum-like values ('mRNA', 'cnv', 'meth', etc.) but is typed as string with no explicit enum constraint in the schema. This should be a formal enum to prevent hallucinated values.
Parameter naming is generic in places ('select_features', 'select_drugs'). More explicit names like 'omics_feature_name' and 'drug_name' would improve clarity and reduce LLM confusion.