OptimusKG

MCP Bundle

A Desktop Extension (.mcpb) to query the OptimusKG biomedical knowledge graph in natural language.

The OptimusKG MCP Bundle is a Desktop Extension (.mcpb) file to query the OptimusKG biomedical knowledge graph in natural language.

How it works

On first launch the bundle uses the published optimuskg client to fetch the graph (~280 MB of Parquet) from Harvard Dataverse, then builds a local, indexed DuckDB database once. Every query after that runs locally in milliseconds.

The graph data version is pinned per release via the OPTIMUSKG_DOI environment variable in manifest.json, so a given bundle always queries the same reproducible snapshot.

What you can ask

  • "What genes are associated with Alzheimer's disease, ranked by evidence?"
  • "What does the drug aspirin target?"
  • "How is aspirin connected to Alzheimer's disease?"
  • "Which diseases have the most associated genes?"
  • "What phenotypes are linked to the TP53 gene?"

Tools

ToolWhat it does
list_schemaNode types, edge types, and the relation vocabulary of the graph.
search_entitiesResolve a name, gene symbol, synonym, or id to graph entities.
get_entityFull properties of an entity plus a summary of its connections.
get_neighborsOne-hop neighbours, filterable by relation, edge type, direction, and min_score.
count_neighborsAggregate an entity's neighbours by edge type, relation, or neighbour type.
find_connectionShortest path(s) between two entities.
run_sqlRead-only SQL query entrypoint over the DuckDB tables for the long tail of questions.

Install

  1. Download optimuskg.mcpb from the releases page.
  2. Double-click it to install into Claude Desktop.
  3. The first query triggers a one-time download + index build; later queries are instant.

Requires uv on your system.

Measured performance

One-time index build in 45.0 s (190,531 nodes, 21,813,816 edges) for a 2.54 GB local DuckDB cache. After that every query below runs against the cached, indexed database.

Latencies are wall-clock, warm cache, measured in-process with pytest-benchmark.

ToolScenarioMedian (ms)Mean (ms)Min (ms)StdDev (ms)Ops/sRounds
list_schemadescribe the graph schema36.0136.1335.010.642829
search_entitiesgene symbol exact (TSPAN6)71.0471.5870.061.371414
search_entitiesdisease name (Alzheimer disease)28.1627.3822.842.663743
search_entitiessubstring (kinase)91.5390.4079.665.751113
get_entitygene19.1519.3717.900.995256
get_entitydisease (high-degree)49.8149.8446.032.392023
get_neighborsdrug, all edges (limit 50)24.5324.6023.760.624143
get_neighborsdisease→gene, min_score29.6029.8427.651.453437
count_neighborshub gene, by edge type37.0937.3633.631.922731
find_connection2 hops, direct neighbour18.6218.8717.121.105360
find_connection2 hops, drug↔disease (hubs)62.4161.7657.892.211618
find_connection2 hops, gene↔disease55.1055.6952.612.301820
run_sqlgroup+join aggregation (top diseases)113.28117.50109.5913.24910

Environment: Intel(R) Core(TM) Ultra 7 165U, Python 3.12.11. Regenerate with make mcpb-profile.

On this page