Skip to content

fix(dashboard): surface proxy MCPs in role picker, drop misleading No Tools badge#3132

Merged
mfbx9da4 merged 3 commits into
mainfrom
fix/rbac-proxy-mcp-visibility
Jun 2, 2026
Merged

fix(dashboard): surface proxy MCPs in role picker, drop misleading No Tools badge#3132
mfbx9da4 merged 3 commits into
mainfrom
fix/rbac-proxy-mcp-visibility

Conversation

@mfbx9da4
Copy link
Copy Markdown
Contributor

@mfbx9da4 mfbx9da4 commented Jun 1, 2026

Demo

https://github.com/speakeasy-api/gram/releases/download/_gh-attach-assets/recording-8k5cci.mp4

Why

External MCP "proxy" servers (e.g. Incident.io, Notion installed via the registry) can't enumerate their tools until a user authenticates against them. Two dashboard surfaces treated those servers as empty:

  1. The MCP list and table views rendered a misleading "No Tools" badge.
  2. The "Specific MCP Servers" picker in the role-grant drawer skipped them entirely, so admins couldn't grant access to any proxy-based MCP via RBAC.

The backend already supports server-level grants for these via the call-time mcp:connect check; only the UI was hiding them.

What changed

  • ToolCollectionBadge gains an emptyLabel prop. Pass null to render nothing when the tool list is empty (default behavior is unchanged).
  • MCPCard, MCPTableRow, and the catalog views (ServerCard, ServerTableRow) detect external MCP proxy entries (tool type === "externalmcp" with a :proxy name suffix), strip them from the visible tool count, and suppress the badge when the toolset is a proxy server.
  • GrantRuleDrawerContent's useMCPServers no longer drops servers that contain a proxy entry. The proxy entry itself is filtered from the per-server tool list (it isn't a grantable tool URN), but the server stays in the picker so admins can grant at the server level.

Before

  • MCP list and table: proxy-only servers show a "No Tools" badge.
  • Role drawer "Specific MCP Servers" picker: proxy servers (Incident.io, Notion, etc.) are missing entirely.

After

  • MCP list and table: proxy-only servers show no tools badge; servers that combine proxy + non-proxy entries show the count of the non-proxy tools.
  • Role drawer "Specific MCP Servers" picker: proxy servers are listed and selectable for server-level grants.

Summary by cubic

Surface external MCP proxy servers in the role picker and suppress misleading "No Tools" badges across MCP and catalog views. Enables server-level grants for providers like Incident.io and Notion and keeps tool counts accurate.

  • Bug Fixes
    • Role drawer: list proxy servers in "Specific MCP Servers"; filter the proxy entry out of tools; hide proxy-only servers from "Specific tools"; allow server-level grants when tools aren't enumerable.
    • MCP list/table and catalog cards/rows: hide the "No Tools" badge for proxy-only or remote-only servers; show counts only for non-proxy tools.
    • ToolCollectionBadge: add emptyLabel to customize or hide the empty state.

Written for commit 5aa87c0. Summary will update on new commits.

Review in cubic

…o Tools" badge

External MCP "proxy" servers (e.g. Incident.io, Notion via the registry) cannot
enumerate their tools until a user authenticates against them. Two surfaces
were treating them as empty:

- MCP list and table views showed a "No Tools" badge.
- The "Specific MCP Servers" picker in the role-grant drawer skipped them
  entirely, so admins could not grant access to those servers.

The backend already supports server-level grants for these (call-time
mcp:connect check), so this is purely a UI surface fix.
@mfbx9da4 mfbx9da4 requested review from a team as code owners June 1, 2026 17:26
@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Jun 1, 2026

🦋 Changeset detected

Latest commit: 5aa87c0

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
dashboard Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel
Copy link
Copy Markdown

vercel Bot commented Jun 1, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
gram-docs-redirect Ready Ready Preview, Comment Jun 2, 2026 8:18am

Request Review

Copy link
Copy Markdown
Contributor

@cubic-dev-ai cubic-dev-ai Bot left a comment

Choose a reason for hiding this comment

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

1 issue found across 5 files

Reply with feedback, questions, or to request a fix.

Fix all with cubic | Re-trigger cubic

Comment thread client/dashboard/src/pages/access/GrantRuleDrawerContent.tsx
Proxy servers carry no enumerable tools, so the "Specific tools" panel
would render them as a non-functional "0 tools available" row with a
checkbox that does nothing. They still belong in the "Specific servers"
picker for server-level grants; this just filters them out of the
per-tool view.
@mfbx9da4
Copy link
Copy Markdown
Contributor Author

mfbx9da4 commented Jun 1, 2026

Demo

Walks through:

  1. Add Role drawer on the Roles & Permissions page
  2. Enable the mcp:connect scope
  3. Switch the resource picker from "All servers" to Specific servers
  4. The list now includes ecommerce-api/GitHub, a remote MCP proxy installed from the catalog

Before this PR, GitHub (and any other proxy MCP) was filtered out of this picker entirely because it has zero enumerable tools at deploy time, so admins had no way to grant access to it via RBAC. After: it's listed at the server level. Per-tool selection still hides it (cubic's follow-up catch), since there are no tools to pick from there.

https://github.com/speakeasy-api/gram/releases/download/_gh-attach-assets/recording-ssaflq.mp4

@simplesagar simplesagar requested a review from qstearns June 1, 2026 18:43
Copy link
Copy Markdown
Member

@simplesagar simplesagar left a comment

Choose a reason for hiding this comment

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

Ok with this change. Please get a second eyes from @walker-tx , thanks!

@simplesagar simplesagar requested review from walker-tx and removed request for qstearns June 1, 2026 18:46
@mfbx9da4
Copy link
Copy Markdown
Contributor Author

mfbx9da4 commented Jun 1, 2026

Ok with this change. Please get a second eyes from @walker-tx , thanks!

Got a second eyes from @qstearns will that do?

Auth-gated proxy MCPs in the catalog (GitHub, Make, etc.) carry no
enumerable tools because the registry can't list them until a user
authenticates against the remote. Showing "No Tools" on these cards was
misleading. Same treatment as the MCP list views: detect
remote-only entries (has remotes, zero tools) and suppress the badge.
@mfbx9da4 mfbx9da4 enabled auto-merge June 2, 2026 08:20
@mfbx9da4 mfbx9da4 added this pull request to the merge queue Jun 2, 2026
Merged via the queue into main with commit 9fde650 Jun 2, 2026
34 checks passed
@mfbx9da4 mfbx9da4 deleted the fix/rbac-proxy-mcp-visibility branch June 2, 2026 08:28
@github-actions github-actions Bot locked and limited conversation to collaborators Jun 2, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants