{"id":50938484,"url":"https://github.com/reactome/reactome-mcp","last_synced_at":"2026-06-17T11:32:28.964Z","repository":{"id":353370747,"uuid":"1167667068","full_name":"reactome/reactome-mcp","owner":"reactome","description":"This is just a prototype for now","archived":false,"fork":false,"pushed_at":"2026-05-11T23:36:32.000Z","size":233,"stargazers_count":5,"open_issues_count":17,"forks_count":13,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-11T12:41:51.830Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/reactome.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-26T14:51:19.000Z","updated_at":"2026-04-24T15:44:39.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/reactome/reactome-mcp","commit_stats":null,"previous_names":["reactome/reactome-mcp"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/reactome/reactome-mcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactome%2Freactome-mcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactome%2Freactome-mcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactome%2Freactome-mcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactome%2Freactome-mcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/reactome","download_url":"https://codeload.github.com/reactome/reactome-mcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactome%2Freactome-mcp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34447264,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-17T02:00:05.408Z","response_time":127,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-17T11:32:27.933Z","updated_at":"2026-06-17T11:32:28.956Z","avatar_url":"https://github.com/reactome.png","language":"TypeScript","funding_links":[],"categories":["Life Sciences and Research"],"sub_categories":["Clinical Validity Score"],"readme":"# reactome-mcp\n\nAn [MCP (Model Context Protocol)](https://modelcontextprotocol.io/) server that exposes the [Reactome](https://reactome.org/) 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.\n\n## Features\n\n- **Pathway enrichment analysis** — submit gene/protein lists and retrieve over-representation results, including p-values, FDR, and found/not-found identifiers\n- **Search** — full-text search across pathways, reactions, proteins, genes, and compounds with faceting, pagination, autocomplete, and spellcheck\n- **Pathway browsing** — navigate the pathway hierarchy, retrieve event details, ancestors, contained events, and participants\n- **Entity lookup** — inspect physical entities, complexes, subunits, and cross-references\n- **Interactors** — query protein–protein interaction data from PSICQUIC resources and Reactome's curated interactor database\n- **Export** — diagrams (PNG/SVG/JPG/GIF), SBGN, SBML, PDF reports, and CSV/JSON analysis results\n- **Species \u0026 disease** — list available species and disease annotations\n- **ID mapping** — map external identifiers (UniProt, Ensembl, CHEBI, etc.) to Reactome pathways and reactions\n\nOver 40 tools and 10 resources are registered — see [Tools](#tools) and [Resources](#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](#graph-database--cypher-3-tools-opt-in)).\n\n## Prerequisites\n\n- Node.js \u003e= 18\n\n## Installation\n\n```bash\ngit clone https://github.com/reactome/reactome-mcp.git\ncd reactome-mcp\nnpm install  # runs `prepare` which builds dist/\n```\n\n## Configuration\n\nAll configuration is via environment variables — pass them in the `env` block of your MCP client config.\n\n| Variable | Default | Purpose |\n|---|---|---|\n| `REACTOME_BASE_URL` | `https://reactome.org` | Base URL for the Content + Analysis Services. Override to point at staging / a specific release host. |\n| `REACTOME_CONTENT_SERVICE_URL` | derived from `REACTOME_BASE_URL` | Fine-grained override for the Content Service only. |\n| `REACTOME_ANALYSIS_SERVICE_URL` | derived from `REACTOME_BASE_URL` | Fine-grained override for the Analysis Service only. |\n| `NEO4J_URI` | _(unset)_ | Set to enable the optional Cypher tools (see below). |\n| `NEO4J_USER` | `neo4j` | |\n| `NEO4J_PASSWORD` | `neo4j` | Works against auth-disabled local images (`reactome_neo4j_env`). Set explicitly for any remote database. |\n| `NEO4J_DATABASE` | `graph.db` | Matches the default in `reactome_neo4j_env`. |\n| `CYPHER_QUERY_TIMEOUT_MS` | `30000` | Server-side transaction timeout (ms) for `reactome_cypher_*` tools. Runaway queries are terminated after this. |\n| `LOG_LEVEL` | `info` | `debug` / `info` / `warn` / `error`. Logs are JSON on stderr; stdout is reserved for the MCP protocol. |\n\n## Usage\n\n### With Claude Desktop\n\nAdd the server to your Claude Desktop configuration (`claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"reactome\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/reactome-mcp/dist/index.js\"]\n    }\n  }\n}\n```\n\n### With Claude Code\n\n```bash\nclaude mcp add reactome node /absolute/path/to/reactome-mcp/dist/index.js\n```\n\nAdd `--env NEO4J_URI=bolt://localhost:7687` (and friends) to enable the Cypher tools. See [Configuration](#configuration) for the full list.\n\n### Example prompts\n\nOnce the server is registered, try asking Claude:\n\n**Exploration (REST — works with default install):**\n\n- \"What does Reactome know about the TP53 gene? Show me the top pathways it appears in.\"\n- \"Give me the top-level pathways for *Mus musculus* and point out which are disease pathways.\"\n- \"Summarize pathway R-HSA-109582 — include the references.\"\n- \"I have these UniProt IDs: P04637, P53350, Q9UPN9, Q9Y243. Run a Reactome pathway enrichment and list the top 10 hits by FDR.\"\n- \"Find pathways in the HHV8 infection area and show me the contained reactions of the best match.\"\n- \"Export the SBGN for pathway R-HSA-1640170.\"\n\n**Graph queries (requires `NEO4J_URI`):**\n\n- \"Show me the Reactome graph schema, then find all `Pathway` nodes that are disease pathways *and* have a human species annotation.\"\n- \"Using the graph DB: for reaction R-HSA-199420, list every input and output entity with its display name and stable ID.\"\n- \"Count how many `ReactionLikeEvent` nodes exist per species.\"\n\nClaude 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.\n\n### Standalone\n\n```bash\nnpm start\n```\n\nThe server communicates over stdio using the MCP protocol.\n\n### MCP Inspector\n\n```bash\nnpm run inspect\n```\n\nOpens the [MCP Inspector](https://github.com/anthropics/mcp-inspector) UI for interactive testing.\n\n### Web Demo\n\n```bash\nnpm run demo\n```\n\nStarts a local web UI with an MCP bridge for browser-based exploration.\n\n## Tools\n\n### Analysis (9 tools)\n\n| Tool | Description |\n|------|-------------|\n| `reactome_analyze_identifier` | Analyse a single gene/protein identifier for pathway enrichment |\n| `reactome_analyze_identifiers` | Pathway enrichment analysis on a list of identifiers |\n| `reactome_get_analysis_result` | Retrieve a previously computed analysis result by token |\n| `reactome_analysis_found_entities` | Get identifiers found in a specific pathway from an analysis |\n| `reactome_analysis_not_found` | Get identifiers that could not be mapped in an analysis |\n| `reactome_analysis_resources` | Get a summary of molecule types found in an analysis |\n| `reactome_compare_species` | Compare Homo sapiens pathways to another species |\n| `reactome_analysis_pathway_sizes` | Get pathway size distribution from an analysis result |\n| `reactome_filter_analysis_pathways` | Filter an analysis result to specific pathways |\n\n### Pathways (7 tools)\n\n| Tool | Description |\n|------|-------------|\n| `reactome_get_pathway` | Get details of a specific pathway or reaction |\n| `reactome_top_pathways` | List top-level pathways for a species |\n| `reactome_pathway_ancestors` | Get the ancestor hierarchy of an event |\n| `reactome_pathway_contained_events` | Get all events contained within a pathway |\n| `reactome_pathways_for_entity` | Find pathways containing a specific entity |\n| `reactome_diagram_pathways_for_entity` | Find diagram-level pathways containing an entity |\n| `reactome_events_hierarchy` | Get the complete event hierarchy for a species |\n\n### Search (7 tools)\n\n| Tool | Description |\n|------|-------------|\n| `reactome_search` | Full-text search across the knowledgebase |\n| `reactome_search_paginated` | Search with pagination |\n| `reactome_search_suggest` | Autocomplete suggestions |\n| `reactome_search_spellcheck` | Spell-check suggestions |\n| `reactome_search_facets` | Get available search facets/filters |\n| `reactome_search_pathways_of` | Find pathways containing an entity by database ID |\n| `reactome_search_diagram` | Search for entities within a pathway diagram |\n\n### Entities (8 tools)\n\n| Tool | Description |\n|------|-------------|\n| `reactome_get_entity` | Get details of a physical entity |\n| `reactome_complex_subunits` | Get all subunits of a complex |\n| `reactome_entity_other_forms` | Get other forms of a physical entity |\n| `reactome_entity_component_of` | Find larger structures containing an entity |\n| `reactome_participants` | Get molecular participants in a reaction or pathway |\n| `reactome_participating_physical_entities` | Get physical entities participating in an event |\n| `reactome_reference_entities` | Get reference entities for event participants |\n| `reactome_complexes_containing` | Find complexes containing an external identifier |\n\n### Export (9 tools)\n\n| Tool | Description |\n|------|-------------|\n| `reactome_export_diagram` | Export a pathway diagram as an image |\n| `reactome_export_reaction` | Export a reaction diagram as an image |\n| `reactome_export_fireworks` | Export the species pathway overview diagram |\n| `reactome_export_sbgn` | Export to SBGN XML |\n| `reactome_export_sbml` | Export to SBML |\n| `reactome_export_pdf` | Export documentation to PDF |\n| `reactome_export_analysis_report` | Generate a PDF analysis report |\n| `reactome_export_analysis_csv` | Export analysis results as CSV |\n| `reactome_export_analysis_json` | Export analysis results as JSON |\n\n### Interactors (6 tools)\n\n| Tool | Description |\n|------|-------------|\n| `reactome_psicquic_resources` | List available PSICQUIC interaction databases |\n| `reactome_psicquic_summary` | Summarise interactions from a PSICQUIC resource |\n| `reactome_psicquic_details` | Get detailed interactions from a PSICQUIC resource |\n| `reactome_static_interactors` | Get curated interactions from Reactome |\n| `reactome_interactor_pathways` | Find pathways where a protein's interactors appear |\n| `reactome_interactor_summary` | Summarise curated interactions for a protein |\n\n### Graph Database / Cypher (3 tools, opt-in)\n\nOnly registered when `NEO4J_URI` is set. Designed for curators running the [`reactome_neo4j_env`](https://github.com/reactome/reactome_neo4j_env) Docker image locally (or pointing at a remote Reactome Neo4j).\n\n| Tool | Description |\n|------|-------------|\n| `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 |\n| `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. |\n| `reactome_cypher_sample` | Return a small sample of nodes for a given label |\n\n**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.\n\n**Configuration** (add to your Claude MCP config `env` block):\n\n```json\n{\n  \"mcpServers\": {\n    \"reactome\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/reactome-mcp/dist/index.js\"],\n      \"env\": {\n        \"NEO4J_URI\": \"bolt://localhost:7687\",\n        \"NEO4J_USER\": \"neo4j\",\n        \"NEO4J_PASSWORD\": \"neo4j\",\n        \"NEO4J_DATABASE\": \"graph.db\",\n        \"CYPHER_QUERY_TIMEOUT_MS\": \"30000\"\n      }\n    }\n  }\n}\n```\n\n`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.\n\n### Utilities (7 tools)\n\n| Tool | Description |\n|------|-------------|\n| `reactome_species` | List species available in Reactome |\n| `reactome_diseases` | List diseases annotated in Reactome |\n| `reactome_database_info` | Get database version information |\n| `reactome_mapping_pathways` | Map an external identifier to pathways |\n| `reactome_mapping_reactions` | Map an external identifier to reactions |\n| `reactome_orthology` | Get orthologous events/entities in another species |\n| `reactome_query` | Query any Reactome database object by identifier |\n\n## Resources\n\n### Static\n\n| URI | Description |\n|-----|-------------|\n| `reactome://species` | All species in Reactome |\n| `reactome://species/main` | Main species with curated pathways |\n| `reactome://diseases` | All annotated diseases |\n| `reactome://database/info` | Database version and name |\n\n### Templates\n\n| URI Template | Description |\n|--------------|-------------|\n| `reactome://pathway/{id}` | Pathway details |\n| `reactome://pathway/{id}/diagram` | Pathway diagram (SVG) |\n| `reactome://entity/{id}` | Entity details |\n| `reactome://analysis/{token}` | Analysis result |\n| `reactome://top-pathways/{species}` | Top-level pathways for a species |\n| `reactome://events-hierarchy/{species}` | Full event hierarchy for a species |\n\n## Development\n\n```bash\nnpm run dev       # watch mode — recompiles on changes\nnpm run inspect   # interactive MCP Inspector\nnpm run demo      # web demo with MCP bridge\n```\n\n## License\n\nThis project is licensed under the Apache License 2.0 — see [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freactome%2Freactome-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freactome%2Freactome-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freactome%2Freactome-mcp/lists"}