# io.github.sanjaysgk/can-immune (remote · canelib.erc.monash.edu)

Query CAN-IMMUNE: cancer neoantigen mutations, peptides, cell lines, MHC-I binding. Read-only.

- Trust score: 69/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-18

## Components

- remote · `canelib.erc.monash.edu`: 69/100 (this document), [markdown](https://verifymcp.io/servers/sanjaysgk-can-immune/canelib.md), [page](https://verifymcp.io/servers/sanjaysgk-can-immune/canelib)

## Channel facts

- Endpoint: `https://canelib.erc.monash.edu/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-18.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 12 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 76/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1822 tokens (~151/item across 12 items; 12 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http sanjaysgk-can-immune https://canelib.erc.monash.edu/mcp
```

### Codex

```toml
[mcp_servers.sanjaysgk-can-immune]
url = "https://canelib.erc.monash.edu/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "sanjaysgk-can-immune": {
      "type": "remote",
      "url": "https://canelib.erc.monash.edu/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add sanjaysgk-can-immune --url https://canelib.erc.monash.edu/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  sanjaysgk-can-immune:
    url: "https://canelib.erc.monash.edu/mcp"
```

### Other

```json
{
  "mcpServers": {
    "sanjaysgk-can-immune": {
      "type": "http",
      "url": "https://canelib.erc.monash.edu/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-17 (score 69, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-15 (score 68, +1)

No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-13 (score 67, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-11 (score 66, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-08-10 (score 65)

First indexed and scored.

## MCP tools (12)

### `database_overview` (~103 tokens)

Get the headline size of the CAN-IMMUNE database in one call.

    Returns total counts of mutations, genes, and unique mutant peptides, plus how
    many cell lines, tissues, and cancer types are covered, and the data sources
    (COSMIC, DepMap/CCLE, PubMed). Use this first to size the resource or to answer
    "how big is the database / how many X are there" questions. No parameters.

### `search_genes` (~164 tokens)

Find genes by symbol or full name, ranked by how mutated they are.

    Matches the gene symbol OR the full gene name (partial, case-insensitive) and
    returns each hit with its total mutation count, unique mutant-peptide count,
    sample count, and UniProt accession. Use it to locate a gene before calling
    `get_gene`, or to rank a set of genes by mutation burden. Results are ordered by
    mutation count (most mutated first).

Input parameters:

- `limit` (integer): Max rows to return (1-100). Default 20.
- `query` (string, required): Gene symbol or part of a gene name, e.g. 'TP53', 'BRAF', or 'kinase'. Case-insensitive, partial matches allowed.

### `get_gene` (~154 tokens)

Get the full profile for one gene by exact symbol.

    Returns total mutations and how they split between cell lines vs tissues, unique
    mutant peptides, sample and transcript counts, UniProt accession / name / reviewed
    status, the top ~15 recurrent mutations in that gene, and a link to the gene page.
    Use this after `search_genes` (or when you already know the symbol) to answer
    detailed questions about a single gene. Returns an error field if the symbol is
    not found.

Input parameters:

- `symbol` (string, required): Exact HGNC gene symbol, e.g. 'TP53', 'KRAS', 'EGFR'. Use search_genes first if unsure of the exact symbol.

### `search_cell_lines` (~176 tokens)

Find cancer cell lines by name, ranked by mutation burden.

    Returns each matching cell line with its tissue of origin, cancer type, total
    mutations, unique mutant peptides, data sources (COSMIC / DepMap-CCLE / PubMed),
    and Cellosaurus ID. Covers only cell-line models (kept separate from primary
    tissue samples). Use before `get_cell_line` or `top_genes_in_cell_line`. Ordered
    by mutation count (most mutated first).

Input parameters:

- `limit` (integer): Max rows to return (1-100). Default 20.
- `query` (string, required): Cell-line name or fragment, e.g. 'MDA-MB-231', 'HeLa', 'A549'. Case-insensitive, partial matches allowed; hyphen/spacing variants are normalized.

### `get_cell_line` (~158 tokens)

Get the full profile for one cancer cell line by exact name.

    Returns tissue of origin, cancer type, total mutations, unique mutant peptides and
    genes, data sources, Cellosaurus and DepMap model IDs, gender, category / cell
    type, and the top ~15 most-mutated genes in that line, plus a link to its page.
    Use after `search_cell_lines`, or when the exact name is known, for a deep dive on
    one line. Returns an error field if the name is not found.

Input parameters:

- `name` (string, required): Exact cell-line name, e.g. 'MDA-MB-231', 'A549'. Use search_cell_lines first if unsure of the exact name.

### `top_genes_in_cell_line` (~136 tokens)

Rank the most-mutated genes within one specific cell line.

    Answers "what is the top mutated gene in <cell line>" / "which genes are most
    altered in <cell line>". Returns genes with their mutation counts for that line,
    highest first, from precomputed per-cell-line stats (fast). For the whole profile
    of the line use `get_cell_line` instead.

Input parameters:

- `limit` (integer): How many top genes to return (1-100). Default 15.
- `name` (string, required): Exact cell-line name, e.g. 'MDA-MB-231'.

### `list_cancer_types` (~92 tokens)

List cancer types (histology) ranked by mutation burden.

    Returns each cancer type / histology with its total mutations, unique samples, and
    unique genes, most-mutated first. Use to see which cancer types dominate the
    database or to pick one for further drill-down on the website.

Input parameters:

- `limit` (integer): Max cancer types to return (1-100). Default 50.

### `list_tissues` (~91 tokens)

List primary tissues ranked by mutation burden.

    Returns each tissue (COSMIC primary-tissue samples only, kept separate from cell
    lines) with its total mutations, unique samples, and unique genes, most-mutated
    first. Use for tissue-level questions; for cell lines use `search_cell_lines`.

Input parameters:

- `limit` (integer): Max tissues to return (1-100). Default 50.

### `get_gene_mutations` (~177 tokens)

List individual mutations in a gene (a bounded sample of rows).

    Each row gives the CAN-IMMUNE mutation ID (CANLIB...), the amino-acid change, the
    CDS change, mutation type (missense / complex substitution), data source, the
    sample it came from, its primary site, and the mutant peptide. Ordered by mutation
    ID. Capped at `limit` rows (max 100) for speed - for the complete table of a
    heavily-mutated gene, link the user to the gene page on the website.

Input parameters:

- `gene` (string, required): Exact gene symbol whose mutations you want, e.g. 'TP53'.
- `limit` (integer): Max mutation rows to return (1-100). Default 50. This is a bounded sample, not the full list.

### `get_mhc_binding` (~190 tokens)

Look up a CACHED MHC-I binding prediction for a peptide + HLA allele.

    Returns the NetMHCpan result (best binding core, %Rank_EL, binder level
    SB/WB/NB, and neoepitope %Rank_Neo when computed) for predictions already stored
    in the cache. This tool does NOT run new predictions - it only reads cached ones;
    if nothing is cached it returns cached=false with a note. To generate a new
    prediction, use the interactive button on the mutation page of the website.

Input parameters:

- `allele` (string, required): HLA class-I allele in NetMHCpan format, e.g. 'HLA-A*02:11', 'HLA-B*07:02'.
- `peptide` (string, required): The peptide sequence, e.g. 'FLDGNQIVT' (single-letter amino acids).

### `search` (~158 tokens)

Search CAN-IMMUNE for genes and cell lines (ChatGPT connector interface).

    Returns {results: [{id, title, url}]} combining matching genes and cell lines,
    each with a stable `id` (like 'gene:TP53' or 'cell_line:MDA-MB-231'). Pass that
    `id` to `fetch` to retrieve the full record. This is the generic search endpoint
    ChatGPT expects; MCP-native clients can also use the more specific `search_genes`
    / `search_cell_lines` tools.

Input parameters:

- `query` (string, required): Free-text query matching a gene symbol/name or a cell-line name, e.g. 'BRAF' or 'MDA-MB-231'.

### `fetch` (~145 tokens)

Fetch the full record for an id returned by `search` (ChatGPT connector interface).

    Takes an id like 'gene:TP53' or 'cell_line:MDA-MB-231' and returns
    {id, title, text, url, metadata} where `text` is the full JSON profile (same data
    as get_gene / get_cell_line). Always call `search` first to obtain a valid id.

Input parameters:

- `id` (string, required): An id from a `search` result, formatted 'gene:<SYMBOL>' or 'cell_line:<NAME>', e.g. 'gene:TP53' or 'cell_line:MDA-MB-231'.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/sanjaysgk-can-immune/canelib#diagnostics

## Score history

- 2026-08-18: 69
- 2026-08-17: 69
- 2026-08-16: 68
- 2026-08-15: 68
- 2026-08-14: 67
- 2026-08-13: 67
- 2026-08-12: 66
- 2026-08-11: 66
- 2026-08-10: 65

## Links

- Remote endpoint: https://canelib.erc.monash.edu/mcp
- Repository: https://github.com/sanjaysgk/can-immune-mcp
- Website: https://canelib.erc.monash.edu/connector
- Changelog RSS feed: https://verifymcp.io/servers/sanjaysgk-can-immune/canelib.xml
- Changelog JSON feed: https://verifymcp.io/servers/sanjaysgk-can-immune/canelib.json
- HTML version of this page: https://verifymcp.io/servers/sanjaysgk-can-immune/canelib
