No description
Find a file
2026-03-22 10:48:06 -05:00
app fix: return API-format objects in static data fallback for MCP detail pages 2026-03-22 10:48:06 -05:00
cli Build: 56 MCPs, favorites, templates, team sharing, admin, pricing UI 2026-03-21 13:39:46 -05:00
components Build: 56 MCPs, favorites, templates, team sharing, admin, pricing UI 2026-03-21 13:39:46 -05:00
hooks feat: Supabase backend integration with API routes, schema, and static fallback 2026-03-21 11:49:35 -05:00
lib fix: update MCP server URLs — archived servers to servers-archived, community to MCP Registry, verify npm packages 2026-03-21 21:39:37 -05:00
proxy Build: 56 MCPs, favorites, templates, team sharing, admin, pricing UI 2026-03-21 13:39:46 -05:00
public Fix: move mcp-directory contents to repo root 2026-03-18 05:31:14 -05:00
supabase Build: 56 MCPs, favorites, templates, team sharing, admin, pricing UI 2026-03-21 13:39:46 -05:00
.gitignore feat(cli): add mcp-stack CLI for local stack creation and proxy dev 2026-03-21 12:33:44 -05:00
components.json Fix: move mcp-directory contents to repo root 2026-03-18 05:31:14 -05:00
eslint.config.mjs Fix: move mcp-directory contents to repo root 2026-03-18 05:31:14 -05:00
next.config.ts feat: Supabase backend integration with API routes, schema, and static fallback 2026-03-21 11:49:35 -05:00
package-lock.json feat: Supabase backend integration with API routes, schema, and static fallback 2026-03-21 11:49:35 -05:00
package.json feat(cli): add mcp-stack CLI for local stack creation and proxy dev 2026-03-21 12:33:44 -05:00
postcss.config.mjs Fix: move mcp-directory contents to repo root 2026-03-18 05:31:14 -05:00
README.md docs: update README with archived server notes, MCP Registry URLs, and contributing guide 2026-03-21 21:41:26 -05:00
tsconfig.json feat: MCP Stack Compiler — bundle servers into deployable stacks 2026-03-21 12:13:05 -05:00

MCP Directory + Stack Compiler

Discover MCP servers · Ship your MCP stack in one click

A searchable directory for Model Context Protocol servers, plus a stack compiler that bundles multiple servers into a single deployable manifest.

MCP Directory · MCP Stack Compiler · Quick Start · Architecture · Contributing


🌟 MCP Directory

Browse, search, and install MCP servers for Claude, Cursor, and other AI assistants.

  • 🔍 56 MCP servers organized by 8 categories
  • ⚡ One-click install commands for every server
  • 🏷️ Browse by category — Database, Web Search, Dev Tools, AI, and more
  • 📋 Submit your own MCP to the registry

Screenshots

Page Description
Home Hero search, featured MCPs, category cards
Browse Full listing with search, filter, and sort
MCP Detail Install command, config examples, GitHub links
Submit Submit new MCP servers for review
Stack Builder Pick servers, add custom tools, configure credentials
Stack Templates Start from pre-made stacks (Dev, Marketing, AI Research, etc.)
Stack Detail Deploy configs, share panel, team invites
Community Gallery Browse and use public stacks
Favorites Save and manage bookmarked MCPs
Pricing Free, Pro, and Team tiers for managed hosting
Admin Review and approve/reject community submissions

⚡ MCP Stack Compiler

"Ship your MCP stack in one click."

Bundle multiple MCP servers into a single manifest. Configure your API keys once. Get one URL that AI clients can use to access all your servers.

How it works

1. Browse or start from a template  →  Pick from 56 servers or use a pre-made stack
 2. Pick servers                    →  Filesystem, Notion, Linear, Playwright, or any of 56 servers
