Skip to content

feat(ui): Contribute / Request affordances wired to registry templates - #148

Closed
its-mash wants to merge 2 commits into
mainfrom
feat/contribute-affordances-and-registry-wiring
Closed

feat(ui): Contribute / Request affordances wired to registry templates#148
its-mash wants to merge 2 commits into
mainfrom
feat/contribute-affordances-and-registry-wiring

Conversation

@its-mash

Copy link
Copy Markdown
Member

Summary

Adds end-to-end Contribute / Request affordances across the app and wires them to the issue templates that just landed in mcpmux/mcp-servers (see merged PR #114 there).

Users who hit a dead-end — searched for a server that isn't in the registry, found a bug, wanted to suggest a feature — had no clear in-app path. This PR gives them three coordinated entry points, all opening the user's default browser via the Tauri opener plugin (no in-webview navigation).

What's new

New shared module — lib/contribute.ts

Centralises every external URL (main repo, servers repo, bug/feature/request-server templates). CONTRIBUTE.requestServer(searchTerm?) URL-encodes the search term into the GitHub issue title so a user arriving from the empty-search state lands on a pre-populated form. openExternal(url) wraps openUrl with the same opener-plugin fallback OAuthConsentModal uses.

New shared components — components/Contribute.tsx

  • <RequestServerCTA searchTerm?> — inline gradient card used on empty-search states. Two-button footer: Request (opens the request-server.yml template with the search term as the title) + Contribute (opens mcp-servers CONTRIBUTING.md).
  • <ContributeMenu> — dropdown with Request new server / Report bug / Suggest feature / Open on GitHub. Reusable anywhere; lives in the Registry header today.

Placements

  • Registry page<ContributeMenu> in the header (always visible). <RequestServerCTA> in the empty-results state with the active searchQuery threaded into the issue title.
  • Add Custom Server modal (ConfigEditorModal) — <RequestServerCTA> above the Monaco editor. Users about to hand-roll a custom server config see a clear nudge to check whether one already exists upstream.
  • Settings — new "Contribute & feedback" card with a 2-column grid of Request-server / Report-bug / Suggest-feature / Open-on-GitHub tiles (ContributeRow helper local to SettingsPage.tsx).

Issue-template wiring

Every link that previously used ?labels= params now uses ?template=*.yml so it opens the correct pre-filled GitHub issue form:

Affordance Before After
Bug report ?labels=bug ?template=bug_report.yml
Feature request ?labels=enhancement ?template=feature_request.yml
Request a server ?labels=server-request ?template=request-server.yml, title [Request] …
Contribute a server (N/A) Direct link to mcp-servers/CONTRIBUTING.md — server definitions land via PR, not issues
Report broken definition (N/A) ?template=bug-report.yml on mcp-servers

.github/ISSUE_TEMPLATE/config.yml

  • Enables blank issues.
  • Adds three cross-repo contact links surfacing the registry's PR guide, Request-a-Server template, and Report-a-Bug template in the "New issue" chooser. Avoids cross-repo ticket drift — users who accidentally come to mcp-mux to report a registry issue see exactly where to go.

Commit layout

  1. feat(ui): Contribute / Request affordances across the app — the module + components + Registry/Settings placements (originally a local-only commit on my machine).
  2. feat(ui): wire Contribute/Request affordances to merged registry templates — template URL switch + ConfigEditorModal CTA placement + config.yml contact links + blank-issues toggle.

Test plan

  • pnpm typecheck — passes locally
  • pnpm lint — no new warnings
  • Launch pnpm dev, exercise each affordance:
    • Registry header Contribute dropdown → each menu item opens the right GitHub template
    • Empty-search state on Registry → Request/Contribute buttons open the right URLs with search term pre-filled on the title
    • Add Custom Server modal → Request/Contribute CTA renders above the editor
    • Settings → "Contribute & feedback" card renders with 4 tiles, each opens the correct URL
  • Verify on GitHub that the "New issue" chooser for this repo shows the new contact links and the "Open a blank issue" option
  • Check that request-server.yml / bug-report.yml deep links on mcp-servers resolve (they ship as part of the already-merged mcp-servers PR chore: add MCP Registry server.json and gitignore updates #114)

Users who hit a dead-end ("searched for a server that isn't in the
registry", "found a bug", "wanted to suggest a feature") had no clear
place to send that signal — they'd just close the app. This commit
adds three coordinated entry points, all wired to the mcpmux and
mcp-servers GitHub repos via the Tauri opener plugin.

New shared module `lib/contribute.ts`
  * Centralises every external URL (main repo, servers repo, marketing
    site, bug-report, feature-request, request-server templates).
  * `CONTRIBUTE.requestServer(searchTerm?)` URL-encodes the search term
    into the GitHub issue title so a user coming from the empty-search
    state lands on a pre-populated form.
  * `openExternal(url)` wraps `openUrl` with the same opener-plugin
    fallback OAuthConsentModal uses.

New shared components `components/Contribute.tsx`
  * `<RequestServerCTA searchTerm?>` — inline gradient card used on the
    empty-search state. Two-button footer: Request (gh issue) +
    Contribute (mcp-servers CONTRIBUTING.md).
  * `<ContributeMenu>` — dropdown with Request new server / Report bug /
    Suggest feature / Open on GitHub. Reusable anywhere; lives in the
    Registry header today.

Placements:
  * Registry page — ContributeMenu in the header (always visible), and
    RequestServerCTA rendered in the empty-results state with the
    active searchQuery threaded into the issue title.
  * Settings — new "Contribute & feedback" card with a 2-column grid
    of Request-server / Report-bug / Suggest-feature / Open-on-GitHub
    tiles (ContributeRow helper local to this file).

All links open in the user's default browser via the opener plugin; no
in-webview navigation. `pnpm typecheck` + lint clean (warnings unchanged
at 31).

Signed-off-by: Mohammod Al Amin Ashik <maa.ashik00@gmail.com>
…lates

The Contribute / Request affordances (c8c3f1c) originally pre-filled
issue URLs with ?labels= params. Now that mcp-servers ships dedicated
issue templates (request-server.yml, bug-report.yml) and the registry's
CONTRIBUTING.md covers the PR path in depth, switch to ?template= deep
links and re-route the "Contribute" action to the PR flow.

- `lib/contribute.ts`
  * `bug` / `featureRequest` → ?template=bug_report.yml / feature_request.yml
  * `requestServer(term)` → ?template=request-server.yml, title prefix
    "[Request] " (matches template expectations)
  * `contributeServer` → direct link to mcp-servers CONTRIBUTING.md; issue
    forms cannot open PRs, so this sends users straight down the fork → PR
    path instead of through an intermediate issue
  * `serverDefinitionBug` (new) → ?template=bug-report.yml for reporting
    broken definitions in the registry

- `components/ConfigEditorModal.tsx`
  Adds the existing RequestServerCTA above the Monaco editor in the
  "Add Custom Server" modal. Users about to hand-roll a custom server
  config see a clear nudge to check whether one already exists, with
  Request/Contribute buttons matching the rest of the app.

- `.github/ISSUE_TEMPLATE/config.yml`
  * Enables blank issues.
  * Adds three cross-repo contact links so the "New issue" chooser surfaces
    the registry's PR guide, Request-a-Server template, and Report-a-bug
    template (avoids cross-repo ticket drift).

Signed-off-by: Mohammod Al Amin Ashik <maa.ashik00@gmail.com>
@its-mash

Copy link
Copy Markdown
Member Author

Closing — bundling these changes into the user's in-progress local branch for manual testing alongside other WIP work. Will reopen as a separate PR later once testing is done.

@its-mash its-mash closed this Apr 23, 2026
@its-mash
its-mash deleted the feat/contribute-affordances-and-registry-wiring branch April 23, 2026 01:24
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