The design choice is that the LLM selects from a curated registry rather than writing arbitrary scripts, so the same natural-language request lands on the same validated method across sessions and clients. The 20 tools are the stable surface; the 66 methods behind them are chosen by parameters, which is why one tool covers a whole family of domain-identification algorithms.
A server that exposes 20 schema-validated MCP tools orchestrating 66 spatial transcriptomics methods across 15 analytical categories, for 10x Visium, Xenium, Slide-seq v2, MERFISH and seqFISH data.
- load_data, preprocess_data and compute_embeddings handle I/O, QC, normalization, HVG and PCA
- identify_spatial_domains runs SpaGCN, STAGATE, GraphST, BANKSY and others; deconvolve_data runs Cell2location, RCTD, Tangram and more
- annotate_cell_types, find_markers and compare_conditions cover annotation and differential expression
- analyze_spatial_statistics computes Moran's I, Geary's C, Ripley's K and neighborhood enrichment; find_spatial_genes runs SpatialDE and SPARK-X
- analyze_cell_communication, analyze_enrichment, analyze_trajectory_data, analyze_velocity_data and analyze_cnv cover the remaining categories
- integrate_samples, register_spatial_data, visualize_data and export_data round out the workflow
- The tools are the stable interface; the analysis backend is picked through tool parameters
Uv, then register with uvx --from chatspatial chatspatial server — uvx builds an isolated environment on first launch, no Python environment to manage. Python 3.11 to 3.14. The standard runtime covers the core tools; uvx --from 'chatspatial[full]' chatspatial server adds the portable Python method families, while R bridges and large-runtime backends stay separate. STDIO is the local default.
One command — uvx --from chatspatial chatspatial server
