Skip to content

Conversation

@bobbyhouse
Copy link
Contributor

@bobbyhouse bobbyhouse commented Dec 2, 2025

What I did

  • Add command docker mcp catalog-next server ls with filtering options on the server name so that we can get the details of a single server, including all of it's tools
  • Add a --no-tools option to docker mcp catalog-next show because we were returning too much data that would exceed a 1MB limit for node processes to for data over stdio
  • Make docker mcp catalog-next ls --format json/yaml return list data instead of all the data for all the catalogs, which would also exceed the 1MB limit

Related issue

(not mandatory) A picture of a cute animal, if possible in relation to what you did

Uploading Screenshot 2025-12-02 at 1.52.32 AM.png…

To address issue where too much data was being printed when showing an
entire catalog, introduce a option to specify --no-tools to exclude
tools from the response.

Additionally, add a `docker mcp catalog-next server ls` command so that
we can get individual server information from a catalog that does
include the tools.
Using --format json or yaml would return the entire contents of all the
catalogs. Instead, return the data that is returned for human readable
output.
@bobbyhouse bobbyhouse force-pushed the mcpt-185-add-servers-from-catalog branch from 11a4ed8 to 3e01128 Compare December 2, 2025 09:51
@bobbyhouse bobbyhouse marked this pull request as ready for review December 2, 2025 09:57
@bobbyhouse bobbyhouse requested a review from a team as a code owner December 2, 2025 09:57
Copy link
Contributor

@cmrigney cmrigney left a comment

Choose a reason for hiding this comment

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

lgtm. Left a couple suggestions but we can follow up later.

return outputServers(catalog.Ref, catalog.Title, servers, format)
}

func parseFilters(filters []string) ([]serverFilter, error) {
Copy link
Contributor

Choose a reason for hiding this comment

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

thought (follow up later): I wonder if we can reuse some of the code we have in workingset/server.go.

Comment on lines +80 to +82
if noTools {
catalog = filterCatalogTools(catalog)
}
Copy link
Contributor

Choose a reason for hiding this comment

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

suggestion (non-blocking): I would personally find it more readable if we edit in-place to nil the values out instead of making a copy:

Suggested change
if noTools {
catalog = filterCatalogTools(catalog)
}
if noTools {
for i := range catalog.Servers {
catalog.Servers[i].Tools = nil
if catalog.Servers[i].Snapshot != nil {
catalog.Servers[i].Snapshot.Server.Tools = nil
}
}
}

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.

4 participants