Read-only biomedical evidence tools for drug-target validation: DepMap, gnomAD, OpenTargets, PubMed…
| Testing | |
| Containers | |
| Tooling | |
| Stack | |
| Meta |
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.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
docker run -i --rm ghcr.io/athril/agentic-target-evidence/mcp-gateway:v0.1.4Merge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-athril-agentic-target-evidence": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/athril/agentic-target-evidence/mcp-gateway:v0.1.4"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referenceghcr.io/athril/agentic-target-evidence/mcp-gateway:v0.1.4dockerAgentic Target Evidence works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.