| app | ||
| cli | ||
| components | ||
| hooks | ||
| lib | ||
| proxy | ||
| public | ||
| supabase | ||
| .gitignore | ||
| components.json | ||
| eslint.config.mjs | ||
| next.config.ts | ||
| package-lock.json | ||
| package.json | ||
| postcss.config.mjs | ||
| README.md | ||
| tsconfig.json | ||
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: truefor 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
onClickhandlers 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
🔗 Links
- Repository: forgejo.tail018ac4.ts.net/joe/mcp-directory
- MCP Spec: modelcontextprotocol.io
- MCP Registry: registry.modelcontextprotocol.io
- Reference Servers: github.com/modelcontextprotocol/servers (active: Filesystem, Fetch, Git, Memory, Sequential Thinking, Time)
- Archived Servers: github.com/modelcontextprotocol/servers-archived (Brave Search, GitHub, GitLab, Google Drive, Google Maps, PostgreSQL, Puppeteer, Redis, Sentry, Slack, SQLite, EverArt, AWS KB Retrieval)
Built for the MCP community