3. Add custom tools               →  Route any HTTP endpoint as custom.<name>
4. Configure creds                 →  Paste your API keys (stored server-side)
5. Compile stack                  →  Get a manifest URL + proxy endpoint
6. Deploy & use                  →  Paste in Claude Desktop, Cursor, or any MCP client

Features

Feature Description
56 MCP servers Full directory across 8 categories — active reference servers, MCP Registry integrations, and community-maintained servers
13 stack presets GitHub, Slack, Brave, Notion, Linear, Sentry, Postgres, SQLite, Filesystem, Puppeteer, AWS, OpenAI, and more
HTTP + stdio transport Mix HTTP MCP servers and child-process servers in one stack
Secure credential storage API keys stored server-side, never exposed to clients
Method prefix routing github.list_repos routes to GitHub, brave.search to Brave automatically
Manifest endpoint GET /api/stacks/{id}/manifest — paste into any MCP-compatible client
Proxy endpoint POST /api/stacks/{id}/mcp — routes JSON-RPC calls to the right server
Private by default Stacks are private unless you explicitly share them
Custom tools Route any HTTP endpoint as custom.<name> — bring your own API, internal tools, or third-party services
Deploy config generators Docker, Railway, Fly.io, Render configs + Claude Desktop/Cursor/Windsurf client configs
Community stack gallery Browse and use public stacks from the community
Stack templates 8 pre-made stacks: Dev Productivity, Marketing, AI Research, Cloud Ops, Browser Automation, Data Analyst, and more
Favorites/bookmarks Save MCP servers to a personal list with one click
Team stack sharing Invite teammates by email with viewer/editor roles
Submission review workflow Submit MCPs for review; admin approval pipeline
Managed proxy hosting SaaS proxy with Free/Pro/Team pricing tiers — zero server setup
Upgrade banners Contextual upgrade CTAs throughout the app

🚀 Quick Start

Prerequisites

  • Node.js 18+
  • npm 9+ (or pnpm)
  • Docker (for local Supabase — optional, site works with static fallback)

MCP Directory

git clone https://forgejo.tail018ac4.ts.net/joe/mcp-directory.git
cd mcp-directory
npm install
npm run dev

Open http://localhost:3000.

MCP Stack Compiler

# Terminal 1 — Next.js app
npm run dev

# Terminal 2 — MCP Proxy server
cd proxy && npm install && npm run dev

Visit http://localhost:3000/stacks/new to build your first stack.

With Supabase (full backend)

# 1. Link to a Supabase project
supabase link --project-ref YOUR_PROJECT_REF

# 2. Push schema
supabase db push

# 3. Seed data
supabase db seed

# 4. Add env vars
cp .env.local.example .env.local
# Fill in NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_ANON_KEY

Without Supabase, the site runs entirely on static data fallback.


🏗️ Architecture

Tech Stack

Frontend:      Next.js 16 + React 19 + TypeScript
Styling:       Tailwind CSS v4 + CSS Variables
Components:     shadcn/ui + Radix UI
Database:       Supabase (Postgres) — optional
Proxy:         Node.js + Express + child_process
Icons:         Lucide React
Fonts:         Geist
Theme:         next-themes (dark mode)

Project Structure

