MCP server for cyclic peptide design and analysis using MCTS reinforcement learning, AlphaFold structure prediction, and peptide-protein interaction analysis
HighPlay MCP exposes 10 tools for cyclic peptide design and MCTS training. Across the codebase, tool definitions show inconsistent quality: several tools have adequate descriptions and input schemas, but critical gaps emerge in parameter descriptions, output schema documentation, error handling guidance, and composition patterns. The average tool scores 42/100, below median. Specific concerns: (1) Many parameters lack descriptions or have minimal descriptions; (2) Output schemas are not formally documented for any tool; (3) Error handling provides no recovery guidance; (4) Tools like 'list_jobs' and 'train_mcts_evaluate_model' appear to be inferred from test code rather than explicitly defined in the server, capping their scores at 50; (5) Parameter relationships (e.g., 'input_file' vs 'peptide_seq' in analyze_cyclic_peptide) are not documented. The naming is generally solid (verb-noun pattern), and schemas are present with types, but lack the richness and user-guidance needed for production use.
Analyze cyclic peptide-protein interactions with binding metrics and mutation suggestions. Fast operation - returns results immediately (typically <10 seconds).
Cancel a running cyclic peptide computation job.
Get log output from a running or completed job.
Get the results of a completed cyclic peptide computation job.
Get the status of a submitted cyclic peptide computation job.
List all submitted cyclic peptide computation jobs.
Submit MCTS policy-value network training job. This task may take more than 10 minutes depending on epochs and data size. Use get_job_status() to monitor progress and get_job_result() to retrieve results.
Output schemas completely undocumented. No tool declares what fields are returned, their types, or meanings. LLMs cannot plan multi-step tool chains without knowing what data is available.
Many parameters lack descriptions or have minimal descriptions (<20 chars). Examples: 'job_id' in get_job_status has only 'The job ID returned from a submit_* function' (57 chars, minimal context). 'tail' in get_job_log says 'Number of lines from end' but does not clarify what '0' means or typical use cases.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 49 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 52 | - | v1 |
Submit cyclic peptide design job using MCTS optimization. This is a long-running task (typically >10 minutes for 300+ iterations). Uses MCTS reinforcement learning to optimize peptide sequences.
Evaluate a trained MCTS policy-value model. Fast operation - evaluates model performance on test data.
Generate training data for MCTS policy-value network. Fast operation - generates synthetic peptide training data.
Mutually exclusive parameters not documented. analyze_cyclic_peptide accepts input_file, pdb_id, peptide_seq, and receptor_seq, but no description clarifies which combinations are valid or required. LLM will guess and fail.
No error recovery guidance. Tools return errors but provide no actionable next steps. Example: if analyze_cyclic_peptide fails on invalid peptide sequence, what should the LLM do? Retry? Validate input first? Error responses must guide recovery.
Parameter format constraints not specified. 'interface_residues' in submit_peptide_design is described as 'comma-separated indices' but no length, range, or validation rules stated. This forces LLMs to guess valid formats.
Tools inferred from test code rather than explicitly visible in server registration. list_jobs and train_mcts_evaluate_model appear only in tests/tool_validation_test.py; their actual registration in src/server.py is not shown. This violates the principle of explicit tool definitions and caps their scores at 50.
No confirmation or dry-run pattern for destructive/long-running operations. submit_peptide_design and submit_mcts_training take 10+ minutes and produce outputs, but no confirm-before-execute or preview mechanism is offered. Agents may launch expensive computations accidentally.
Output limits and pagination not mentioned. list_jobs accepts a 'status' filter but does not specify how many results are returned, whether pagination exists, or if results are capped. Large result sets can exhaust context windows.