INDRA Knowledge Graph

INDRA Knowledge Graph Model Context Protocol server

✓ 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["Tools
(execute queries)"] B --> D["Resources
(graph schema)"] B --> E["Prompts
(query templates)"] C --> F["INDRA Knowledge Graph
(neo4j database)"] D --> F E --> F 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 style D fill:#e6f7f8,stroke:#4dafbc style E fill:#e6f7f8,stroke:#4dafbc

MCP defines three core primitives:

  • Tools: Functions the AI can invoke (e.g., execute a Cypher query, validate syntax)
  • Resources: Data the AI can read (e.g., schema information, documentation)
  • Prompts: Templates to guide the AI's interactions (e.g., query patterns)

About this MCP Server

This server provides programmatic access to the INDRA CoGEx knowledge graph—a comprehensive biomedical knowledge base integrating multiple sources of biological and chemical information.

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 a AI agent help you formulate and execute sophisticated queries that would require multiple rounds of sequential planning and coding if done manually.

Server Capabilities

  • Schema discovery: Explore graph structure and entity types available in CoGEx
  • Query execution: Execute Cypher queries on the Neo4j knowledge graph
  • Query validation: Validate query syntax before execution to catch errors early
  • Result enrichment: Automatically add metadata and context to query results
  • Graph navigation: Use specialized tools to traverse the knowledge graph efficiently

How to Connect

Configure your MCP-compatible AI client to connect to this server. The configuration varies slightly by client:

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

Example Usage

Once connected, simply ask questions in plain English. The AI agent using this MCP server will handle the queries toward the knowledge graph:

💊 Drug Repurposing Discovery

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

Below are the steps Claude Code runs in the background 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}
}

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}
}

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}
}
💡 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.
🧬 Multi-Target Pathway Analysis

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

Below are the steps Claude Code runs in the background 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}
}
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}
}

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
  ],
  "pagination": {"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.
🏥 Clinical Trial Landscape

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

Below are the steps Claude Code runs in the background 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}
}

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}
}
💡 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.
🔬 Drug-Target-Disease Triangulation

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

Below are the steps Claude Code runs in the background 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}
}

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}
}
💡 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.
📊 Mechanism of Action Deep Dive

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

Below are the steps Claude Code runs in the background 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}
}
💡 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.
🧪 Biomarker/target Discovery

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

Below are the steps Claude Code runs in the background 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"}
  ],
  "pagination": {"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.

Learn More

Resources