Natural language interface for dynamics from multi-view scRNA-Seq analysis with cellrank through MCP.
CellRank MCP exposes 9 bioinformatics tools with Pydantic-based input schemas. Most tools have descriptions and enumerated parameters, placing it in the 'fair' range. However, several critical gaps limit LLM usability: (1) Output schemas are completely undocumented, tools return complex nested objects but LLMs have no guidance on what fields to expect or how to chain results; (2) Many parameter descriptions lack dependency documentation, e.g., 'n_states' in create_and_fit_gpcca says 'If a list, use minChi criterion. If None, use eigengap' but doesn't explain when/why to choose one approach; (3) No error handling guidance, tools declare WRITE risk but provide no recovery patterns; (4) Tool naming is acceptable but could be more verb-forward (e.g., 'fit_gpcca' vs 'create_and_fit_gpcca' signals multiple concerns). Strengths: enumerated kernel types prevent hallucinated values; parameter types are declared (int, string, bool, float); Pydantic models are well-structured in source. The domain is niche (computational biology), so LLM-friendly descriptions are essential for agent success.
Visualize fate probabilities in a circular embedding. compute_fate_probabilities first.
Compute fate probabilities for cells.
Compute transition matrix for a specified kernel using appropriate parameters.
Generalized Perron Cluster Cluster Analysis (GPCCA), Use it to compute macrostates. Need to compute transition matrix first as `.compute_transition_matrix()
Create a CellRank kernel based on the specified type and parameters.
Preprocess data: filter and normalize AnnData object for velocity/pseudotime analysis.
Plot transition matrix as a stream or grid plot for a specified kernel.
Output schemas completely undocumented across all 9 tools. LLMs cannot determine what fields are returned, what types, or how to chain results.
Tool naming uses compound verbs ('create_and_fit_gpcca') signaling multiple responsibilities. Should split: 'fit_gpcca' handles GPCCA fitting, separate tool or parameter controls kernel fitting if needed.
Parameter interdependencies scattered across descriptions, not machine-parseable. E.g., compute_transition_matrix threshold_scheme='hard' requires frac_to_keep, threshold_scheme='soft' requires b/nu, LLM cannot validate without parsing text.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 60 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 43 | - | v1 |
Compute initial states from macrostates using coarse_stationary_distribution.
Predict terminal states from macrostates. This automatically selects terminal states from the computed macrostates.
No error handling or recovery guidance. Tools mark WRITE risk (stateful modifications to AnnData) but provide no guidance on what failures are retryable, which require user intervention, or how to undo failed operations.
Many parameters lack range/format guidance. E.g., alpha (float) in create_and_fit_gpcca has default 1.0 but no bounds stated; n_cells default is 30 but no min/max guidance; softmax_scale in compute_transition_matrix is Optional but no guidance on when None is preferred.
Domain-specific jargon without LLM-friendly context. E.g., 'coarse_stationary_distribution' (predict_initial_states), 'eigengap heuristic' (create_and_fit_gpcca), 'Perron Cluster' terminology. LLMs cannot reason about these without explicit guidance on when/why to use them.
Polymorphic parameter types confuse LLMs. circular_projection label_rot accepts 'best'|'default' (enum) or float (degrees); early_cells accepts cell ids (array of strings) or mask (boolean array), no clear type declaration.
No documentation on tool outputs vs side effects. E.g., filter_and_normalize description doesn't state whether it returns a modified AnnData copy or modifies in-place. kernel_projection and circular_projection don't document whether they return image bytes, save files, or just side-effect plots.