MCP server providing synchronous and asynchronous APIs for NetMHCpan-4.2 tools for MHC Class I binding prediction, epitope scanning, and custom MHC analysis
This server has 13 tools with complete input schemas and descriptions visible in src/server.py. However, there are significant quality gaps: (1) Output schemas are entirely undocumented, no tool describes its return structure, which forces LLMs to infer results blindly. (2) Parameter descriptions are minimal and often lack constraints (e.g., 'job_id' is just 'The job ID returned from a submit_* function', no format guidance). (3) Error handling is absent, tools catch exceptions but return generic error dicts with no recovery guidance. (4) Many parameters lack validation hints (e.g., 'rank_threshold' has no range or unit; 'peptide_lengths' format is underdocumented). (5) The server conflates synchronous and asynchronous operations under the same tool prefix pattern, risking LLM confusion. Tool naming is verb-forward and clear (good), but descriptions are too brief (average ~80 chars, well below the 194-char baseline for A+ tools). Overall: the tools ARE defined and schemas ARE present, but the quality is below production baseline, descriptions lack depth, no output contracts, minimal error guidance.
Cancel a running job.
Export predictions for multiple alleles to Excel format. Fast operation (~1 second) for multi-allele comparison and analysis.
Get log output from a running or completed job.
Get the results of a completed job.
Get the status of a submitted job.
List all submitted jobs.
Enhanced binding prediction with both Eluted Ligand and Binding Affinity scores. Fast operation (~1 second) providing detailed IC50 and elution likelihood predictions.
Output schemas completely undocumented. No tool describes what fields are returned. LLMs must guess result structure, risking failed downstream tool chains and context loss.
Parameter descriptions severely underdocumented. 'rank_threshold' has no unit or range; 'tail' mentions default but no type hint; 'peptide_lengths' format is vague ('comma-separated'). LLMs cannot validate inputs or understand constraints.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 48 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 49 | - | v1 |
Predict binding to custom or novel MHC allele sequences. Fast operation (~1 second) for research and personalized medicine applications.
Predict MHC Class I binding affinity for individual peptides. Fast operation (~1 second) for basic peptide binding prediction.
Scan protein sequence for potential MHC binding epitopes. Fast operation (~1 second) for epitope scanning from FASTA sequences.
Submit batch protein analysis job for asynchronous processing.
Submit batch custom MHC prediction job for asynchronous processing.
Submit multi-allele comparison job for asynchronous processing.
No error handling guidance. Tools return generic {'status': 'error', 'error': str(e)} dicts. LLMs receive raw exception messages with no recovery path. Should guide agent: 'File not found, check path or use create_input_file tool first.'
Async/sync pattern ambiguity. Tools like 'predict_peptide_binding' are marked 'Fast operation (~1 second)' but tool names don't signal sync vs async. When 'submit_batch_protein_analysis' is available, LLM may choose wrong variant. Should name sync tools 'get_*' or 'predict_*_now' and async 'submit_*' consistently.
HLA allele parameter ('allele': 'HLA-A02:01') accepts free-form strings with no enum or validation. Should list valid alleles or document format (e.g., 'HLA-[A|B|C][0-9]{2}:[0-9]{2}') so LLM doesn't hallucinate invalid alleles.
File I/O security gap. Tools accept arbitrary file paths (input_file, output_file) with no validation. No path traversal guards documented. A compromised LLM or adversarial prompt could read /etc/passwd or write to system directories.