mcp-directory/
├── app/                            # Next.js App Router
│   ├── page.tsx                    # Homepage
│   ├── browse/                    # Browse MCPs
│   ├── favorites/                  # Bookmarked MCPs
│   ├── categories/                # All categories
│   ├── category/[slug]/           # Category detail
│   ├── mcp/[slug]/              # MCP detail
│   ├── submit/                    # Submit new MCP
│   ├── pricing/                   # Pricing tiers (Free/Pro/Team)
│   ├── admin/submissions/         # Admin submission review
│   ├── stacks/                    # Stack Compiler landing
│   ├── stacks/new/               # Stack builder + custom tools
│   ├── stacks/templates/          # Pre-made stack templates
│   ├── stacks/browse/            # Community stack gallery
│   ├── stacks/[id]/              # Stack detail + deploy panel
│   ├── stacks/[id]/settings/     # Stack settings + team sharing
│   └── api/                       # API routes
│       ├── mcps/                  # MCP CRUD
│       ├── categories/             # Category routes
│       ├── submissions/            # Submission CRUD + review
│       └── stacks/                 # Stack CRUD + manifest + publish + invite
├── components/
│   ├── ui/                       # shadcn/ui components
│   ├── mcp-card.tsx              # MCP card (with FavoriteButton)
│   ├── category-card.tsx
│   ├── copy-button.tsx
│   ├── navbar.tsx
│   ├── footer.tsx
│   ├── publish-toggle.tsx         # Publish/unpublish client component
│   ├── stack-deploy-panel.tsx     # Deploy config generators UI
│   ├── favorite-button.tsx        # Heart icon bookmark toggle
│   ├── upgrade-banner.tsx         # Dismissible Pro upgrade CTA
│   └── stack-share-panel.tsx      # Team invite panel
├── lib/
│   ├── data.ts                   # Static MCP data (56 servers)
│   ├── api.ts                    # API fetch client + types
│   ├── supabase.ts               # Supabase client
│   └── stack/
│       ├── presets.ts             # MCP server presets (13 servers)
│       ├── manifest.ts            # Stack manifest compiler + types
│       ├── deploy.ts              # Docker/Railway/Fly/Render config generators
│       └── templates.ts           # 8 pre-made stack templates
├── proxy/                         # MCP Proxy server (standalone)
│   ├── src/
│   │   ├── index.ts             # Express app + custom tool routing
│   │   └── server-pool.ts       # Stdio process manager
│   ├── types/
│   │   └── index.ts              # Shared types (CustomTool, StackManifest)
│   └── package.json
└── supabase/
    ├── migrations/
    │   ├── 001_schema.sql       # MCP + Category + Favorites + Submissions
    │   ├── 002_stacks.sql       # Stack tables
    │   └── 003_stack_sharing.sql # Team invites + owner_email
    └── seed.sql                  # Seed data

Data Flow

Browser Request
      ↓
Next.js App Router (ISR, 1h revalidate)
      ↓
API Routes (dynamic, server-side)
      ↓
Supabase (Postgres) ←→ Static fallback (lib/data.ts)

MCP Stack Proxy Flow

AI Client (Claude Desktop / Cursor)
      ↓ JSON-RPC POST /stacks/{id}/mcp
MCP Stack Proxy (Express)
      ↓
  If HTTP transport → forward to upstream MCP server
  If stdio transport → route to spawned child process
      ↓
AI Client receives unified response

📊 Data

MCP Servers (56)

Category Servers
Database PostgreSQL†, SQLite†, MongoDB, MySQL, Redis†, Supabase, Airtable, PlanetScale, Qdrant, Neon, Upstash Redis, EverSQL
Developer Tools GitHub†, GitLab†, Jira, Vercel, Sentry†, Linear, Datadog, Figma, Stripe, Confluence, Todoist, Asana, PagerDuty, Everhour
Communication Slack†, Discord, Gmail, Twilio, Resend, SendGrid, Slack Bot
Web Search Brave Search†, Google Maps†, Google Analytics, Tavily
AI & ML OpenAI, Claude (Anthropic), HuggingFace, Sequential Thinking, Memory, EverArt†
Browser Puppeteer†, Playwright, Firecrawl
Cloud AWS, Google Cloud, Azure, Cloudflare, DigitalOcean, S3, Cloudflare R2
File System Filesystem, Google Drive†

† Archived — these servers have been moved to servers-archived and are no longer actively maintained.

Stack Presets (13 + custom tools)

GitHub · Slack · Brave Search · OpenAI · Notion · Linear · Sentry · Postgres · SQLite · Filesystem · Puppeteer · AWS · Custom HTTP Endpoint


🛣️ Roadmap

