OpenCancer
Cancer patient expert: NCCN-grounded answers with sources, recruiting trials, and expert review.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"opencancer": {
"url": "https://opencancer.ai/api/mcp"
}
}
}Remote endpoints
https://opencancer.ai/api/mcpstreamable-httpWhat it can do
Tool inventory
Tools (5)
🟢ask_opencancer(question, cancer_type, context)
Answers a cancer patient or caregiver question in plain language, grounded in NCCN Guidelines for Patients and medical literature. Covers what a diagnosis, stage, biomarker or test result means; treatment options; side effects and their management; questions for the oncologist; second opinions; living with cancer. Answers in the language of the question. Returns the answer, its sources, a disclaimer, a link to OpenCancer's care team, and an answer id. Emergencies, prognosis or life-expectancy questions, and questions about children return a safety message that routes to the care team instead of an answer. Educational information, not medical advice. Accepts no personal identifiers
Input Schema
{
"type": "object",
"properties": {
"question": {
"type": "string",
"maxLength": 2000,
"description": "The question in plain language, in the user's language, without personal identifiers."
},
"cancer_type": {
"type": "string",
"maxLength": 160,
"description": "Optional cancer type, to focus the guidelines used, e.g. \"colon cancer\"."
},
"context": {
"type": "string",
"maxLength": 500,
"description": "Optional general context such as stage or treatments tried, e.g. \"stage 3, finished FOLFOX\". No identifiers."
}
},
"required": [
"question"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"answer": {
"type": "string"
},
"answer_id": {
"type": [
"string",
"null"
]
},
"review_status": {
"type": "string",
"enum": [
"ai_only",
"expert_reviewed"
]
},
"grounding": {
"type": "object",
"properties": {
"basis": {
"type": "string"
},
"guidelines": {
"type": "array",
"items": {
"type": "string"
}
},
"retrieved": {
"type": "string"
}
}
},
"sources": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"title"
]
}
},
"disclaimer": {
"type": "string"
},
"needs_human_review": {
"type": "boolean"
},
"care_team_url": {
"type": "string"
}
},
"required": [
"answer",
"answer_id",
"review_status",
"sources",
"disclaimer",
"needs_human_review",
"care_team_url"
]
}🟢find_clinical_trials(condition, location, keyword, phase)
Lists clinical trials recruiting now for a cancer type, from ClinicalTrials.gov, optionally near a city, state or country and filtered by a biomarker, drug or treatment keyword and by phase. Returns up to 8 trials with NCT number, phase, sponsor, the sites closest to the requested place, a registry link, a link to the full search, and a link to an OpenCancer expert who can build a trial shortlist for a specific case. Listing a trial is not an eligibility decision; only the trial team can confirm eligibility
Input Schema
{
"type": "object",
"properties": {
"condition": {
"type": "string",
"maxLength": 160,
"description": "Cancer type or condition, e.g. \"pancreatic cancer\"."
},
"location": {
"type": "string",
"maxLength": 120,
"description": "Optional city, state, or country, e.g. \"Boston\" or \"Germany\" (city level, not a street address)."
},
"keyword": {
"type": "string",
"maxLength": 120,
"description": "Optional biomarker, drug, or treatment, e.g. \"KRAS G12C\" or \"CAR-T\"."
},
"phase": {
"type": "string",
"enum": [
"1",
"2",
"3",
"4"
],
"description": "Optional trial phase."
}
},
"required": [
"condition"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"total": {
"type": "number"
},
"trials": {
"type": "array",
"items": {
"type": "object",
"properties": {
"nct_id": {
"type": "string"
},
"title": {
"type": "string"
},
"phase": {
"type": "string"
},
"status": {
"type": "string"
},
"sponsor": {
"type": "string"
},
"sites": {
"type": "array",
"items": {
"type": "string"
}
},
"url": {
"type": "string"
}
},
"required": [
"nct_id",
"title",
"url"
]
}
},
"search_url": {
"type": "string"
},
"expert_help_url": {
"type": "string"
}
},
"required": [
"total",
"trials",
"search_url",
"expert_help_url"
]
}🟢get_trial_details(nct_id)
Returns one clinical trial from ClinicalTrials.gov by its NCT number: what it tests, phase, status, last registry update, ages, the inclusion and exclusion criteria in their original wording, recruiting sites with their status, study contacts, and the registry link. Eligibility is confirmed only by the study team
Input Schema
{
"type": "object",
"properties": {
"nct_id": {
"type": "string",
"pattern": "^NCT[0-9]{8}$",
"description": "ClinicalTrials.gov ID, e.g. \"NCT05902169\"."
}
},
"required": [
"nct_id"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"nct_id": {
"type": "string"
},
"title": {
"type": "string"
},
"official_title": {
"type": "string"
},
"status": {
"type": "string"
},
"phase": {
"type": "string"
},
"last_updated": {
"type": "string"
},
"sponsor": {
"type": "string"
},
"summary": {
"type": "string"
},
"conditions": {
"type": "array",
"items": {
"type": "string"
}
},
"interventions": {
"type": "array",
"items": {
"type": "string"
}
},
"ages": {
"type": "string"
},
"sex": {
"type": "string"
},
"inclusion_criteria": {
"type": "string"
},
"exclusion_criteria": {
"type": "string"
},
"sites": {
"type": "array",
"items": {
"type": "object",
"properties": {
"site": {
"type": "string"
},
"status": {
"type": "string"
}
},
"required": [
"site"
]
}
},
"site_count": {
"type": "number"
},
"contacts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"phone": {
"type": "string"
},
"email": {
"type": "string"
}
}
}
},
"url": {
"type": "string"
},
"expert_help_url": {
"type": "string"
}
},
"required": [
"nct_id",
"title",
"status",
"url",
"expert_help_url"
]
}🟢open_case(cancer_type, question, preferred_destinations)
Returns a link where a patient can start an expert review of their case by OpenCancer and Cancer Commons scientists (records, options, trial shortlist, next step). The link only opens an intake page: no case is created and no records are sent. The patient enters their own details and personally confirms consent on that page. Accepts no names, contact details or records.
Input Schema
{
"type": "object",
"properties": {
"cancer_type": {
"type": "string",
"maxLength": 160,
"description": "Optional cancer type, e.g. \"prostate cancer\"."
},
"question": {
"type": "string",
"maxLength": 500,
"description": "Optional: what the patient wants experts to look at, without personal identifiers."
},
"preferred_destinations": {
"type": "array",
"items": {
"type": "string",
"enum": [
"cancer_commons",
"vivantx",
"palitra"
]
},
"uniqueItems": true
}
},
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"intake_url": {
"type": "string"
},
"consent_required": {
"type": "boolean"
},
"case_created": {
"type": "boolean"
},
"preferred_destinations": {
"type": "array",
"items": {
"type": "string"
}
},
"available_intake_destinations": {
"type": "array",
"items": {
"type": "string"
}
},
"message": {
"type": "string"
}
},
"required": [
"intake_url",
"consent_required",
"case_created",
"message"
]
}🟡send_feedback(kind, message, answer_id, tool)
Flags an OpenCancer answer for human expert review, or sends feedback to the OpenCancer team. Used when the user says an OpenCancer answer was wrong, unsafe, or incomplete, or wants to tell OpenCancer something (answer_id identifies the answer; message holds the user's words). Also used to report that an OpenCancer tool returned no usable answer (kind "missing_answer" with answer_id or tool, no message). Feedback is read by the OpenCancer team; it is not an urgent-care channel and no reply is sent through it.
Input Schema
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"wrong_or_unsafe",
"missing_answer",
"bug",
"idea",
"praise"
],
"description": "wrong_or_unsafe, missing_answer, bug, idea, or praise."
},
"message": {
"type": "string",
"maxLength": 500,
"description": "Optional. The user's feedback in their own words. Contact details are not accepted."
},
"answer_id": {
"type": "string",
"maxLength": 64,
"description": "Optional. The answer id from an OpenCancer answer."
},
"tool": {
"type": "string",
"enum": [
"ask_opencancer",
"find_clinical_trials",
"get_trial_details",
"open_case"
],
"description": "Optional. Which OpenCancer tool this is about."
}
},
"required": [
"kind"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"saved": {
"type": "boolean"
},
"in_review_queue": {
"type": "boolean"
},
"duplicate": {
"type": "boolean"
}
},
"required": [
"saved",
"in_review_queue"
]
}Community
Evidence