Skip to content

SEAB-7746 Prototype the remaining GA4GH TRS V2 tools - #6

Closed
denis-yuen wants to merge 4 commits into
feature/trs_initial_hookupfrom
feature/trs_thin_prototype
Closed

denis-yuen wants to merge 4 commits into
feature/trs_initial_hookupfrom
feature/trs_thin_prototype

Conversation

@denis-yuen

@denis-yuen denis-yuen commented Sep 23, 2026 •

Copy link
Copy Markdown
Member

Description
A prototype for SEAB-7746, to get a sense of what is possible. It adds the remaining GA4GH TRS V2 tools from the ga4gh-mcp tutorials (list_tools, search_tools, get_tool, list_tool_versions, get_tool_version, get_tool_descriptor, get_tool_descriptor_by_path, get_tool_files, get_tool_tests, get_tool_containerfile), which gives this server feature parity with them. Beyond the tutorials, list_tools/search_tools report totals and take a summary option that makes responses about 17× smaller. Notebooks and services are supported, and requests send a dockstore-mcp/<git ref> User-Agent. The TRS filters are case-sensitive substring matches, so a performant search still needs SEAB-7733.

Review Instructions
Run make check, then point an MCP client at a local server (DOCKSTORE_MCP_DOCKSTORE_URL=https://dockstore.org make run) and try prompts from the ga4gh-mcp tutorials; a sample run is in a comment below. Stacked on #5.

Issue
SEAB-7746 (https://ucsc-cgl.atlassian.net/browse/SEAB-7746). Follow-up: SEAB-7733 (https://ucsc-cgl.atlassian.net/browse/SEAB-7733).

Security and Privacy

None

  • Security and Privacy assessed

e.g. Does this change...

  • Any user data we collect, or data location?
  • Access control, authentication or authorization?
  • Encryption features?

Please make sure that you've checked the following before submitting your pull request. Thanks!

  • Check that you pass the basic style checks and unit tests by running make check
  • Ensure that the PR targets the correct branch. Check the milestone or fix version of the ticket.
  • If you are changing dependencies, check the Snyk status check or the dashboard to ensure you are not introducing new high/critical vulnerabilities
  • Assume that arguments passed to a tool can be malicious, and sanitize and/or check for Denial of Service type values, e.g., massive sizes
  • Do not log or return secrets/credentials in a tool's response, error message, or debug output
  • If this PR is for a user-facing feature, create and link a documentation ticket for this feature (usually in the same milestone as the linked issue). Style points if you create a documentation PR directly and link that instead.

🤖 Generated with Claude Code

@denis-yuen

Copy link
Copy Markdown
Member Author

This comment was generated by Claude (Claude Code): a sample run of this branch against Dockstore production, via a local server (local_mcp_2_dockstore_prod).

Prompt:

Get me a list of RNAseq workflows from Dockstore uusing local_mcp_2_dockstore_prod and group by language, but also find out how many versions of each workflow there are

How it was answered: nine search_tools calls with tool_class=Workflow and summary=true. The TRS filters are case-sensitive, so each call used a different spelling in name or toolname: rnaseq, RNAseq, rna-seq, RNASeq, and RNA-seq for toolname only. Results were deduplicated by TRS id. Workflows that only mention RNA-seq in their README (91 of them) are not included, and doing better is the job of SEAB-7733.


There are 57 RNA-seq workflows with 801 versions between them, sorted by version count within each language.

A "version" is any Git branch or tag Dockstore has picked up, so busy repositories inflate the counts:

  • WARP rnaseq_aou: its 323 versions are every branch and tag in the whole WARP monorepo, not releases of this workflow.
  • AoU-Multiomics rnaseqc2_aggregate_batched: most of its 54 are codex/* feature branches.
  • nf-core pipelines: also count dev, template and feature branches alongside their numbered releases.

WDL (41 workflows, 516 versions)

Workflow Versions
broadinstitute/warp/rnaseq_aou 323
AoU-Multiomics-Analysis/prepare_QTL/rnaseqc2_aggregate_batched 54
f73chen/rnaSeqQC/RNASeqQC 21
ENCODE-DCC/mirna-seq-pipeline_wdl_checker 13
gatk-workflows/gatk4-rnaseq-germline-snps-indels 8
hacchy1983/rna-seq-pipeline 5
richardslab/gtex-pipeline/CombineRNASeqc2Files 5
ENCODE-DCC/rna-seq-pipeline 4
gatk-workflows/gatk3-4-rnaseq-germline-snps-indels 4
richardslab/gtex-pipeline/CreateRNASeqQCSampleName 4
ENCODE-DCC/mirna-seq-pipeline 2
Kayla-Morrell/AnVILBulkRNASeq 2
WhiteLabGenomics/TerraPipelines_BulkRNAseq/bulkRNA_workflow 2
broadinstitute/MDL-workflows/rnaseqc2 2
broadinstitute/depmap_omics/rnaseq_mutect2_tumor_only 2
chunjie-sam-liu/rna-seq-quant-wdl 2

These 25 have 1 version each:

  • aarong/rnaseqc
  • IfrahTariq/bulkRNA_workflow
  • Mo7ammedFarahat/RNASeq_WDL
  • ParkerICI/single_cell_workflows/rnaseq
  • TrinityCTAT/RNA-SeQC2-long
  • broadinstitute/depmap_omics/RNA_stranded_rsem_rnaseqc2
  • broadinstitute/gpp-rnaseq-analysis: RNA_aggregate, RNA_pipeline, rsem_depmap
  • broadinstitute/rna_seq_sars_cov_2/trinityrnaseq
  • broadinstitute/warp: aggregate_rnaseqc2, rnaseqc2_aggregate_batched
  • getwilds/ww-rnaseq
  • gulhanlab/GTEx-RNAseq-pipeline: GTEx-RNAseq-BAM, GTEx-RNAseq-FASTQ, GenerateRSEMReference, GenerateSTARIndex, samtools_idx
  • lux563624348/salmon-rnaseq-wdl, plus its checker
  • qinqian/depmap_omics: RNA_stranded_rsem_rnaseqc2, rnaseq_mutect2_tumor_only
  • sidwekhande/RNA-seq
  • thouis/gatk4-rnaseq-germline-snps-indels
  • welch-lab/STEAMER-RNAseq

Nextflow (7 workflows, 172 versions)

Workflow Versions
nf-core/rnaseq 87
nf-core/smrnaseq 33
nf-core/scrnaseq 28
nf-core/dualrnaseq 14
nextflow-io/rnaseq-nf 5
denis-yuen/rnaseq 4
Vivian-chen16/RNAseq-QTL-wf 1

Galaxy (5 workflows, 68 versions)

Workflow Versions
iwc-workflows/rnaseq-pe 17
iwc-workflows/rnaseq-sr 15
iwc-workflows/scrna-seq-fastq-to-matrix-10x-cellplex 12
iwc-workflows/scrna-seq-fastq-to-matrix-10x-v3 12
iwc-workflows/rnaseq-de 12

CWL (4 workflows, 83 versions)

Workflow Versions
hubmapconsortium/salmon-rnaseq 78
SciDAP/workflows/xenbase-rnaseq-se 2
sevenbridges-openworkflows/Broad-Best-Practice-rnaseq-germline-snps-indels 2
sbg/sbg_dockstore_tools/gtex-rna-seq-pipeline 1

No workflow is published in more than one language. The TRS API doesn't say whether a version is a branch or a tag, so release-only counts would need a heuristic based on version names.

@denis-yuen denis-yuen self-assigned this Sep 23, 2026
@denis-yuen
denis-yuen marked this pull request as ready for review September 23, 2026 22:32
@denis-yuen
denis-yuen requested review from a team and svonworl and removed request for a team September 23, 2026 22:32
context: .
push: true
tags: quay.io/dockstore/dockstore-mcp:${{ steps.ref.outputs.sanitized }}
build-args: GIT_REF=${{ steps.ref.outputs.sanitized }}

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This supports the ability to tag the user agent with the version (tag or branch) that this repo is on

VersionId = Annotated[str, Field(description="Version name, e.g. 'master' or '1.0', as list_tool_versions gives.")]
DescriptorType = Annotated[TrsDescriptorType, Field(description="Descriptor language of the files to fetch.")]
Limit = Annotated[int, Field(ge=1, le=1000, description="Most tools to return in this page.")]
Summary = Annotated[

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I asked for this option to reduce the response size when the contents are not useful for the query (like in the example comment)

@denis-yuen
denis-yuen added this pull request to stack #8 September 24, 2026 18:06
@denis-yuen
denis-yuen force-pushed the feature/trs_initial_hookup branch from 9a374c3 to 0c8876a Compare September 24, 2026 18:10
denis-yuen and others added 4 commits September 24, 2026 14:14
Adds list_tools, search_tools, get_tool, list_tool_versions, get_tool_version,
get_tool_descriptor, get_tool_descriptor_by_path, get_tool_files, get_tool_tests,
and get_tool_containerfile to trs.py, backed by Dockstore's TRS V2 endpoints,
along with the TRS models they return.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The ref comes from DOCKSTORE_MCP_GIT_REF, which the Docker image sets from a
GIT_REF build argument (filled in by the tagged deploy workflow and the
Makefile), falling back to the package version when unset.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
list_tools and search_tools now return a ToolPage with the total across every
page and the next page's offset. Dockstore only reports the last page's offset,
computed as floor(total / limit), so the total is counted from the last page's
contents rather than read from the header.

Adds the JUPYTER and SERVICE descriptor types Dockstore's TRS API accepts, so
notebooks' descriptors and files can be fetched.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With summary set, each tool comes back as a ToolSummary (id, name,
organization, class, descriptor languages across its versions, version names,
and the first 200 characters of its description) instead of the full TRS
record. The nine RNA-seq name searches against production shrink from about
724 KB to 43 KB this way.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@denis-yuen
denis-yuen force-pushed the feature/trs_thin_prototype branch from 0ec8a71 to a2c1930 Compare September 24, 2026 18:21
@denis-yuen
denis-yuen requested review from svonworl and removed request for svonworl September 24, 2026 18:24
@denis-yuen denis-yuen mentioned this pull request Sep 24, 2026
7 tasks done
@denis-yuen
denis-yuen removed this pull request from stack #8 September 24, 2026 21:20
@denis-yuen
denis-yuen added this pull request to stack #10 September 24, 2026 21:20
@denis-yuen
denis-yuen removed this pull request from stack #10 September 24, 2026 21:21
@denis-yuen
denis-yuen removed the request for review from svonworl September 25, 2026 13:59
@denis-yuen denis-yuen mentioned this pull request Sep 25, 2026
7 tasks done
@denis-yuen

Copy link
Copy Markdown
Member Author

merged into #12 while reducing tools

@denis-yuen denis-yuen closed this Sep 25, 2026
@denis-yuen
denis-yuen deleted the feature/trs_thin_prototype branch September 25, 2026 17:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant