mcp server discovery and categorization via curated directory
Implements a centralized web-based directory (mcp.so) that aggregates MCP servers submitted by the community, organizing them by category and making them searchable through a Next.js frontend backed by Supabase. The system accepts both GitHub URLs and raw JSON metadata, parses project information through a dedicated parseProject() service function, and stores normalized data in a relational schema with projects and categories tables for efficient querying and filtering.
Unique: Combines GitHub URL parsing with Jina AI for automatic content extraction and OpenAI-based summarization to enrich server metadata without requiring manual curation, storing normalized data in Supabase for efficient multi-dimensional filtering across categories, tags, and full-text search
vs alternatives: Provides a unified, categorized discovery experience specifically for MCP servers rather than generic GitHub search, with automatic metadata enrichment and community voting/rating potential
automated mcp server metadata extraction and enrichment
Processes submitted GitHub URLs or JSON payloads through a multi-stage extraction pipeline: parseProject() validates and normalizes input data, Jina AI extracts structured content from repository README and documentation, and OpenAI generates concise summaries and categorization. The enriched metadata is persisted to Supabase with fields for description, tags, installation instructions, and usage examples, enabling consistent presentation across the directory.
Unique: Chains Jina AI for repository content extraction with OpenAI for semantic summarization and automatic categorization, eliminating manual metadata entry while maintaining data quality through a parseProject() service layer that validates and normalizes heterogeneous input formats
vs alternatives: Reduces submission friction compared to manual directory entries while maintaining higher metadata quality than simple GitHub README parsing alone, leveraging LLM-based summarization to generate human-readable descriptions automatically
responsive web ui with next.js pages and react components
Implements the MCP Directory frontend using Next.js pages (Landing, Project Detail, Categories) and reusable React components (Search, Markdown Renderer, etc.), with responsive CSS for mobile, tablet, and desktop viewports. The architecture uses Next.js server-side rendering (SSR) or static generation (SSG) for performance and SEO, with client-side React components for interactive features like search and filtering. The UI layer communicates with backend API routes for data fetching and submission.
Unique: Uses Next.js for server-side rendering and static generation to optimize SEO and performance, with reusable React components for search, filtering, and markdown rendering, enabling fast initial page loads and excellent Core Web Vitals scores
vs alternatives: Next.js provides built-in SSR/SSG and API routes, reducing infrastructure complexity compared to separate frontend and backend; React components enable code reuse and maintainability compared to template-based approaches
database schema and relational data modeling with supabase
Implements data persistence using Supabase (PostgreSQL-based) with two primary tables: projects (storing MCP server metadata including name, description, repository URL, category, tags, installation instructions) and categories (defining the taxonomy for organizing servers). The schema includes proper indexing on frequently-queried fields (name, category, tags), foreign key relationships for referential integrity, and timestamp fields (created_at, updated_at) for tracking submission and modification times. The architecture supports full-text search through indexed text fields and enables efficient filtering and pagination.
Unique: Uses Supabase (managed PostgreSQL) for data persistence with native full-text search indexing and real-time capabilities, eliminating the need for separate search infrastructure while maintaining SQL query flexibility
vs alternatives: Supabase provides managed PostgreSQL with built-in authentication and real-time subscriptions, reducing operational overhead compared to self-hosted databases; trades some customization flexibility for managed service reliability
project submission and validation api with github integration
Exposes Next.js API routes that accept POST requests with either a GitHub repository URL or raw JSON project metadata, validates input through a Project model with TypeScript type checking, and persists submissions to Supabase after enrichment. The API layer implements saveProject() to handle database writes, with support for both creation and updates, and includes error handling for invalid URLs, missing required fields, and API failures during enrichment.
Unique: Implements dual-input submission (GitHub URL or JSON) with automatic enrichment pipeline triggered server-side, using TypeScript Project model for compile-time type safety and Supabase for transactional persistence with automatic timestamp and ID generation
vs alternatives: Supports both URL-based and metadata-based submissions in a single API, reducing friction for developers while maintaining data consistency through server-side validation and enrichment rather than client-side responsibility
full-text search and faceted filtering across mcp server directory
Implements search functionality through Next.js API endpoints that query the Supabase projects table using full-text search on server names, descriptions, and tags, combined with faceted filtering by category, tags, and other metadata fields. The frontend React components (Search component) provide UI for query input and filter selection, with results ranked by relevance and paginated for performance. The system maintains a denormalized schema with indexed text fields to enable fast queries across thousands of server entries.
Unique: Leverages Supabase's native full-text search capabilities with faceted filtering on pre-computed category and tag dimensions, providing fast keyword-based discovery without external search infrastructure like Elasticsearch
vs alternatives: Simpler to maintain than custom search implementations while providing adequate performance for community-scale directories; trades semantic understanding for operational simplicity and cost efficiency
dynamic sitemap generation for seo and search engine indexing
Implements sitemap management APIs that dynamically generate XML sitemaps listing all MCP server project pages, with automatic updates triggered when new servers are submitted or existing ones are modified. The system maintains a sitemap index that references individual sitemaps (split by project count for Google compliance), with proper lastmod timestamps and priority values. Sitemaps are served at standard locations (/sitemap.xml, /sitemap-index.xml) for search engine crawlers to discover and index all directory content.
Unique: Dynamically generates sitemaps on-demand from Supabase project data with automatic splitting for Google compliance, integrated into the submission pipeline to ensure new servers are indexed immediately without manual sitemap updates
vs alternatives: Eliminates manual sitemap maintenance while ensuring search engines always have current project listings; dynamic generation trades some caching efficiency for guaranteed freshness
category and tag taxonomy management with hierarchical organization
Maintains a categories table in Supabase that defines the taxonomy for organizing MCP servers (e.g., 'Data Access', 'API Integration', 'Development Tools'), with support for hierarchical relationships and metadata like descriptions and icons. The system enforces referential integrity between projects and categories, allowing servers to be tagged with one or more categories. The frontend Categories page displays all available categories with server counts, enabling users to browse by functional area rather than keyword search.
Unique: Implements category taxonomy as a first-class Supabase table with referential integrity, enabling both UI-driven browsing and programmatic filtering while maintaining data consistency through foreign key constraints
vs alternatives: Provides structured categorization superior to free-form tagging alone, with enforced consistency and server counts per category; simpler than hierarchical taxonomies but sufficient for most MCP server use cases
+4 more capabilities