plugin/skills/tooluniverse-claude-code-plugin/SKILL.md
Install the ToolUniverse Claude Code plugin in one step — provides MCP server with 1000+ scientific tools, 120+ research skills, slash commands, hooks, and the research agent. Use for first-time plugin install, troubleshooting plugin not loading, verifying MCP server connection, listing API key requirements, or configuring auto-update.
npx skillsauth add mims-harvard/tooluniverse tooluniverse-claude-code-pluginInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
One-step install of the ToolUniverse plugin: MCP server with 1000+ tools, 120+ research skills, slash commands, and the research agent — all auto-configured.
uv --version # must exist; if not: curl -LsSf https://astral.sh/uv/install.sh | sh
claude --version # Claude Code CLI; if not: https://claude.com/claude-code
# 1. Register the ToolUniverse marketplace from GitHub
claude plugin marketplace add mims-harvard/ToolUniverse
# 2. Install the plugin
claude plugin install tooluniverse@tooluniverse
That's it. Restart Claude Code. The MCP server auto-starts via uvx tooluniverse on first use (~30 s cold start, instant after).
If you previously installed ToolUniverse skills globally (via tooluniverse-install-skills or manual copy), remove them. The plugin includes all skills — global copies interfere with the plugin's skill routing.
# Check for global skills
ls ~/.claude/skills/tooluniverse-* 2>/dev/null | wc -l
# Remove them (the plugin replaces them)
rm -rf ~/.claude/skills/tooluniverse-*
rm -rf ~/.claude/skills/create-tooluniverse-skill
rm -rf ~/.claude/skills/setup-tooluniverse
The MCP server runs the tooluniverse PyPI package via uvx. To lock tool behavior for a long-running analysis, pin the package version in the plugin's .mcp.json — change the args to:
"args": ["[email protected]"]
Replace 1.2.2 with any released version from https://pypi.org/project/tooluniverse/. Restart Claude Code to apply. (.mcp.json location is shown under "API keys" below.)
claude plugin list
# Expect: tooluniverse (enabled)
Inside Claude Code, just ask naturally:
What are the top mutated genes in breast cancer?
Research the drug metformin.
The router skill auto-dispatches to the right specialized skill — no command prefix needed.
| Component | What it does | How to invoke |
|---|---|---|
| MCP server | 1000+ tools via find_tools, get_tool_info, execute_tool | Auto-loaded; no action needed |
| /tooluniverse:research | Multi-database investigation inline in this chat (you see each step) | Slash command |
| /tooluniverse:translate-id | Resolve an ID across all relevant namespaces | Slash command |
| /tooluniverse:cross-validate | Verify a claim across 3+ independent databases | Slash command |
| /tooluniverse:compare | N-way side-by-side comparison with domain-appropriate columns | Slash command |
| /tooluniverse:literature-sweep | Graded mini-review across PubMed + EuropePMC + Semantic Scholar | Slash command |
| /tooluniverse:researcher | Same investigation as research, delegated to a forked subagent | Slash command |
| 120+ skills | Structured workflows (drug research, variant interpretation, pharmacovigilance, CRISPR screens, statistical modeling, etc.) | Auto-activate on matching questions |
Most tools work without keys. For enhanced access, add the keys you care about to the MCP server's env block. Locate the installed plugin's .mcp.json:
# Show component inventory + on-disk location:
claude plugin details tooluniverse
# Or find the file directly:
find ~/.claude/plugins -name '.mcp.json' -path '*tooluniverse*'
# Typical install location after marketplace install:
# ~/.claude/plugins/cache/tooluniverse/tooluniverse/<version>/.mcp.json
{
"mcpServers": {
"tooluniverse": {
"command": "uvx",
"args": ["tooluniverse"],
"env": {
"PYTHONIOENCODING": "utf-8",
"NCBI_API_KEY": "your_key",
"NVIDIA_API_KEY": "your_key",
"ONCOKB_API_TOKEN": "your_token"
}
}
}
}
Full API-key list: setup-tooluniverse skill → API_KEYS_REFERENCE.md.
claude plugin update tooluniverse
# Also refresh the MCP server's tool cache:
uv cache clean tooluniverse
Restart Claude Code.
claude plugin uninstall tooluniverse
claude plugin marketplace remove tooluniverse
git clone https://github.com/mims-harvard/ToolUniverse.git
cd ToolUniverse
claude plugin marketplace add ./
claude plugin install tooluniverse@tooluniverse
Grab tooluniverse-plugin-vX.Y.Z.zip from https://github.com/mims-harvard/ToolUniverse/releases, unzip, then:
claude plugin marketplace add /path/to/unzipped-dir
claude plugin install tooluniverse@tooluniverse
| Symptom | Fix |
|---|---|
| marketplace add fails with "no marketplace.json" | Ensure you're using mims-harvard/ToolUniverse (owner/repo), not the plugin subdir. |
| uvx: command not found | Install uv (see Prerequisites), reopen terminal. |
| MCP server won't start | Test in terminal: uvx tooluniverse. If it fails there, it's an uv/Python issue. |
| Plugin installs but tools missing | Restart Claude Code. First launch downloads the package (~30 s). |
| requires-python >= 3.10 | uv python install 3.12 |
| Tools feel outdated | uv cache clean tooluniverse then restart Claude Code. |
| New release not picked up / tools run an OLD version | Run uv tool list \| grep tooluniverse. If it's listed, a global uv tool install is shadowing the plugin's uvx (uvx prefers an installed tool over the latest published version). Fix: uv tool uninstall tooluniverse, then restart. Normal users without that install always get the latest automatically. |
Still stuck: https://github.com/mims-harvard/ToolUniverse/issues
If the table above didn't fix it, hand this skill to an agent — "read the
tooluniverse-claude-code-plugin skill and diagnose & fix my plugin install" — or
run these checks yourself in order. Each is safe and idempotent; apply the FIX
for whatever fails, then restart Claude Code.
# 1. Is uv/uvx installed? (most common cause of "no tools at all")
command -v uvx || echo "FIX: curl -LsSf https://astral.sh/uv/install.sh | sh"
# 2. Can the MCP package actually resolve + run? (non-hanging proxy for the server)
uvx --from tooluniverse tu --version || echo "FIX: uv/Python issue — see steps 1 and 5"
# 3. Running an OLD version even after updating? (non-obvious!)
uv tool list | grep -q tooluniverse \
&& echo "FIX: uv tool uninstall tooluniverse (a global install shadows the plugin's uvx)" \
|| echo "ok: nothing shadowing uvx"
# 4. A new pip version was released but tools still stale? force a refresh
uv cache clean tooluniverse # or one-shot: uvx --refresh tooluniverse --version
# 5. Python too old (requires >= 3.10)?
uv python install 3.12
# 6. Global skills interfering with the plugin's routing?
ls ~/.claude/skills/tooluniverse-* 2>/dev/null && echo "FIX: rm -rf ~/.claude/skills/tooluniverse-*"
# 7. Is the plugin actually enabled?
claude plugin list | grep tooluniverse || echo "FIX: claude plugin install tooluniverse@tooluniverse"
An agent can run the whole sequence, apply each FIX, and tell you to restart —
you don't need to understand the internals.
This skill documents the user-facing install flow. The plugin source lives at /plugin in the repo with its own .claude-plugin/plugin.json and .mcp.json. The root .claude-plugin/marketplace.json is what makes claude plugin marketplace add mims-harvard/ToolUniverse work directly — it lists the plugin with "source": "./plugin".
When cutting a plugin release:
[release:patch] (or :minor/:major) in a commit message that touches plugin/ or .claude-plugin/ on main. auto-release.yml runs scripts/release-plugin.sh, which bumps plugin/.claude-plugin/plugin.json + root .claude-plugin/marketplace.json, commits, and tags; the tag push triggers release-plugin.yml to build the zip + GitHub Release. (Or run "Auto-release plugin" from the Actions UI.)max(plugin.json, latest vX.Y.Z tag), so a manifest that has drifted behind the tag line won't collide with an existing tag.main (independent of the tag/zip).The pip package (tooluniverse on PyPI) is a SEPARATE release line: bump pyproject.toml → publish-pypi.yml publishes it (→ publish-mcp-registry.yml). Plugin and pip versions need NOT move together — uvx tooluniverse auto-resolves to the latest published pip version for users, so plugin-only and pip-only releases are both fine.
tools
Post-market safety surveillance and recall/adverse-event RETRIEVAL across the full spectrum of FDA-regulated products that are NOT covered by the drug-AE signal skills: medical devices, food / dietary supplements / cosmetics, veterinary drugs, and drug supply (shortages). Orchestrates openFDA endpoints (MAUDE device adverse events + device recalls + 510(k), CAERS food/supplement/ cosmetic adverse events, veterinary adverse events, drug shortages, and cross-product enforcement/recall reports). USE WHEN the user asks: "are there adverse events for [device / pacemaker / infusion pump / insulin pump]", "device recalls for [firm/product]", "supplement / vitamin / cosmetic adverse reactions", "is [drug] in shortage", "what injectables are on shortage", "veterinary / animal adverse events for [drug] in [dog/cat/horse]", "food recall for listeria", "MAUDE report for [device]", "CAERS reactions for [brand]". DO NOT USE for drug adverse-event SIGNAL detection or disproportionality (PRR / ROR / IC) or drug-AE association scoring — that is `tooluniverse-pharmacovigilance` / `tooluniverse-adverse-event-detection`. This skill is multi-product surveillance and retrieval, not drug-AE statistical signal mining.
tools
--- name: tooluniverse-phewas description: Cross-ancestry / cross-biobank phenome-wide association (PheWAS) and replication. Given ONE variant (rsID) or ONE gene, look up every phenotype it associates with across European/UK (UKB-TOPMed), Finnish (FinnGen), Japanese (BioBank Japan), and Taiwanese (TPMI) biobanks, plus exome-wide gene-burden PheWAS (Genebass), then judge whether an association replicates across ancestries or is population-specific. Use whenever the user asks "what else is this va
tools
Dereplicate a putative natural product and assign its chemical taxonomy. Use to answer "is [compound] a known natural product", "what microbe/organism produces [compound]", "what chemical class is [compound]", "dereplicate this metabolite (by formula/exact mass/InChIKey/SMILES)", or "classify this molecule into ChemOnt". Searches NPAtlas for known microbial natural products (producing organism + literature reference), assigns the ChemOnt kingdom→superclass→class→subclass hierarchy via ClassyFire, resolves systematic IUPAC names to structure via OPSIN, and cross-references identity in PubChem. NOT for general drug/compound identity or ADMET (use tooluniverse-chemical-compound-retrieval / tooluniverse-small-molecule-discovery) and NOT for metabolomics pathway/enrichment analysis (use tooluniverse-metabolomics skills).
tools
Genome-ASSEMBLY discovery, QC, and replicon mapping for any organism (bacteria, archaea, fungi, and beyond) using NCBI Datasets. Resolves an organism name or taxid to assemblies, picks the reference/representative or best-quality assembly, pulls assembly QC metrics (total length, contig/scaffold N50, contig count, GC%, assembly level, RefSeq category), enumerates chromosomes and plasmids via per-replicon sequence reports, and compares candidate assemblies on quality. Use for "what genomes are available for [organism]", "assembly stats / N50 / GC content for [GCF_/GCA_ accession]", "how many plasmids does [strain] have", "compare assemblies for [species]", "find the reference genome for [taxon]", "is this assembly Complete Genome or just contigs". NOT for gene-level orthology/synteny (use tooluniverse-comparative-genomics), plant gene structure (use tooluniverse-plant-genomics), de novo assembly from raw reads (no tool exists), or taxonomy-only name/lineage lookups.