Commit graph

76 commits

Author SHA1 Message Date
Dhravya
3487666481
feat(web): add MCP connector directory (#1461)
<!-- VORFLUX_AGENT_PR_BODY_BEGIN -->
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

- Lazy-load and validate the searchable, filterable, progressively rendered MCP catalog.
- Render same-origin proxied provider icons for 543 entries, with a reviewed domain allowlist and deterministic fallback marks for 111 unresolved or unbranded entries.
- Record OAuth discovery capability separately from end-to-end support; all directory setup actions remain suppressed until their authentication flow is verified.
- Add a reproducible OAuth metadata probe with HTTPS/private-network protections, stable URL keys, authorization-server scanning, and catalog fingerprint validation.
- Add Google Drive branding for the curated built-in connector.

## Testing

- **Passed:** Deterministic generation and catalog assertions.
  ```bash
  PATH="$HOME/.bun/bin:$PATH" python3 apps/web/scripts/generate-mcp-directory.py --output
  cmp apps/web/public/mcp-directory.json
  ```
  Verified 654 entries, 254 DCR discoveries, 27 preregistered OAuth discoveries, 373 unclassified entries, and zero directory setup actions.
- **Passed:** Stale OAuth metadata fingerprint is rejected by the generator.
- **Passed:** Touched-file Biome checks and `git diff --check`.
- **Passed:** Icon proxy returned 200 for an allowlisted domain and 400 for an unknown valid-looking domain.
- **Passed:** Authenticated desktop/mobile browser inspection and conservative capability labels.
- **Passed:** Public preview returned HTTP 200 and rendered the real app. Authentication cookies do not transfer to the public hostname, so the public screenshot shows login.
- **Partial:** Repository-wide TypeScript checks remain blocked by unrelated existing errors outside the touched MCP files.
- **Partial:** 111 entries intentionally retain deterministic fallback marks; endpoint-derived domains may not always be the canonical brand logo.
- **Blocked:** Google rejected the local HTTP OAuth callback, so live Google Drive consent, callback, persistence, tool discovery, disconnect, and reconnect were not completed.

Public preview: https://ar8ruchhbi65.preview.us1.vorflux.com/configure/tools

---
**Attached Images**

*[288.csv]*

*[mcp-directory-final.json]*

![mcp-directory-branding-desktop.png](https://api.us1.vorflux.com/assets/artifacts/c3VwZXJtZW1vcnk6Zjo4MDA0.3_UzR_OP9Jk228FYbrAPTXyqybRBlqwn5Uv4tksf_Y0.png)

![mcp-directory-branding-mobile.png](https://api.us1.vorflux.com/assets/artifacts/c3VwZXJtZW1vcnk6Zjo4MDA1.b5G6nsOBVm2s6DlEFWFiMFCcULAkV0MCCGZ8XVsA5js.png)

![mcp-directory-public-preview.png](https://api.us1.vorflux.com/assets/artifacts/c3VwZXJtZW1vcnk6Zjo4MDA2.ZrBAeBi62JX1xavAtaDLQ0fuixgBjN7x1NrqIxtdmKw.png)
<!-- VORFLUX_AGENT_PR_BODY_END -->

---
**Session Details**
- Session: [View Session](https://supermemory.us1.vorflux.com/agent-sessions/1cd0aab9-2a45-4818-aa13-f9bfe032ddba)
- Requested by: Dhravya Shah (dhravya@supermemory.com)
- Address comments on this PR. Add `(aside)` to your comment to have me ignore it.

<!-- CURSOR_SUMMARY -->
---

> [!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.json`** only after the user opens the directory (with validation, caching, and abort handling).
>
> The new **`McpDirectoryBrowser`** supports 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** excludes `mcp-directory.json` from the auth matcher so the asset can be fetched publicly.
>
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 8b59bae84a. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
2026-08-20 22:58:39 +00:00
Sepuri Sai Krishna
67b6585346
fix(web): block IPv6 literals in OG scraper SSRF guard (#1154) 2026-07-10 18:20:43 -07:00
Rin
f7e97e0233
fix(web): strengthen URL validation and redirect handling in OG scraper (#1059) 2026-06-17 20:28:24 +05:30
vimzh
2684990688
fix(onboarding): parse X URLs with www. and bare-domain prefixes (#994) 2026-06-01 12:39:52 +05:30
vimzh
fbefac75eb
fix(onboarding): fail fast when EXA_API_KEY is missing (#995) 2026-05-26 22:16:25 +05:30
Ishaan Gupta
55558f5562
fix: Implement the onboarding account lookup (#913) 2026-05-11 02:29:15 -07:00
MaheshtheDev
8f6c16de49 chore: improve the codebase with react doctor (#917) 2026-05-09 19:12:01 +00:00
MaheshtheDev
6834bc6876 feat: onboarding config, reset onboarding, xai agentic migration (#701)
- Created a new `useOrgOnboarding` hook that uses `org.metadata.isOnboarded` to track onboarding state
- Updated the home page to conditionally use either the old localStorage-based onboarding or the new DB-backed onboarding based on feature flag
- Added a "Restart Onboarding" option in the user dropdown menu
- Improved the onboarding chat sidebar with per-link loading indicators
- Enhanced the X/Twitter research API to better handle different URL formats
- Updated the integrations step to use the new onboarding completion method
- Added `updateOrgMetadata` function to the auth context for easier metadata updates
2026-01-25 01:04:15 +00:00
Dhravya Shah
e7ea26442a (probable fix) 500 error on og endpoint 2026-01-23 18:57:14 -07:00
Dhravya Shah
4ca0f593a5 fix: merge conflicts 2026-01-23 17:42:47 -07:00
Dhravya Shah
35004c474a extract metadata ourselves 2026-01-23 17:39:23 -07:00
MaheshtheDev
8c195cece6 feat: full screen note, space highlights, suggestions (#696)
Added quick note and highlights features to the new UI, improved OG scraping, and implemented Nova alpha access feature flag.
2026-01-23 22:17:44 +00:00
MaheshtheDev
1423bd7004 feat: mobile responsive, lint formats, toast, render issue fix (#688)
- Mobile responsive
- new toast design
- web document render issue fix
- posthog analytics
- ui improvements
2026-01-21 03:11:53 +00:00
MaheshtheDev
59c294b299 feat: deep-research on user profile and tiptap integration (#672)
deep-research on user profile

add novel integration

tiptap 3.x integration
2026-01-15 21:53:53 +00:00
Mahesh Sanikommu
641db19e35
chore: quick bugs squash across the elements and added few more changes (#671) 2026-01-13 17:53:28 -08:00
Mahesh Sanikommu
645f89310c
PR: nova alpha release (#670)
Co-authored-by: Dhravya Shah <dhravya@supermemory.com>
2026-01-13 00:54:56 -08:00
Mahesh Sanikommmu
39003aff23 New Version of Supermemory Consumer App 2025-08-16 18:50:10 -07:00
Dhravya Shah
47904011de Supermemory v2 Release 🚀 2025-01-20 17:50:45 -07:00
MaheshtheDev
1c76bdeefb fix: duplicate content saving data in extension 2024-09-19 13:42:09 -07:00
Dhravya Shah
4bdf40027f fix: telegram bot 2024-08-29 14:31:46 -07:00
Dhravya Shah
6a201de58d
Merge pull request #240 from supermemoryai/telegram-markdown-mode
chore: Update Telegram bot with Markdown Support
2024-08-22 15:58:43 -07:00
MaheshtheDev
893fe194b9 chore: Update Telegram bot with Markdown Support 2024-08-10 17:48:53 -07:00
Dhravya Shah
30d5fb4733 check for ok instead of fuckall 2024-08-09 22:26:26 -07:00
Dhravya Shah
be3e13b4bf merged latest changes with queue branch and ready for prod 2024-08-06 11:05:02 -07:00
Kush Thaker
e4fd7f5aac move limit to backend and thread service binding 2024-08-05 21:25:11 +05:30
Dhravya Shah
a327805a7d calculate how fucked we are 2024-08-03 18:31:55 -07:00
Dhravya Shah
e30e9f4e0b fix: stuff 2024-08-03 16:09:39 -07:00
Dhravya Shah
626ca898e4 handle errors properly 2024-08-03 12:36:57 -07:00
Dhravya Shah
5846c494f3 send a sliced version to the API 2024-08-02 09:44:31 -07:00
Kush Thaker
241276be58 db schema in packages 2024-07-31 11:37:54 +05:30
Dhravya Shah
3e9793436a fixed builds, added friend integration 2024-07-28 19:33:50 -07:00
Dhravya Shah
a3f551e557 merged 2024-07-28 10:58:22 -07:00
Dhravya Shah
78e35e395b lockfile 2024-07-28 09:45:15 -07:00
Dhravya Shah
650237195f
Merge pull request #163 from aryasaatvik/pnpm
pnpm
2024-07-26 12:02:20 -05:00
Saatvik Arya
dcf6b589da format 2024-07-25 20:12:35 -07:00
CodeTorso
a484aed11a
Merge branch 'main' into canvas 2024-07-26 04:08:09 +05:30
Dhravya Shah
c57719446a solve merge conflicts 2024-07-25 17:35:15 -05:00
Dhravya Shah
18dd5e4fd0 onboarding page changes and ratelimiting 2024-07-25 17:30:23 -05:00
Saatvik Arya
d936216070 revert some files 2024-07-25 13:13:58 -07:00
Saatvik Arya
0d422efdff disable telegram 2024-07-25 13:08:40 -07:00
Saatvik Arya
04e57ccf80 address ts issues 2024-07-25 13:08:40 -07:00
codetorso
c7b98a39b8 let's go boys!! canvas 2024-07-25 10:56:32 +05:30
Dhravya Shah
cf1eeb86c3 added ability to use pro mode, to do complex timeseries/location searches 2024-07-22 22:44:18 -05:00
Dhravya Shah
9f315bc21e api routes to make mobile real 2024-07-17 21:14:38 -05:00
Dhravya Shah
c45268d895 test 2024-07-17 20:39:27 -05:00
Dhravya
8652405fbd stuff 2024-07-16 23:51:22 -05:00
Dhravya
5b44dcb1d1 use tabs 2024-07-16 19:26:47 -05:00
Dhravya Shah
abc5d89061 return whole response 2024-07-09 14:06:49 -05:00
Dhravya
6ef746da54 revamped extention 2024-07-04 19:17:51 -05:00
Dhravya
2c6a96e96f spaces function 2024-07-01 20:12:56 -05:00