MCP Server for CyclicChamp Tools - Provides both synchronous and asynchronous (submit) APIs for cyclic peptide analysis
The server implements 8 tools with clear naming following verb_object convention (get_*, list_*, cancel_*, analyze_*, generate_*). All tools have descriptions present and parameter schemas defined. However, there are significant gaps: (1) Output schemas are NOT documented, the code returns dict with unspecified structure, forcing LLMs to infer response fields; (2) Parameter descriptions lack critical constraints (enums, ranges, formats); (3) Several tools accept optional parameters with unclear defaults or side effects; (4) Error handling is minimal, tools return {'status': 'error', 'error': string} without recovery guidance or error classification; (5) No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels. The job management tools (get_job_status, get_job_result, list_jobs, cancel_job) are well-motivated and follow a sensible async pattern, but lack documentation on job lifecycle and expected polling behavior. The analysis tools (analyze_pnear_stability, analyze_peptide_sequences, generate_backbone_parameters) have lengthy descriptions explaining domain context, but lack structured output documentation and parameter constraints.
Analyze cyclic peptide sequence composition, chirality, and physicochemical properties. Fast operation - returns results immediately (~1-3 seconds). Analyzes amino acid composition, D/L chirality patterns, hydrophobicity, charge distribution, and correlations with stability.
Analyze P_near stability values for cyclic peptide designs. Fast operation - returns results immediately (~1-2 seconds). Analyzes stability values from CyclicChamp results and generates correlation plots and statistical reports.
Cancel a running cyclic peptide computation job.
Generate backbone sampling parameters for CyclicChamp simulated annealing. Fast operation - returns results immediately (<1 second). Calculates energy thresholds, initial temperatures, move parameters, and cooling rates optimized for the specified peptide size.
Get log output from a running or completed job.
Get the results of a completed cyclic peptide computation job.
Output schemas are not documented. Tools return dict without specifying field names, types, or structure. LLMs cannot plan downstream steps or extract specific fields reliably.
Parameter descriptions lack critical constraints. The 'status' parameter in list_jobs mentions valid values but has no enum constraint. The 'tail' parameter in get_job_log lacks bounds (should be >= 0). 'min_pnear' and 'peptide_size' have no min/max documented. 'num_combinations' default is documented in description (20) but not enforced.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 49 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 44 | - | v1 |
Get the status of a submitted cyclic peptide computation job.
List all submitted cyclic peptide computation jobs.
No tool annotations (readOnlyHint/destructiveHint/idempotentHint) despite clear semantic differences. cancel_job is destructive but unmarked. get_* tools are read-only but unmarked. This forces LLMs to infer idempotency and safety from name alone.
Error handling is minimal and non-actionable. All exception paths return {'status': 'error', 'error': <string>}. No error classification (retryable vs user-fixable vs fatal). No recovery guidance (e.g., 'Job not found. Call list_jobs() to see available jobs.'). No invalid value feedback (e.g., 'Invalid status: got "pending", must be one of: pending, running, completed, failed, cancelled').
Missing dependencies and prerequisites documentation. The analysis tools accept optional 'config_file' parameter but do not document where config files are located, what schema they must follow, or how missing configs are handled. No guidance on when to call generate_backbone_parameters before running analysis tools.
No pagination or result-limiting guidance. The 'list_jobs' tool returns all jobs with no limit parameter or pagination cursor. If many jobs exist, this could exhaust context. The analysis tools write files to output_dir but do not document expected file count or size limits.
Parameter descriptions are vague or domain-specific without explanation. 'Pnear_values_*.txt file with tab-delimited data' does not explain what columns are expected or what P_near, Rosetta, GA mean. 'output_dir' is optional but side effects are unclear (files silently dropped if omitted?). 'peptide_size [7, 15, 20, 24]' lists valid values in description instead of enum constraint.