Skip to content

MCP servers clarity improvements & new filters/sort - #162

Open
ChristophePRAT wants to merge 4 commits into
aipotheosis-labs:mainfrom
ChristophePRAT:mcp-servers/clarity-improvements
Open

MCP servers clarity improvements & new filters/sort#162
ChristophePRAT wants to merge 4 commits into
aipotheosis-labs:mainfrom
ChristophePRAT:mcp-servers/clarity-improvements

Conversation

@ChristophePRAT

@ChristophePRAT ChristophePRAT commented Oct 9, 2025

Copy link
Copy Markdown
Contributor
  • Add MCP Transport Type
  • update UI of transport type
  • Add sort option
  • Add custom-servers-only option

🏷️ Ticket

#139

📝 Description

I added the transport type (SSE or Streamable HTTP), a sort option (either by name, creation date, update date or last synced date), and a custom-servers-only switch.

🎥 Demo

Screen.Recording.2025-10-09.at.17.11.52.mov

✅ Checklist

  • I have signed the Contributor License Agreement (CLA) and read the contributing guide (required)
  • I have linked this PR to an issue or a ticket (required)
  • I have updated the tests accordingly (required for a bug fix or a new feature)
  • All checks on CI passed

Summary by cubic

Adds transport type and new filters/sorting to the MCP Servers page for clearer browsing and faster discovery. Addresses #139 by exposing transport type and adding a “Custom Only” filter and sort options.

  • New Features
    • Backend: expose transport_type on MCPServerPublic.
    • UI: show transport badge (SSE or HTTP) on server cards.
    • Sorting: by name, type, last synced, created at, updated at.
    • Filter: “Custom Only” toggle to show org-specific servers.
    • Minor layout tweaks for search and filters.

Summary by CodeRabbit

  • New Features

    • Sort MCP servers by name, type, last synced, created, or updated date.
    • Filter to show only custom servers.
    • Display a transport type badge (SSE/HTTP) for each server when available.
  • UI Improvements

    • Refined server card header to align logo and name with improved spacing.
    • Responsive search input for better layout on different screen sizes.
    • Consolidated controls: category selector, “Custom Only” toggle, and “Sort By” dropdown placed together.

@vercel

vercel Bot commented Oct 9, 2025

Copy link
Copy Markdown

@ChristophePRAT is attempting to deploy a commit to the Proxy Team on Vercel.

A member of the Team first needs to authorize it.

@coderabbitai

coderabbitai Bot commented Oct 9, 2025

Copy link
Copy Markdown

Walkthrough

Adds transport_type to MCPServerPublic in backend schemas, propagates it through control_plane construction, updates frontend types, and enhances MCP servers page with sorting, a “Custom Only” filter, and a transport type badge. Rendering now sorts filtered results by selected criteria.

Changes

Cohort / File(s) Summary of edits
Backend schema: Add transport_type to public model
backend/aci/common/schemas/mcp_server.py
Added field transport_type: MCPServerTransportType to MCPServerPublic.
Backend control plane mapping: Populate transport_type
backend/aci/control_plane/schema_utils.py
Included transport_type when constructing MCPServerPublic from mcp_server.
Frontend types: Extend MCPServerPublic
frontend/src/features/mcp/types/mcp.types.ts
Added optional property transport_type: string | null to MCPServerPublic.
Frontend UI: Sorting, filtering, transport badge
frontend/src/app/(dashboard)/mcp-servers/page.tsx
Added sortBy and customOnly state, sorting by multiple fields, “Custom Only” filter, transport type badge, and layout tweaks; rendering now maps sortedServers.

Sequence Diagram(s)

sequenceDiagram
  participant UI as Frontend UI (MCP Servers page)
  participant API as API/Control Plane
  participant DB as Data Store

  UI->>API: GET /mcp-servers
  API->>DB: Query MCP servers
  DB-->>API: Server records (including transport_type)
  API-->>UI: MCPServerPublic[] { ..., transport_type }

  rect rgb(240, 248, 255)
    note over UI: Client-side processing
    UI->>UI: Apply search/category filters
    UI->>UI: Apply customOnly filter
    UI->>UI: Sort by name/type/last_synced/created_at/updated_at
    UI->>UI: Render grid with transport type badge
  end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related issues

Poem

