reactome-mcp
Enables AI assistants to search, browse, analyze, and export biological pathway data from Reactome through natural language.
README
reactome-mcp
An MCP (Model Context Protocol) server that exposes the Reactome pathway knowledgebase to AI assistants. It wraps Reactome's Content Service and Analysis Service REST APIs, giving LLMs the ability to search, browse, analyse, and export biological pathway data through natural language.
Features
- Pathway enrichment analysis — submit gene/protein lists and retrieve over-representation results, including p-values, FDR, and found/not-found identifiers
- Search — full-text search across pathways, reactions, proteins, genes, and compounds with faceting, pagination, autocomplete, and spellcheck
- Pathway browsing — navigate the pathway hierarchy, retrieve event details, ancestors, contained events, and participants
- Entity lookup — inspect physical entities, complexes, subunits, and cross-references
- Interactors — query protein–protein interaction data from PSICQUIC resources and Reactome's curated interactor database
- Export — diagrams (PNG/SVG/JPG/GIF), SBGN, SBML, PDF reports, and CSV/JSON analysis results
- Species & disease — list available species and disease annotations
- ID mapping — map external identifiers (UniProt, Ensembl, CHEBI, etc.) to Reactome pathways and reactions
Over 40 tools and 10 resources are registered — see Tools and Resources below for the full list. Curators can additionally opt in to direct Cypher / Neo4j access against a local Reactome graph database (see Graph Database / Cypher).
Prerequisites
- Node.js >= 18
Installation
git clone https://github.com/reactome/reactome-mcp.git
cd reactome-mcp
npm install # runs `prepare` which builds dist/
Configuration
All configuration is via environment variables — pass them in the env block of your MCP client config.
| Variable | Default | Purpose |
|---|---|---|
REACTOME_BASE_URL |
https://reactome.org |
Base URL for the Content + Analysis Services. Override to point at staging / a specific release host. |
REACTOME_CONTENT_SERVICE_URL |
derived from REACTOME_BASE_URL |
Fine-grained override for the Content Service only. |
REACTOME_ANALYSIS_SERVICE_URL |
derived from REACTOME_BASE_URL |
Fine-grained override for the Analysis Service only. |
NEO4J_URI |
(unset) | Set to enable the optional Cypher tools (see below). |
NEO4J_USER |
neo4j |
|
NEO4J_PASSWORD |
neo4j |
Works against auth-disabled local images (reactome_neo4j_env). Set explicitly for any remote database. |
NEO4J_DATABASE |
graph.db |
Matches the default in reactome_neo4j_env. |
CYPHER_QUERY_TIMEOUT_MS |
30000 |
Server-side transaction timeout (ms) for reactome_cypher_* tools. Runaway queries are terminated after this. |
LOG_LEVEL |
info |
debug / info / warn / error. Logs are JSON on stderr; stdout is reserved for the MCP protocol. |
Usage
With Claude Desktop
Add the server to your Claude Desktop configuration (claude_desktop_config.json):
{
"mcpServers": {
"reactome": {
"command": "node",
"args": ["/absolute/path/to/reactome-mcp/dist/index.js"]
}
}
}
With Claude Code
claude mcp add reactome node /absolute/path/to/reactome-mcp/dist/index.js
Add --env NEO4J_URI=bolt://localhost:7687 (and friends) to enable the Cypher tools. See Configuration for the full list.
Example prompts
Once the server is registered, try asking Claude:
Exploration (REST — works with default install):
- "What does Reactome know about the TP53 gene? Show me the top pathways it appears in."
- "Give me the top-level pathways for Mus musculus and point out which are disease pathways."
- "Summarize pathway R-HSA-109582 — include the references."
- "I have these UniProt IDs: P04637, P53350, Q9UPN9, Q9Y243. Run a Reactome pathway enrichment and list the top 10 hits by FDR."
- "Find pathways in the HHV8 infection area and show me the contained reactions of the best match."
- "Export the SBGN for pathway R-HSA-1640170."
Graph queries (requires NEO4J_URI):
- "Show me the Reactome graph schema, then find all
Pathwaynodes that are disease pathways and have a human species annotation." - "Using the graph DB: for reaction R-HSA-199420, list every input and output entity with its display name and stable ID."
- "Count how many
ReactionLikeEventnodes exist per species."
Claude reads per-server instructions on connection explaining the tool categories, ID conventions, and a recommended workflow, so it can usually chain the right calls without hand-holding. If an answer looks off, ask it to "show me the tool call and its result" and correct from there.
Standalone
npm start
The server communicates over stdio using the MCP protocol.
MCP Inspector
npm run inspect
Opens the MCP Inspector UI for interactive testing.
Web Demo
npm run demo
Starts a local web UI with an MCP bridge for browser-based exploration.
Tools
Analysis (9 tools)
| Tool | Description |
|---|---|
reactome_analyze_identifier |
Analyse a single gene/protein identifier for pathway enrichment |
reactome_analyze_identifiers |
Pathway enrichment analysis on a list of identifiers |
reactome_get_analysis_result |
Retrieve a previously computed analysis result by token |
reactome_analysis_found_entities |
Get identifiers found in a specific pathway from an analysis |
reactome_analysis_not_found |
Get identifiers that could not be mapped in an analysis |
reactome_analysis_resources |
Get a summary of molecule types found in an analysis |
reactome_compare_species |
Compare Homo sapiens pathways to another species |
reactome_analysis_pathway_sizes |
Get pathway size distribution from an analysis result |
reactome_filter_analysis_pathways |
Filter an analysis result to specific pathways |
Pathways (7 tools)
| Tool | Description |
|---|---|
reactome_get_pathway |
Get details of a specific pathway or reaction |
reactome_top_pathways |
List top-level pathways for a species |
reactome_pathway_ancestors |
Get the ancestor hierarchy of an event |
reactome_pathway_contained_events |
Get all events contained within a pathway |
reactome_pathways_for_entity |
Find pathways containing a specific entity |
reactome_diagram_pathways_for_entity |
Find diagram-level pathways containing an entity |
reactome_events_hierarchy |
Get the complete event hierarchy for a species |
Search (7 tools)
| Tool | Description |
|---|---|
reactome_search |
Full-text search across the knowledgebase |
reactome_search_paginated |
Search with pagination |
reactome_search_suggest |
Autocomplete suggestions |
reactome_search_spellcheck |
Spell-check suggestions |
reactome_search_facets |
Get available search facets/filters |
reactome_search_pathways_of |
Find pathways containing an entity by database ID |
reactome_search_diagram |
Search for entities within a pathway diagram |
Entities (8 tools)
| Tool | Description |
|---|---|
reactome_get_entity |
Get details of a physical entity |
reactome_complex_subunits |
Get all subunits of a complex |
reactome_entity_other_forms |
Get other forms of a physical entity |
reactome_entity_component_of |
Find larger structures containing an entity |
reactome_participants |
Get molecular participants in a reaction or pathway |
reactome_participating_physical_entities |
Get physical entities participating in an event |
reactome_reference_entities |
Get reference entities for event participants |
reactome_complexes_containing |
Find complexes containing an external identifier |
Export (9 tools)
| Tool | Description |
|---|---|
reactome_export_diagram |
Export a pathway diagram as an image |
reactome_export_reaction |
Export a reaction diagram as an image |
reactome_export_fireworks |
Export the species pathway overview diagram |
reactome_export_sbgn |
Export to SBGN XML |
reactome_export_sbml |
Export to SBML |
reactome_export_pdf |
Export documentation to PDF |
reactome_export_analysis_report |
Generate a PDF analysis report |
reactome_export_analysis_csv |
Export analysis results as CSV |
reactome_export_analysis_json |
Export analysis results as JSON |
Interactors (6 tools)
| Tool | Description |
|---|---|
reactome_psicquic_resources |
List available PSICQUIC interaction databases |
reactome_psicquic_summary |
Summarise interactions from a PSICQUIC resource |
reactome_psicquic_details |
Get detailed interactions from a PSICQUIC resource |
reactome_static_interactors |
Get curated interactions from Reactome |
reactome_interactor_pathways |
Find pathways where a protein's interactors appear |
reactome_interactor_summary |
Summarise curated interactions for a protein |
Graph Database / Cypher (3 tools, opt-in)
Only registered when NEO4J_URI is set. Designed for curators running the reactome_neo4j_env Docker image locally (or pointing at a remote Reactome Neo4j).
| Tool | Description |
|---|---|
reactome_cypher_query |
Run a Cypher query with optional parameters; row count, per-row size, and total response size are all capped; a server-side timeout terminates runaway queries |
reactome_cypher_schema |
Live APOC introspection: labels with node counts, relationship cardinalities, per-label and per-rel property types (with mandatory flags), indexes, constraints. Cached for the session after first call; pre-warmed at MCP startup. |
reactome_cypher_sample |
Return a small sample of nodes for a given label |
Read-only posture — what it is and isn't. Sessions run in Neo4j READ mode, which rejects native write clauses (CREATE, MERGE, DELETE, SET, REMOVE). On top of that, reactome_cypher_query rejects APOC procedures that can write or reach outside the graph through back-channels (apoc.cypher.runWrite / apoc.cypher.doIt, apoc.periodic.*, apoc.create/merge/refactor.*, apoc.load/import/export.*, apoc.trigger.*, apoc.nodes.delete). Treat this as a guardrail against accidental mutation, not a security boundary — a real trust boundary should live at the Neo4j RBAC / plugin configuration layer, or by pointing at a read-only replica.
Configuration (add to your Claude MCP config env block):
{
"mcpServers": {
"reactome": {
"command": "node",
"args": ["/absolute/path/to/reactome-mcp/dist/index.js"],
"env": {
"NEO4J_URI": "bolt://localhost:7687",
"NEO4J_USER": "neo4j",
"NEO4J_PASSWORD": "neo4j",
"NEO4J_DATABASE": "graph.db",
"CYPHER_QUERY_TIMEOUT_MS": "30000"
}
}
}
}
NEO4J_USER / NEO4J_PASSWORD default to neo4j / neo4j (which works when the server has auth disabled, as in reactome_neo4j_env). NEO4J_DATABASE defaults to graph.db. CYPHER_QUERY_TIMEOUT_MS defaults to 30000 ms.
Utilities (7 tools)
| Tool | Description |
|---|---|
reactome_species |
List species available in Reactome |
reactome_diseases |
List diseases annotated in Reactome |
reactome_database_info |
Get database version information |
reactome_mapping_pathways |
Map an external identifier to pathways |
reactome_mapping_reactions |
Map an external identifier to reactions |
reactome_orthology |
Get orthologous events/entities in another species |
reactome_query |
Query any Reactome database object by identifier |
Resources
Static
| URI | Description |
|---|---|
reactome://species |
All species in Reactome |
reactome://species/main |
Main species with curated pathways |
reactome://diseases |
All annotated diseases |
reactome://database/info |
Database version and name |
Templates
| URI Template | Description |
|---|---|
reactome://pathway/{id} |
Pathway details |
reactome://pathway/{id}/diagram |
Pathway diagram (SVG) |
reactome://entity/{id} |
Entity details |
reactome://analysis/{token} |
Analysis result |
reactome://top-pathways/{species} |
Top-level pathways for a species |
reactome://events-hierarchy/{species} |
Full event hierarchy for a species |
Development
npm run dev # watch mode — recompiles on changes
npm run inspect # interactive MCP Inspector
npm run demo # web demo with MCP bridge
License
This project is licensed under the Apache License 2.0 — see LICENSE for details.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。