Read-only biomedical evidence tools for drug-target validation: DepMap, gnomAD, OpenTargets, PubMed…
Runs on your machine from its package; the steps are below.
At most: only reads or looks up information.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
docker run -i --rm ghcr.io/athril/agentic-target-evidence/mcp-gateway:v0.1.4
MCP client config
{
"mcpServers": {
"agentic-target-evidence": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/athril/agentic-target-evidence/mcp-gateway:v0.1.4"
]
}
}
}A multi-agent system that gathers and interprets evidence on whether a gene is a viable
drug target for a disease. Given a (gene, disease, direction) triple — e.g. BRCA1,
breast cancer, inhibit — it retrieves evidence from ~two dozen biomedical sources,
screens and interprets it through six independent lenses (genetics, biology, safety,
clinical, commercial, regulatory), and produces a provenanced dossier: a consensus
verdict, a single 0–100 suitability score, per-lens narratives, and a categorized,
link-rich evidence list.
Every source connector — DepMap, gnomAD, ClinicalTrials.gov, OpenTargets, PubMed, FAERS, and ~20 more — lives once under src/mcp_servers/ and is consumed two ways: in-process by the pipeline's agents (fast, typed, no protocol tax), or through the MCP gateway, which composes the same connectors into one MCP server exposing ~40 read-only tools to any MCP host — Claude Desktop, Claude Code, your own agent — for ad hoc lookups outside a full run. A bundled chat assistant offers the same lookups from a browser. See § MCP gateway & servers below.
Built on LangGraph (orchestration) + MCP (the data layer), with full tracing (Langfuse + OpenTelemetry), Postgres-backed checkpointing, and configurable local/cloud LLM routing.
Every verdict is LLM-generated over retrieved evidence — a preliminary research aid, not ground truth. It is built to accelerate the evidence-gathering phase of target validation, not to replace expert review. See NOTICE.md for the full disclaimer, licenses, and data notices.
📄 See it in action: Example dossier — TRPC6 in Focal Segmental Glomerulosclerosis. A real end-to-end run: consensus verdict, 0–100 suitability score, six per-lens narratives, and a link-rich evidence list over 135 kept sources.
uv sync # Python ≥ 3.12, via uv: https://docs.astral.sh/uv/
cp .env.example .env # fill in any keys you want; most sources are keyless
make up # infra + Langfuse + OTEL + the app, as containers
make run GENE=BRCA1 DISEASE="breast cancer"
Output lands under results/report/{gene}/{disease}/{direction}/report.md. The Langfuse
trace UI is at http://localhost:3000. Windows: use make.bat instead of make — see
docs/tutorial.md.
Don't want a full run? Ask one-off questions against the same connectors (e.g. "What's TRPC6's DepMap dependency score?") via the bundled chat UI or Claude Desktop/Code — see docs/mcp_tutorial.md.
make up builds all service images locally. Every tagged release also publishes the
same images to GHCR, so you can pull instead of building:
docker pull ghcr.io/athril/agentic-target-evidence/mcp-servers:latest
docker pull ghcr.io/athril/agentic-target-evidence/mcp-gateway:latest
docker pull ghcr.io/athril/agentic-target-evidence/agents-knowledge:latest
docker pull ghcr.io/athril/agentic-target-evidence/agents-reasoning:latest
docker pull ghcr.io/athril/agentic-target-evidence/report-agent:latest
docker pull ghcr.io/athril/agentic-target-evidence/planner:latest
docker pull ghcr.io/athril/agentic-target-evidence/chat:latest
latest tracks the most recent release; pin a version instead (e.g. :v0.1.2) for
reproducibility. To use these instead of a local build, replace a service's build: block
in docker-compose.yml with image: ghcr.io/athril/agentic-target-evidence/<target>:<tag>.
Every biomedical source connector lives under src/mcp_servers/ as a
self-contained tools.py + MCP server.py pair — 27 source connectors, ~46 read-only
tools, spanning 30+ named public sources (some connector folders bundle more than one
upstream API — see docs/data_sources.md) plus your own internal data:
ChEMBL · ClinGen · ClinicalTrials.gov · ClinVar · DepMap · DGIdb · ENCODE · Expression Atlas · GBD (IHME) · GenCC · gnomAD · Google Patents · GTEx · GWAS Catalog · HGNC · HPA · IMPC · Monarch Initiative · MONDO · OMIM · OpenAlex · OpenFDA · OpenTargets · Orphanet · Project Score · PubMed · SCImago (SJR) · SPOKE · TTD · UniProt · USPTO · internal data (your org's private tables)
Full per-source details (what each provides, licensing/gating status) in
docs/data_sources.md. The
MCP gateway (src/mcp_gateway/server.py)
dynamically discovers and composes all of them into one MCP server, with no
hand-maintained registry — drop a new src/mcp_servers/<name>/server.py in and it's mounted
automatically (subject to feature gates; internal_data is never mounted).
Three ways to reach it, without running the full pipeline:
| Client | What it is |
|---|---|
| Chat assistant | A Gradio chat UI backed by a local Ollama model — make chat or see docs/mcp_tutorial.md. |
| Claude Desktop / Claude Code | Connect over stdio alongside your other MCP servers. |
| Any other MCP client | Call the tools programmatically over HTTP (bearer-token auth via MCP_GATEWAY_TOKEN). |
Self-hosting the gateway alone (no pipeline, no other services) is a single container:
docker run -p 8765:8765 ghcr.io/athril/agentic-target-evidence/mcp-gateway:latest — it
defaults to HTTP on 0.0.0.0:8765. Point any MCP client at http://<host>:8765/mcp.
To use it from Claude Desktop or Claude Code without cloning the repo, have the client launch
the same image over stdio — add this to claude_desktop_config.json (or .mcp.json):
{
"mcpServers": {
"agentic-target-evidence": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "MCP_TRANSPORT=stdio",
"-e", "NCBI_API_KEY", "-e", "USPTO_API_KEY",
"ghcr.io/athril/agentic-target-evidence/mcp-gateway:latest"]
}
}
}
Both keys are optional (-e NAME with no value forwards it from your environment). The gateway
is also listed in the official MCP Registry as
io.github.athril/agentic-target-evidence.
For all bulk retrieval the pipeline never talks to the gateway — it imports each tools.py
directly, keeping the hot path free of protocol overhead. The gateway is a second, additive
surface onto the same connectors, for ad hoc use outside a full run. (The one in-pipeline
gateway client is the synthesis-phase Investigator agent, which calls retrieval tools
over MCP to close evidence gaps before the report; it degrades gracefully if the gateway is
down.) For the design — exposure model, security, transports, discovery internals — see
docs/mcp_gateway.md; for a step-by-step walkthrough, see
docs/mcp_tutorial.md.
Full documentation lives in docs/. Start there — it has reading paths for "I just want to run it," "I want to understand the design," and "I want to contribute." A few entry points:
| Doc | What it covers |
|---|---|
| docs/README.md | Start here. Doc set index, full table of documents, and reading paths by goal (run it, understand the design, contribute). |
| docs/tutorial.md | Run an analysis and read the resulting dossier. |
| docs/mcp_tutorial.md | Ad hoc tool access via the MCP gateway and chat assistant, step by step. |
| docs/mcp_gateway.md | MCP gateway reference: exposure model, security, transports, discovery internals. |
| docs/data_sources.md | Every source connector, what it provides, and its licensing/gating status. |
| docs/restricted.md | Step-by-step setup for gated sources (OMIM, SCImago, GBD, TTD): API keys, data downloads, verification. |
| docs/architecture.md | The full design: pipeline graph, HITL, capabilities, observability. |
| docs/developers.md | Extension points and conventions for contributing. |
| docs/faq.md | Nuances and easy-to-get-wrong points, as Q&A. |
Contributions are welcome — see CONTRIBUTING.md for setup, conventions, and how to submit a change, and docs/developers.md for extension points. Please also read our Code of Conduct.
Apache-2.0. Some data sources carry narrower terms and are gated off by default — see docs/data_sources.md for the reference table, docs/restricted.md for step-by-step setup, and NOTICE.md for the full disclaimer and per-source licenses.
Patryk Orzechowski, Ph.D.