A whisk of ears, a hop, a gleam—
New badges blink in sorting’s stream.
SSE or HTTP, I see!
I filter “Custom,” click with glee.
From burrowed code to UI light,
transport_type now shines just right. 🐇✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
Title Check ❓ Inconclusive The title references filters, sorting, and vague “clarity improvements,” which aligns loosely with the UI updates but fails to specify the key addition of the MCP transport type display and schema changes. It partially reflects the changeset but remains generic and does not clearly summarize the primary backend and frontend updates. As a result, it is unclear at a glance what the main feature or benefit is. Consider updating the title to explicitly mention the transport type addition along with the new filtering and sorting controls, for example: “Add MCP transport type display and custom filters/sort controls for servers.”
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@ChristophePRAT
ChristophePRAT temporarily deployed to CICD_FOR_FORKED_REPO October 9, 2025 15:39 — with GitHub Actions Inactive
@ChristophePRAT
ChristophePRAT temporarily deployed to CICD_FOR_FORKED_REPO October 9, 2025 15:39 — with GitHub Actions Inactive

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (2)
backend/aci/common/schemas/mcp_server.py (1)

141-141: Remove the obsolete TODO comment.

This TODO is now resolved by the addition of transport_type at Line 152 in this PR.

Apply this diff to remove the comment:

-    # TODO: is it necessary to expose transport_type?
frontend/src/app/(dashboard)/mcp-servers/page.tsx (1)

243-248: Explicitly handle both transport type values.

The current ternary assumes only two values but doesn't explicitly check for "streamable_http". While this works, a more explicit check improves maintainability and makes unexpected values visible.

Apply this diff for more robust handling:

-                    <Badge variant="outline" className="text-xs text-muted-foreground">
-                      {server.transport_type === "sse" ? "SSE" : "HTTP"}
-                    </Badge>
+                    <Badge variant="outline" className="text-xs text-muted-foreground">
+                      {server.transport_type === "sse" 
+                        ? "SSE" 
+                        : server.transport_type === "streamable_http" 
+                        ? "HTTP" 
+                        : server.transport_type?.toUpperCase()}
+                    </Badge>
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e24d1ba and 6f3b65d.

📒 Files selected for processing (4)
  • backend/aci/common/schemas/mcp_server.py (1 hunks)
  • backend/aci/control_plane/schema_utils.py (1 hunks)
  • frontend/src/app/(dashboard)/mcp-servers/page.tsx (6 hunks)
  • frontend/src/features/mcp/types/mcp.types.ts (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (2)
frontend/src/app/(dashboard)/mcp-servers/page.tsx (3)
frontend/src/components/ui/checkbox.tsx (1)
  • Checkbox (32-32)
frontend/src/components/ui/label.tsx (1)
  • Label (24-24)
frontend/src/components/ui/select.tsx (5)
  • Select (149-149)
  • SelectTrigger (152-152)
  • SelectValue (151-151)
  • SelectContent (153-153)
  • SelectItem (155-155)
backend/aci/common/schemas/mcp_server.py (1)
backend/aci/common/enums.py (1)
  • MCPServerTransportType (52-54)
🔇 Additional comments (11)
backend/aci/common/schemas/mcp_server.py (1)

152-152: LGTM!

The transport_type field addition correctly uses the MCPServerTransportType enum and integrates well with the existing schema structure.

backend/aci/control_plane/schema_utils.py (1)

45-45: LGTM!

The transport_type field is correctly sourced from mcp_server.transport_type and passed to the MCPServerPublic constructor, maintaining consistency with the schema definition.

frontend/src/features/mcp/types/mcp.types.ts (1)

49-49: LGTM!

The nullable transport_type field provides defensive typing that gracefully handles cases where the value might be absent, which is appropriate for UI resilience.

frontend/src/app/(dashboard)/mcp-servers/page.tsx (8)

7-8: LGTM!

The Checkbox and Label imports are correctly added to support the new "Custom Only" filter UI.


32-33: LGTM!

The new state variables for sorting and filtering are properly initialized with sensible defaults.


57-59: LGTM!

The explicit return statement in the servers memoization improves code clarity without changing functionality.


68-80: LGTM!

The filtering logic correctly implements the "Custom Only" filter by checking organization_id !== null, and the boolean expression properly handles both the enabled and disabled states of the filter.


82-110: LGTM!

The sorting implementation correctly handles all sort options with appropriate null handling and date comparisons. The descending order for date fields (most recent first) provides a good user experience.


151-196: LGTM!

The UI layout improvements provide a clean, responsive interface for the new filtering and sorting controls. The flex-based layout adapts well to different screen sizes.


221-221: LGTM!

Correctly updated to render sortedServers instead of filteredServers, ensuring the sorting logic is applied to the displayed results.


228-241: LGTM!

The refactored header layout with the logo and name on the same row improves visual hierarchy and card aesthetics.

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

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

No issues found across 4 files

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