DrugMechDB Query Skill

SkillDatabases & data

Query the DrugMechDB drug mechanism-of-action database. Use whenever the user asks about drug mechanisms, drug-to-disease paths, biological targets of a drug, or wants to look up any biomedical entity (drug name, protein, disease, DrugBank ID, MESH ID, UniProt ID, GO term, etc.) in DrugMechDB.

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Then ask your AI: use the DrugMechDB Query Skill skill

What this skill tells your AI

The instructions your AI receives, as published by qsong-github/drugclaw in skills/drug_mechanism/drugmechdb/SKILL.md and read by ahel’s review.

Search drug mechanism-of-action paths by entity name or ID. Each path is a directed graph: Drug → (intermediates) → Disease, with typed nodes and labeled edges.

Data

  • Source: indication_paths.json
  • Path: resources_metadata/drug_mechanism/DRUGMECHDB/indication_paths.json
  • Records: ~4846 mechanism paths, ~32k relationships

Entity auto-detection

Input patternDetected asExample
DB:DB00619DrugBank IDexact on node/graph IDs
MESH:D015464MESH IDexact on node/graph IDs
UniProt:P00519UniProt proteinexact on node IDs
GO:0006915GO termexact on node IDs
CHEBI:*, HP:*, UBERON:*, CL:*, reactome:*, InterPro:*, PR:*, taxonomy:*respective typesexact on node IDs
anything elsefree textsubstring match on drug/disease/node names

API

FunctionSignatureReturns
load(path)path to JSONlist[dict] — full database
build_index(db)loaded db(by_id, by_name, by_drug, by_disease) dicts for O(1) lookup
search(db, entity, index=None)single query stringlist[dict] — matching paths
search_batch(db, entities, index=None)list of query stringsdict[str, list[dict]]
summarize(paths, entity)search resultscompact multi-line text
to_json(paths)search resultslist of flat dicts (id, drug, disease, nodes, links)

Node types (14)

BiologicalProcess, Cell, CellularComponent, ChemicalSubstance, Disease, Drug, GeneFamily, GrossAnatomicalStructure, MacromolecularComplex, MolecularActivity, OrganismTaxon, Pathway, PhenotypicFeature, Protein

Quick usage

import drugmechdb_query as dq

db = dq.load()  # uses default DATA_PATH
idx = dq.build_index(db)  # optional, recommended for repeated queries

# Single query — by name or ID
paths = dq.search(db, "imatinib", idx)
paths = dq.search(db, "UniProt:P00519", idx)
paths = dq.search(db, "MESH:D003920", idx)
print(dq.summarize(paths, "imatinib"))

# Batch query
results = dq.search_batch(db, ["metformin", "MESH:D003920", "asthma"], idx)
for entity, paths in results.items():
    print(dq.summarize(paths, entity))

# JSON export
print(dq.to_json(paths))

Output structure per path

graph:  { _id, drug, disease, drugbank, drug_mesh, disease_mesh }
nodes:  [{ id, label, name }, ...]
links:  [{ source, target, key }, ...]

key examples: decreases activity of, causes, positively regulates, treats, increases expression of, etc. (66 relation types total).

Signals

GitHub stars
116
Forks
3
Last commit
Aug 2026
Advanced
Item type
skill
Key
drugmechdb-query
Source
github.com/qsong-github/drugclaw