galaxyproject / galaxyproject/loom

Loom: /lit command + literature MCPs (PubMed / Europe PMC)

Open
#14 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
14
Forks
12
Avg merge
6d 5h
Merged PRs (30d)
17

Description

## Proposal

Wire literature search into Phase 1 (`research_add_literature`) via an MCP server, plus an explicit `/lit` slash command that reliably triggers it.

## Motivation

Phase 1 already has `research_add_literature`, but it only *records* references — the agent can't search PubMed or Europe PMC. Users doing literature review have to leave Orbit, search manually, then paste results back.

## Shape

**MCP candidates** (no official NCBI MCP exists as of Apr 2026 — confirmed against [modelcontextprotocol/servers](https://github.com/modelcontextprotocol/servers); the 2026 [MCPmed paper](https://pmc.ncbi.nlm.nih.gov/articles/PMC12927880/) explicitly calls for one):

1. [`genomoncology/biomcp`](https://github.com/genomoncology/biomcp) — biomedical MCP, fans out across PubMed + Europe PMC + PubTator3 with dedup. **Preferred** — one registration covers both sources, already dedups, domain-matched to Loom. Caveat: broader scope (variants, trials) may add tool-noise; consider filtering the registered tool list to literature-only at registration time.
2. [`cyanheads/pubmed-mcp-server`](https://github.com/cyanheads/pubmed-mcp-server) — PubMed-only, clean, has a hosted instance (no subprocess). Fallback if biomcp scope is too heavy.

**Slash command**: `/lit ` in `extensions/loom/execution-commands.ts` — brain-owned, dispatches to the registered literature MCP's search tool, returns structured results the agent can then feed into `research_add_literature`.

**System prompt**: extend `extensions/loom/context.ts` Phase 1 guidance so the agent *also* reaches for the MCP when the user says things like \"find papers about X\" — but treat `/lit` as the reliable path since prompt-based recognition is fuzzy (\"what's known about Y\" is ambiguous).

**UI**: existing tool-card path in Orbit chat surfaces calls automatically. Could add a distinct \"literature\" label/icon to distinguish from Galaxy tool calls — not blocking.

## Open questions

- biomcp tool-list filtering: does `pi-mcp-adapter` support whitelisting a subset of tools per server?
- Should `/lit` always write results to the plan/notebook via `research_add_literature`, or return them to chat and let the agent decide?
- NCBI API key: biomcp+cyanheads both use E-utilities → rate-limited without a key. Surface in `~/.loom/config.json` alongside Galaxy creds?

## Related

- Discussed in nekrut:testing/all-prs testing session
- Orthogonal to #13 (dynamic model list)

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with extensions/loom/execution-commands.ts to trace slash-command dispatch, then read extensions/loom/context.ts for the Phase 1 guidance and inspect how literature MCP tools are registered. The work is done when /lit reliably returns structured PubMed or Europe PMC results and the agent can use the literature MCP through the Phase 1 flow; resolve the listed tool-filtering, persistence, and API-key questions first.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
backend-api-design, cli
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.