Phase 1: Foundation ✅ Complete

  • Project setup with Next.js + TypeScript
  • shadcn/ui integration
  • Homepage, Browse, Category, MCP Detail pages
  • Submit form
  • Responsive design, Dark mode, SEO

Phase 2: Content ✅ Complete

  • 56 MCP entries with real data
  • Sorting and filtering
  • Copy-to-clipboard, Toast notifications

Phase 3: Backend + Stacks ✅ Complete

  • Supabase schema + seed data
  • API routes with static data fallback
  • MCP Stack Compiler (stack builder UI)
  • Manifest + proxy endpoint
  • 13 curated MCP presets
  • Express proxy server with stdio + HTTP routing
  • Submission review workflow ✅
  • Favorites/bookmarks ✅
  • User authentication (Clerk/Supabase Auth)

Phase 4: Scale & Monetize ⚠️ In Progress

  • Expand MCP directory to 56+ servers
  • Community-submitted MCPs with voting (review workflow)
  • Public stack gallery
  • Custom tools (route any HTTP endpoint)
  • Deploy config generators (Docker, Railway, Fly, Render)
  • Managed proxy hosting UI (Free/Pro/Team tiers)
  • Stack templates (Dev Productivity, Marketing, AI Research, Cloud Ops, etc.)
  • Team/stack sharing (invite by email)
  • Favorites/bookmarks
  • User authentication (Clerk/Supabase Auth)
  • Managed proxy hosting (backend/deployment)
  • Payment processing (Stripe)

🤝 Contributing

Add an MCP to the directory

Edit lib/data.ts and add your MCP:

  {
    id: "57",
    slug: "your-mcp-name",
    name: "Your MCP Name",
    description: "What it does.",
    category: "developer-tools",
    githubUrl: "https://registry.modelcontextprotocol.io/servers/your-server-name",
    installCommand: "npm install @your-package/server-name",
    author: "Your Name",
    stars: 0,
    featured: false,
    verified: false,
    createdAt: "2026-01-01",
    updatedAt: "2026-01-01",
  }

URL guidance:

  • For MCP Registry servers: https://registry.modelcontextprotocol.io/servers/<slug>
  • For community servers on GitHub: link directly to the repo
  • For official reference servers: https://github.com/modelcontextprotocol/servers/tree/main/src/<name>
  • Only set archived: true for servers in servers-archived

Add a Stack Preset

Edit lib/stack/presets.ts and add to the mcpPresets array:

{
  id: "my-mcp",
  name: "My MCP",
  description: "What it does.",
  icon: "Code",
  category: "developer-tools",
  transport: "http",
  httpUrl: "https://my-mcp.example.com",
  envVars: [
    {
      name: "API_KEY",
      description: "Your API key",
      required: true,
      placeholder: "sk-xxxx",
      secret: true,
    },
  ],
  tools: [
    { name: "my.do_thing", description: "Does a thing" },
  ],
},

Add a Stack Template

Edit lib/stack/templates.ts and add to the stackTemplates array:

{
  id: "my-template",
  name: "My Template",
  description: "What this stack is for.",
  icon: "Code",
  tags: ["productivity", "custom"],
  useCase: "Who this is for and what they can do with it.",
  servers: ["github", "postgres"],
},

Code Standards

  • TypeScript: Strict mode, explicit types where intent matters
  • Components: shadcn/ui patterns, Tailwind classes only
  • Server vs Client: No onClick handlers in server components
  • No new deps without flagging it first

🐛 Troubleshooting

"Event handlers cannot be passed to Client Component props"

Use <CopyButton> component or <a> tags in server components.

"Cannot find module '@/components/ui/..."

Run npx shadcn@latest add [component-name]

MCP Proxy not starting

Ensure port 3001 is available. Set PROXY_PORT=3002 if needed.

Build errors after schema change

Clear .next folder: rm -rf .next && npm run build



Built for the MCP community