SEAB-7746 Prototype the remaining GA4GH TRS V2 tools - #6
denis-yuen wants to merge 4 commits into
Conversation
|
This comment was generated by Claude (Claude Code): a sample run of this branch against Dockstore production, via a local server ( Prompt:
How it was answered: nine 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:
WDL (41 workflows, 516 versions)
These 25 have 1 version each:
Nextflow (7 workflows, 172 versions)
Galaxy (5 workflows, 68 versions)
CWL (4 workflows, 83 versions)
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. |
| context: . | ||
| push: true | ||
| tags: quay.io/dockstore/dockstore-mcp:${{ steps.ref.outputs.sanitized }} | ||
| build-args: GIT_REF=${{ steps.ref.outputs.sanitized }} |
There was a problem hiding this comment.
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[ |
There was a problem hiding this comment.
I asked for this option to reduce the response size when the contents are not useful for the query (like in the example comment)
9a374c3 to
0c8876a
Compare
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>
0ec8a71 to
a2c1930
Compare
|
merged into #12 while reducing tools |
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_toolsreport totals and take asummaryoption that makes responses about 17× smaller. Notebooks and services are supported, and requests send adockstore-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
e.g. Does this change...
Please make sure that you've checked the following before submitting your pull request. Thanks!
make check🤖 Generated with Claude Code