feat(web): add MCP connector directory - #1461
Conversation
How to use the Graphite Merge QueueAdd the label Main to this PR to add it to the merge queue. You must have a Graphite account in order to use the merge queue. Sign up using this link. An organization admin has enabled the Graphite Merge Queue in this repository. Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue. This stack of pull requests is managed by Graphite. Learn more about stacking. |
|
Claude finished @Dhravya's task in 2m 13s —— View job Code Review Complete
Summary: Reviewed all 6 changed files for bugs, security issues, and logic errors. The PR adds an MCP connector directory browser with proper validation, cleanup patterns, and type safety. No issues found — clean code ready to ship. Score: 10/10 |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
supermemory-mcp | 62f2ba0 | Aug 13 2026, 01:45 AM |
There was a problem hiding this comment.
Overview: Adds an MCP connector directory browser that allows users to search and set up remote MCP servers from a curated list of 654 entries.
Issues found: None — this looks good to ship.
The code is well-structured with proper patterns:
- Input validation happens before async operations
finallyblock ensuresbusystate cleanup on all exit paths- Runtime type validation (
isDirectoryEntry) for JSON data - Dynamic import for the directory browser avoids loading 7KB+ of JSON on pages that don't use it
- Module-level cache avoids redundant fetches
- FNV-1a hash for stable slug generation prevents collisions between directory entries with the same name
Minor observations (not blocking):
- The hardcoded "654 servers" count in the button text will drift from actual data over time, but the dynamic count shows once loaded
Score: 10/10
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
supermemory-app | 62f2ba0 | Commit Preview URL Branch Preview URL |
Aug 13 2026, 01:47 AM |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 8b59bae. Configure here.
| )} | ||
|
|
||
| {customAdvancedOpen && ( | ||
| {customAuthMethod === "api-key" && customAdvancedOpen && ( |
There was a problem hiding this comment.
API key field stays collapsed
Medium Severity
Choosing API key still keeps the required key input behind the collapsed API key settings disclosure, and the field placeholder still says optional. Submit then fails with Enter an API key unless that secondary panel is opened first, so the new API-key auth path is easy to miss or appear broken.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 8b59bae. Configure here.
There was a problem hiding this comment.
Addressed in f6865d33. API-key mode now shows a required API key field immediately; only optional header configuration remains collapsed under Header settings.
|
|
||
| function customConnectionName(slug: string) { | ||
| return titleCase(slug.replace(/-dir-[a-z0-9]{6}$/, "").replace(/-/g, " ")) | ||
| } |
There was a problem hiding this comment.
Custom names stripped incorrectly
Low Severity
customConnectionName strips any slug ending in -dir- plus six alphanumeric characters, not only directory-created connections. A manually added custom MCP whose slug naturally ends that way, such as names that slugify to …-dir-server or …-dir-client, shows a truncated label in the card and disconnect confirm copy.
Additional Locations (2)
Reviewed by Cursor Bugbot for commit 8b59bae. Configure here.
There was a problem hiding this comment.
Addressed in f6865d33. Directory connections now use a reserved -sm-dir-<hash> marker, ordinary custom names are preserved, and new manual names using the reserved suffix are rejected.



Adds the full 654-entry MCP directory without bundling records into client JavaScript, with explicit capability status and connector branding that degrades safely when no authoritative logo is available.
Changes
Testing
PATH="$HOME/.bun/bin:$PATH" python3 apps/web/scripts/generate-mcp-directory.py --output cmp apps/web/public/mcp-directory.jsongit diff --check.Public preview: https://ar8ruchhbi65.preview.us1.vorflux.com/configure/tools
Attached Images
[288.csv]
[mcp-directory-final.json]
Session Details
(aside)to your comment to have me ignore it.Note
Medium Risk
Changes how users pick MCP URLs and auth (OAuth vs API key) before hitting existing connect endpoints; no new backend auth logic in this diff, but misconfiguration or trusting bad URLs remains a user-risk surface.
Overview
Adds a browseable MCP directory on the Company Brain connectors page: the catalog is not bundled in JS—it loads from static
/mcp-directory.jsononly after the user opens the directory (with validation, caching, and abort handling).The new
McpDirectoryBrowsersupports search, category/availability filters, and progressive “show more” rendering. Supported remote entries route into the existing custom MCP flow via Set up, which pre-fills name/URL and opens the connector dialog with context-specific copy.The custom connector dialog now uses an explicit OAuth vs API key toggle; API key fields only appear for API-key mode, and directory-backed connections get stable slugs (
-dir-suffix) so names display cleanly on connected cards. Middleware excludesmcp-directory.jsonfrom the auth matcher so the asset can be fetched publicly.Reviewed by Cursor Bugbot for commit 8b59bae. Bugbot is set up for automated code reviews on this repo. Configure here.