Skip to content

feat(desktop): present MCP catalog as connectors - #59872

Draft
hermias1 wants to merge 5 commits into
NousResearch:mainfrom
hermias1:feat/mcp-connectors-ui
Draft

feat(desktop): present MCP catalog as connectors#59872
hermias1 wants to merge 5 commits into
NousResearch:mainfrom
hermias1:feat/mcp-connectors-ui

Conversation

@hermias1

@hermias1 hermias1 commented Jul 6, 2026

Copy link
Copy Markdown

Summary\n- Presents the desktop MCP catalog as user-facing Connectors with display metadata, richer cards, setup summaries, and Connect/Install actions.\n- Adds optional connector UI metadata to MCP manifests and exposes it through the catalog API.\n- Imports installable remote MCP endpoints from the Claude Connectors directory where the page exposes a claude mcp add command; includes Streamable HTTP and SSE entries.\n\n## Validation\n- env -u PYTHONPATH uv run python -m pytest tests/hermes_cli/test_mcp_catalog.py tests/hermes_cli/test_dashboard_admin_endpoints.py::TestMcpEndpoints::test_catalog_lists_entries -q\n- cd apps/desktop && npm run test:ui -- src/lib/mcp-catalog.test.ts && npm run typecheck && npx eslint src/lib/mcp-catalog.ts src/lib/mcp-catalog.test.ts\n- cd apps/desktop && npm run build\n\n## Notes\n- The Claude directory currently exposes 400 connector cards. This PR adds the 262 new installable endpoints whose detail pages expose concrete MCP add commands, plus the existing curated entries already in Hermes. Directory cards with no endpoint command or placeholder URLs were not converted into manifests because Hermes requires a concrete transport target.

@alt-glitch alt-glitch added type/feature New feature or request P3 Low — cosmetic, nice to have comp/desktop Electron desktop app (apps/desktop/*) comp/cli CLI entry point, hermes_cli/, setup wizard tool/mcp MCP client and OAuth duplicate This issue or pull request already exists labels Jul 6, 2026
@alt-glitch

Copy link
Copy Markdown
Collaborator

This was generated by AI during triage.

Duplicate of #59692 (same author, earlier open) — the connector-presentation core (the 9 apps/desktop/src/* + hermes_cli/mcp_catalog.py + hermes_cli/web_server.py files) is byte-identical to #59692 (apps/desktop/src/lib/mcp-catalog.ts is the same new file with the same 52-line content). The one material difference here is the bundled bulk import of ~262 new optional-mcps/*/manifest.yaml entries from the Claude Connectors directory. Suggest folding that manifest import into #59692 (or the maintainer taking this superset) rather than carrying two PRs of the same feature.

@teknium1 teknium1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks for the connector presentation and catalog work. One compatibility issue needs resolution before this can be safely salvaged.

Problems

  • apps/desktop/src/app/skills/mcp-tab.tsx:1417 directly reads entry.setup_steps.length (with equivalent reads at :1429 and :1441). Current main's catalog API response at hermes_cli/web_server.py:11263-11293 does not return any of the new connector metadata fields. Because Desktop and its runtime update independently (apps/desktop/AGENTS.md:137-141), a newer Desktop against that runtime will throw on undefined.length while rendering MCP Catalog.

Suggested changes

  • Normalize the new metadata to empty strings/arrays at the catalog response boundary, or make it optional in the renderer and use ?? []; add a Desktop regression test for the older response shape.
  • The MEMBER discussion identifies the presentation core as duplicated in open #59692. Please coordinate salvage so that core is taken once; review the large manifest import separately.

This is an automated hermes-sweeper review.

<span>{setupSummary}</span>
</div>
)}
{entry.setup_steps.length > 0 && (

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Desktop can update ahead of its runtime, but the existing catalog API does not return setup_steps (or the other new metadata arrays). This throws on an older backend. Normalize the response to empty arrays or use entry.setup_steps ?? [] here and add a regression test for the legacy response shape.

@teknium1 teknium1 added sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades sweeper:blast-moderate Sweeper blast radius: moderate — a subsystem or single platform labels Jul 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/cli CLI entry point, hermes_cli/, setup wizard comp/desktop Electron desktop app (apps/desktop/*) duplicate This issue or pull request already exists P3 Low — cosmetic, nice to have sweeper:blast-moderate Sweeper blast radius: moderate — a subsystem or single platform sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades tool/mcp MCP client and OAuth type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants