INDRA Knowledge Graph

Biomedical knowledge graph access for AI agents via Model Context Protocol

✓ Server is running
AI Assistant
MCP Protocol
This MCP server
INDRA Knowledge Graph

What is Model Context Protocol (MCP)?

Model Context Protocol (MCP) is an open standard that enables AI assistants to securely connect to external data sources and tools. Think of it as a universal adapter that lets AI models like Claude access databases, APIs, and specialized services in a safe, standardized way.

How this MCP server works

graph LR A[AI client
Claude, Cursor, etc.] -->|MCP Protocol| B["MCP server
(indra-cogex)"] B --> C["9 Tools
(query, navigate, ground)"] C --> F["INDRA Knowledge Graph
(Neo4j — 20M+ nodes)"] style A fill:#4dafbc,stroke:#3a8a95,color:#fff style B fill:#3a8a95,stroke:#2d6f78,color:#fff style F fill:#10b981,stroke:#059669,color:#fff style C fill:#e6f7f8,stroke:#4dafbc

This server exposes 9 tools that AI agents use to navigate the knowledge graph:

  • Ground entities: Convert natural language ("ALS", "EGFR", "metformin") to precise identifiers (CURIEs like MESH:D000690)
  • Navigate the graph: Discover what entity types connect and which functions traverse those edges
  • Query endpoints: Execute any of 100+ pre-built functions with auto-grounding and caching
  • Run Cypher: Execute arbitrary read-only queries for complex graph traversals
  • Batch queries: Query multiple entities in a single call for efficient exploration

About this MCP Server

This server provides AI agent access to the INDRA CoGEx (Context Graph Extension) knowledge graph — a comprehensive biomedical knowledge base assembled by INDRA (Integrated Network and Dynamical Reasoning Assembler) from scientific literature and curated databases.

What You Can Do

  • Explore biological prior knowledge: Query relationships between genes, proteins, diseases, drugs, and more from causal knowledge assembled by INDRA from literature and databases.
  • Discover connections: Navigate links between literature and data sources such as clinical trials, tissue gene expression profiles, cancer cell lines, etc.
  • Validate knowledge: Cross-reference information from multiple sources through connected knowledge in the graph
  • Research assistance: Let an AI agent help you formulate and execute sophisticated queries that would require multiple rounds of sequential planning and coding if done manually.

Example Usage

Once connected, simply ask questions in plain English. The AI agent will use this MCP server to query the knowledge graph on your behalf:

Ask: "Find drugs that target genes associated with ALS—I'm looking for repurposing candidates with clinical evidence."

Behind the scenes, the AI agent runs the following steps using this MCP server:

Step 1: Ground "ALS" to a canonical identifier

ground_entity(term="ALS", param_name="disease")
{
  "query": "ALS",
  "top_match": {
    "curie": "mesh:D000690",
    "name": "Amyotrophic Lateral Sclerosis",
    "score": 0.556
  }
}

Step 2: Find genes associated with ALS

call_endpoint("get_genes_for_disease", disease=["MESH", "D000690"])
{
  "results": [
    {"name": "SOD1", "db_ns": "HGNC", "db_id": "11179"},
    {"name": "TARDBP", "db_ns": "HGNC", "db_id": "11571"},
    {"name": "SQSTM1", "db_ns": "HGNC", "db_id": "11280"},
    {"name": "ATXN2", "db_ns": "HGNC", "db_id": "10555"},
    {"name": "PTGS2", "db_ns": "HGNC", "db_id": "9605"},
    // ... 24 more genes
  ],
  "pagination": {"total": 29, "has_more": true, "next_offset": 5}
}

Step 3: Find drugs targeting PTGS2 (COX-2)

call_endpoint("get_drugs_for_target", target=["HGNC", "9605"])
{
  "results": [
    {"name": "ebselen", "db_ns": "CHEBI", "db_id": "CHEBI:77543"},
    {"name": "rofecoxib", "db_ns": "CHEBI", "db_id": "CHEBI:8887"},
    {"name": "pterostilbene", "db_ns": "CHEBI", "db_id": "CHEBI:8630"},
    {"name": "parthenolide", "db_ns": "CHEBI", "db_id": "CHEBI:7939"},
    // ... 63 more drugs
  ],
  "pagination": {"total": 67, "has_more": true, "next_offset": 5}
}

Step 4: Check clinical trials for ebselen

call_endpoint("get_trials_for_drug", drug=["CHEBI", "CHEBI:77543"])
{
  "results": [
    {"phase": 3, "status": "not_yet_recruiting", "db_id": "NCT06859788", "start_year": 2025},
    {"phase": 3, "status": "completed", "db_id": "NCT04677972", "completion_year": 2024},
    {"phase": 2, "status": "completed", "db_id": "NCT03325790", "completion_year": 2019},
    // ... 12 more trials
  ],
  "pagination": {"total": 15, "has_more": true, "next_offset": 5}
}
Discovery: Through PTGS2 (an ALS-associated gene encoding COX-2), we found ebselen—a selenium compound with 15 clinical trials including Phase 3 studies. This cross-disease insight is exactly what powers drug repurposing research.

Ask: "Which genes are shared between Parkinson's and Alzheimer's disease? Find drugs targeting these shared genes."

Behind the scenes, the AI agent runs the following steps using this MCP server:

Step 1: Ground both diseases

ground_entity(term="Parkinson disease") / ground_entity(term="Alzheimer disease")
{
  "parkinson": {"curie": "doid:14330", "name": "Parkinson Disease", "score": 0.772},
  "alzheimer": {"curie": "doid:10652", "name": "Alzheimer Disease", "score": 0.778}
}

Step 2: Get genes for each disease

call_endpoint("get_genes_for_disease", disease=["DOID", "14330"])
{
  "results": [
    {"name": "SNCA", "db_ns": "HGNC", "db_id": "11138"},
    {"name": "PINK1", "db_ns": "HGNC", "db_id": "14581"},
    {"name": "PRKN", "db_ns": "HGNC", "db_id": "8607"},
    {"name": "TNF", "db_ns": "HGNC", "db_id": "11892"},
    {"name": "SOD2", "db_ns": "HGNC", "db_id": "11180"},
    {"name": "BDNF", "db_ns": "HGNC", "db_id": "1033"},
    {"name": "MAPT", "db_ns": "HGNC", "db_id": "6893"},
    // ... 77 more genes
  ],
  "pagination": {"total": 84, "has_more": true, "next_offset": 8}
}
call_endpoint("get_genes_for_disease", disease=["DOID", "10652"])
{
  "results": [
    {"name": "PSEN1", "db_ns": "HGNC", "db_id": "9508"},
    {"name": "APP", "db_ns": "HGNC", "db_id": "620"},
    {"name": "TNF", "db_ns": "HGNC", "db_id": "11892"},
    {"name": "SOD2", "db_ns": "HGNC", "db_id": "11180"},
    {"name": "BDNF", "db_ns": "HGNC", "db_id": "1033"},
    {"name": "NECTIN2", "db_ns": "HGNC", "db_id": "9707"},
    // ... 95 more genes
  ],
  "pagination": {"total": 101, "has_more": true, "next_offset": 7}
}

Step 3: Find drugs targeting shared gene TNF

call_endpoint("get_drugs_for_target", target=["HGNC", "11892"])
{
  "results": [
    {"name": "luteolin 7-O-beta-D-glucoside", "db_ns": "CHEBI"},
    {"name": "apigenin 7-O-beta-D-glucoside", "db_ns": "CHEBI"},
    {"name": "Ganoderic acid A", "db_ns": "CHEBI"},
    {"name": "Ganoderic acid C1", "db_ns": "CHEBI"},
    // ... 3 more drugs
  ],
  "total": 7
}
Discovery: 84 Parkinson's genes and 101 Alzheimer's genes share key neuroinflammatory mediators including TNF, SOD2, BDNF, and NECTIN2. TNF-targeting compounds like luteolin and ganoderic acids represent potential cross-disease therapeutic candidates.

Ask: "Show me clinical trials and drugs for pancreatic cancer. What's the competitive landscape?"

Behind the scenes, the AI agent runs the following steps using this MCP server:

Step 1: Ground the indication

ground_entity(term="pancreatic cancer", param_name="disease")
{
  "top_match": {
    "curie": "mesh:D010190",
    "name": "Pancreatic Neoplasms",
    "score": 0.778
  }
}

Step 2: Get clinical trials

call_endpoint("get_trials_for_disease", disease=["MESH", "D010190"])
{
  "results": [
    {"phase": 3, "status": "recruiting", "db_id": "NCT07098598", "start_year": 2024},
    {"phase": 2, "status": "not_yet_recruiting", "db_id": "NCT07121478", "completion_year": 2029},
    {"phase": 2, "status": "not_yet_recruiting", "db_id": "NCT07114315", "completion_year": 2028},
    {"phase": 1, "status": "recruiting", "db_id": "NCT07118176", "completion_year": 2027},
    // ... 3,475 more trials
  ],
  "pagination": {"total": 3479, "has_more": true, "next_offset": 5}
}

Step 3: Get drugs indicated for this cancer

call_endpoint("get_drugs_for_indication", indication=["MESH", "D010190"])
{
  "results": [
    {"name": "NAPABUCASIN", "db_ns": "CHEMBL"},
    {"name": "LOSARTAN POTASSIUM", "db_ns": "CHEMBL"},
    {"name": "TALABOSTAT", "db_ns": "CHEMBL"},
    {"name": "ARSENIC TRIOXIDE", "db_ns": "CHEMBL"},
    {"name": "BI 2536", "db_ns": "MESH"},
    // ... 455 more drugs
  ],
  "pagination": {"total": 460, "has_more": true, "next_offset": 6}
}
Insight: 3,479 clinical trials and 460 drugs for pancreatic cancer—immediate competitive landscape intelligence. Filter by phase, status, and mechanism to identify white space opportunities.

Ask: "For EGFR, show me all diseases where it's implicated and drugs that target it."

Behind the scenes, the AI agent runs the following steps using this MCP server:

Step 1: Ground the gene

ground_entity(term="EGFR", param_name="gene")
{
  "top_match": {
    "curie": "hgnc:3236",
    "name": "EGFR",
    "score": 1.0
  }
}

Step 2: Get diseases for this gene

call_endpoint("get_diseases_for_gene", gene=["HGNC", "3236"])
{
  "results": [
    {"name": "Colorectal Neoplasms", "db_ns": "MESH"},
    {"name": "Cholangiocarcinoma", "db_ns": "MESH"},
    {"name": "head and neck carcinoma", "db_ns": "MONDO"},
    {"name": "Stomach Neoplasms", "db_ns": "MESH"},
    {"name": "Endometrial adenocarcinoma", "db_ns": "UMLS"},
    // ... 93 more diseases
  ],
  "pagination": {"total": 98, "has_more": true, "next_offset": 6}
}

Step 3: Get drugs targeting EGFR

call_endpoint("get_drugs_for_target", target=["HGNC", "3236"])
{
  "results": [
    {"name": "BI 2536", "db_ns": "MESH"},
    {"name": "PD158780", "db_ns": "CHEBI"},
    {"name": "5,6-bis(4-fluoroanilino)isoindole-1,3-dione", "db_ns": "CHEBI"},
    // ... 75 more drugs
  ],
  "pagination": {"total": 78, "has_more": true, "next_offset": 4}
}
Complete Target Profile: EGFR is implicated in 98 diseases spanning oncology (colorectal, lung, head/neck) and inflammatory conditions. 78 compounds target it—from approved TKIs to experimental molecules.

Ask: "What conditions is metformin being studied for beyond diabetes? Show me the breadth of indications."

Behind the scenes, the AI agent runs the following steps using this MCP server:

Step 1: Ground the drug

ground_entity(term="metformin", param_name="drug")
{
  "top_match": {
    "curie": "chebi:6801",
    "name": "metformin",
    "score": 1.0
  }
}

Step 2: Get all indications

call_endpoint("get_indications_for_drug", molecule=["CHEBI", "6801"])
{
  "results": [
    {"name": "Non-alcoholic Fatty Liver Disease", "db_ns": "MESH"},
    {"name": "Triple Negative Breast Neoplasms", "db_ns": "MESH"},
    {"name": "Prostatic Neoplasms, Castration-Resistant", "db_ns": "MESH"},
    {"name": "Cognitive Dysfunction", "db_ns": "MESH"},
    {"name": "Frontotemporal Dementia", "db_ns": "MESH"},
    {"name": "Heart Failure, Systolic", "db_ns": "MESH"},
    {"name": "Small Cell Lung Carcinoma", "db_ns": "MESH"},
    {"name": "Acute Coronary Syndrome", "db_ns": "MESH"},
    // ... 186 more indications
  ],
  "pagination": {"total": 194, "has_more": true, "next_offset": 9}
}
Pleiotropic Discovery: Metformin is being studied for 194 conditions far beyond diabetes—oncology (TNBC, prostate, lung), neurodegeneration (dementia), cardiovascular (heart failure, ACS), and metabolic disease. This is AMPK/mTOR pathway modulation in action.

Ask: "What genes are associated with triple-negative breast cancer? Are any druggable?"

Behind the scenes, the AI agent runs the following steps using this MCP server:

Step 1: Ground the disease

ground_entity(term="triple-negative breast cancer", param_name="disease")
{
  "top_match": {
    "curie": "mesh:D064726",
    "name": "Triple Negative Breast Neoplasms",
    "score": 0.778
  }
}

Step 2: Get associated genes

call_endpoint("get_genes_for_disease", disease=["MESH", "D064726"])
{
  "results": [
    {"name": "LRP6", "type": "human_gene_protein", "db_ns": "HGNC"},
    {"name": "KRAS", "type": "human_gene_protein", "db_ns": "HGNC"},
    {"name": "MIR873", "type": "human_rna", "db_ns": "HGNC"},
    {"name": "YAP1", "type": "human_gene_protein", "db_ns": "HGNC"}
  ],
  "total": 4
}
Biomarker Candidates: KRAS is a well-known oncogene with emerging inhibitors (sotorasib, adagrasib). YAP1 is a Hippo pathway effector with active drug discovery. LRP6 represents Wnt signaling—an emerging therapeutic axis. Use get_drugs_for_target to explore druggability.

How to Connect

Configure your MCP-compatible AI client to connect to this server:

claude_desktop_config.json
{
  "mcpServers": {
    "indra-cogex": {
      "url": "https://discovery.indra.bio/mcp"
    }
  }
}

Location: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)

.cursorrules or settings
{
  "mcp": {
    "servers": {
      "indra-cogex": {
        "url": "https://discovery.indra.bio/mcp"
      }
    }
  }
}
Generic MCP Configuration
{
  "endpoint": "https://discovery.indra.bio/mcp",
  "transport": "streamable-http",
  "method": "POST"
}

Connection Details

Endpoint: POST https://discovery.indra.bio/mcp

Transport: Streamable HTTP (supports both stateless and stateful modes)

Authentication: None required for public queries

Learn More

Resources