scVI-Tools MCP
An MCP (Model Context Protocol) server that gives LLMs structured access to scvi-tools knowledge: model documentation, tutorials, API reference, workflow templates, pretrained Hugging Face Hub models, and community FAQ.
No runtime model execution — pure knowledge layer. Works with Claude Desktop, Cursor, and any MCP-compatible client.
Docs: scvi-tools-mcp.readthedocs.io
Quick Start
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"scvi-tools": {
"command": "uvx",
"args": ["scvi-tools-mcp"]
}
}
}
Claude Code (CLI)
claude mcp add scvi-tools-mcp -s user -- uvx scvi-tools-mcp
OpenAI Codex CLI
Add to ~/.codex/config.toml:
[mcp_servers.scvi-tools-mcp]
command = "uvx"
args = ["scvi-tools-mcp"]
Cursor / Windsurf / other clients
{ "command": "uvx", "args": ["scvi-tools-mcp"] }
Local install
pip install scvi-tools-mcp
scvi-tools-mcp
Tools
| Tool | Description |
|---|---|
recommend_model |
Rank models by task and data type — start here |
get_model_overview |
Full model description, use cases, inputs, outputs |
get_model_parameters |
Key __init__ and train() parameters with defaults |
get_setup_anndata_guide |
Exact setup_anndata() call + required obs/var fields |
validate_data_requirements |
Pass/fail checklist for your AnnData against a model |
list_tutorials |
Browse tutorials by category |
get_tutorial |
Paginated tutorial content (code + prose, no outputs) |
search_tutorials |
Keyword search across all tutorials |
get_api_reference |
Signature + docstring for any public class or function |
search_api |
Search public symbols by keyword |
get_workflow_template |
Step-by-step code template for an analysis task |
get_downstream_guide |
Guide for DE, clustering, embedding, label transfer |
list_hub_models |
Browse official scvi-tools Hugging Face Hub models |
get_hub_model |
Inspect one pretrained HubModel repo |
suggest_hub_models |
Suggest Hub models for reference/query workflows |
list_scviva_models |
Browse scviva-tools spatial models (ResolVI, DestVI, …) |
get_scviva_model |
API reference + user guide for one scviva-tools model |
list_scviva_tutorials |
Browse scviva-tools tutorials |
get_scviva_tutorial |
Paginated scviva-tools tutorial content |
list_scib_metrics |
Browse scib-metrics integration-benchmarking metrics |
get_scib_metric |
API reference for one scib-metrics metric or benchmark |
list_scib_metrics_tutorials |
Browse scib-metrics tutorials |
get_scib_metrics_tutorial |
Paginated scib-metrics tutorial content |
get_faq |
Curated FAQ from docs, GitHub issues, and Discourse |
search_knowledge |
Cross-search all knowledge (catch-all) |
Knowledge Sources
All knowledge is baked into the package as Markdown files at build time. No network calls at tool-call time.
| Directory | Content |
|---|---|
knowledge/models/ |
One .md per model — description, use case, parameters |
knowledge/tutorials/ |
60+ tutorials converted from .ipynb (code + prose only) |
knowledge/api/ |
Extracted class signatures and docstrings |
knowledge/hub/models.json |
Normalized Hugging Face Hub model registry snapshot |
knowledge/hub/summary.md |
Searchable summary of Hub model classes and modalities |
knowledge/user_guide/ |
Narrative documentation from the scvi-tools user guide |
knowledge/scviva_tools/models/ |
scviva-tools model docs (ResolVI, DestVI, scVIVA, …) |
knowledge/scviva_tools/api/ |
Extracted scviva-tools class signatures and docstrings |
knowledge/scviva_tools/tutorials/ |
scviva-tools tutorials converted from .ipynb |
knowledge/scib_metrics/api/ |
Extracted scib-metrics function/class signatures |
knowledge/scib_metrics/tutorials/ |
scib-metrics tutorials converted from .ipynb |
knowledge/faq/github_issues.md |
Top GitHub issues snapshot |
knowledge/faq/discourse_threads.md |
Discourse forum thread snapshot |
Knowledge Refresh (CI)
Automated GitHub Actions jobs keep knowledge current — each opens a PR if a diff is found:
| Workflow | Schedule | What it does |
|---|---|---|
refresh_knowledge.yaml |
1st of month | Re-scrapes GitHub issues + Discourse threads |
sync_tutorials.yaml |
1st of month | Fetches new .ipynb from scvi-tools, converts to .md |
sync_model_knowledge.yaml |
1st of month | Checks CHANGELOG, regenerates model docs for changed models |
sync_huggingface_hub.yaml |
Quarterly | Refreshes the scvi-tools Hugging Face Hub model registry |
sync_scviva_tools_knowledge.yaml |
1st of month | Regenerates scviva-tools model/API docs from main |
sync_scviva_tools_tutorials.yaml |
1st of month | Fetches new .ipynb from scviva-tools, converts to .md |
sync_scib_metrics_knowledge.yaml |
1st of month | Regenerates scib-metrics API docs from the latest release |
sync_scib_metrics_tutorials.yaml |
1st of month | Fetches new .ipynb from scib-metrics, converts to .md |
All workflows also support workflow_dispatch for manual runs.
Development
git clone https://github.com/Yoseflab/scvi-tools-mcp
cd scvi-tools-mcp
pip install -e . --group dev
pytest
Rebuild knowledge manually
# Convert tutorials from a local scvi-tools checkout
python scripts/convert_notebooks.py /path/to/scvi-tools/docs/tutorials/notebooks \
src/scvi_tools_mcp/knowledge/tutorials
# Extract API docs (requires scvi-tools installed)
pip install -e ".[scvi]"
python scripts/extract_api_docs.py
# Re-scrape external knowledge
python scripts/scrape_external.py
# Refresh Hugging Face Hub model registry snapshot
python scripts/scrape_huggingface_hub.py
Adding a new model
- Run
scripts/extract_api_docs.pyafter updating scvi-tools. - Add the model name to
MODEL_NAMESinsrc/scvi_tools_mcp/tools/_constants.py. - Add requirements to
MODEL_REQUIREMENTSin_data_prep.pyif needed.
License
BSD 3-Clause License
Copyright (c) 2026, Yosef Lab, Weizmann Institute of Science
Release files for scvi-tools-mcp 0.1.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| scvi_tools_mcp-0.1.6.tar.gz | 572.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| scvi_tools_mcp-0.1.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.4 MB
Release files / scvi_tools_mcp-0.1.6.tar.gz
| Download URL | scvi_tools_mcp-0.1.6.tar.gz |
|---|---|
| Size | 572.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ffda8d062d7353772493d6aae541a62141996770d048f3c7fa35f688b03ca4e2
|
|
BLAKE2b-256 checksum How to use checksums |
f2ddf8643d09b925f2b8b80873a55c7ab4793be4e216ceb778083c41e613a018
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 10, 2026.
Transparency logRelease files / scvi_tools_mcp-0.1.6-py3-none-any.whl
| Download URL | scvi_tools_mcp-0.1.6-py3-none-any.whl |
|---|---|
| Size | 808.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2ca92c486148d81cc4138034b5b2a239996efc365e5dc2f100529c4faeb1bd09
|
|
BLAKE2b-256 checksum How to use checksums |
d7465c466190844362112cb66e0097f9e2ec57119f060f3c87a5753cb0b55407
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 10, 2026.
Transparency log