Populating overview tab on community servers#452
Open
cutecatfann wants to merge 5 commits intomainfrom
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What I did
Populate the Overview tab for community registry MCP servers. Previously,
docker mcp catalog-next server inspectreturned emptyreadmeContentfor community registry servers, leaving the Overview tab blank in Docker Desktop. This PR adds a three-tier fallback chain to resolve README content at inspect time:Baked-in ReadmeURL: If the OCI snapshot already contains a
ReadmeURL(like servers imported viadocker mcp catalog-next server add), fetch it directly. Failures are now logged as warnings instead of hard errors, since community servers often have derived URLs that point to private or deleted repos.Live registry API lookup: When no baked-in README exists, query the official MCP registry (
registry.modelcontextprotocol.io) using the server'sMetadata.RegistryURL. Extract the GitHub repository URL from the API response, construct araw.githubusercontent.comURL viaBuildGitHubReadmeURL, and fetch the content. The registry API response is preserved even when the README fetch fails, so its metadata (title, status, websiteUrl) can enrich the synthesized fallback.GitHub API README endpoint (fallback when raw URL 404s):
BuildGitHubReadmeURLhardcodes README.md, butraw.githubusercontent.comis case-sensitive. Repos using readme.md or other casing variants return 404. This caused some failures among community servers that have GitHub repos. The GitHub API endpoint auto-discovers the README regardless of filename, recovering those failures.Synthesized markdown overview: When no README content can be fetched (no repo, private repo, non-GitHub host, 404, etc.), construct a structured markdown document from the server's catalog metadata and registry API response. Sections include:
See example here:

Data: README availability across community registry servers
The
mcp/community-registry:latestOCI image contains 1,514 servers (as of March 20 2026). None of them have aReadmeURLbaked into the OCI snapshot (0%), so the entire population depends on this new fallback chain.Based on sampling the MCP registry API:
Breakdown of why servers fall through to synthesized:
Additional changes
BuildGitHubReadmeURLinregistry_to_catalog.go: new utility that constructsraw.githubusercontent.comURLs from GitHub repo URLs, handling subfolders and.gitsuffixes.TransformToDockernow derives and setsReadmeURLfrom the GitHub repository during import, so future OCI snapshots carry the URL for tier-1 lookup.InspectServersignature updated to accept aregistryapi.Clientfor live API lookups.