diff --git a/app/app/mcp-catalog/apps/page.tsx b/app/app/mcp-catalog/apps/page.tsx
new file mode 100644
index 00000000..9cf811a2
--- /dev/null
+++ b/app/app/mcp-catalog/apps/page.tsx
@@ -0,0 +1,105 @@
+import { Metadata } from 'next';
+import { Suspense } from 'react';
+
+import Footer from '@components/Footer';
+import Header from '@components/Header';
+import McpAppsClient from '@mcpCatalog/components/McpAppsClient';
+import { getAppCategories, getAppPricingOptions, loadApps } from '@mcpCatalog/lib/apps';
+
+export const metadata: Metadata = {
+ title: 'MCP Apps Catalog | Browse MCP Client Applications',
+ description:
+ 'Explore the catalog of applications that support the Model Context Protocol (MCP) as clients. Find IDEs, desktop apps, automation tools, and frameworks that connect to MCP servers.',
+ keywords: ['MCP apps', 'MCP clients', 'Model Context Protocol apps', 'Claude Desktop', 'Cursor', 'MCP IDEs'],
+ openGraph: {
+ title: 'MCP Apps Catalog | Browse MCP Client Applications',
+ description:
+ 'Explore apps that consume MCP servers – IDEs, desktop clients, automation platforms, and AI frameworks with native MCP support.',
+ type: 'website',
+ },
+ twitter: {
+ card: 'summary_large_image',
+ title: 'MCP Apps Catalog | Browse MCP Client Applications',
+ description:
+ 'Explore apps that consume MCP servers – IDEs, desktop clients, automation platforms, and AI frameworks with native MCP support.',
+ },
+};
+
+// Force dynamic rendering
+export const dynamic = 'force-dynamic';
+
+export default function McpAppsPage() {
+ const apps = loadApps();
+ const categories = getAppCategories(apps);
+ const pricingOptions = getAppPricingOptions(apps);
+
+ return (
+
+
+
+
+
+
+
+ {/* Page Header */}
+
+
+
+ MCP Apps Catalog
+
+
+ Beta
+
+
+
+
+ {apps.length} applications that consume MCP servers — IDEs, desktop clients, automation platforms, and AI
+ frameworks with native{' '}
+
+ Model Context Protocol
+ {' '}
+ support.
+
+
+ {/* Breadcrumb navigation */}
+
+
+ MCP Catalog
+
+ /
+ MCP Apps
+
+
+ {/* Info banner */}
+
+
+ What is an MCP App? An MCP app is a client application that
+ connects to MCP servers to extend its AI capabilities. Unlike MCP servers (which provide tools and
+ context), MCP apps consume those servers — enabling your AI assistant, IDE, or automation
+ platform to access real-world data and actions.
+
+
+
+
+
Loading apps... }>
+
+
+
+
+
+
+
+ );
+}
diff --git a/app/app/mcp-catalog/components/McpAppCard.tsx b/app/app/mcp-catalog/components/McpAppCard.tsx
new file mode 100644
index 00000000..5b7ec945
--- /dev/null
+++ b/app/app/mcp-catalog/components/McpAppCard.tsx
@@ -0,0 +1,142 @@
+import Image from 'next/image';
+
+import { ArchestraMcpApp } from '@mcpCatalog/types';
+
+const PLATFORM_LABELS: Record = {
+ windows: 'Windows',
+ mac: 'macOS',
+ linux: 'Linux',
+ web: 'Web',
+};
+
+const PRICING_STYLES: Record = {
+ free: 'bg-green-100 text-green-800 border-green-200',
+ freemium: 'bg-blue-100 text-blue-800 border-blue-200',
+ paid: 'bg-orange-100 text-orange-800 border-orange-200',
+};
+
+const PRICING_LABELS: Record = {
+ free: 'Free',
+ freemium: 'Freemium',
+ paid: 'Paid',
+};
+
+type MpcFeatureKey = 'tools' | 'resources' | 'prompts' | 'sampling' | 'stdio_transport' | 'http_transport';
+
+const MCP_FEATURE_ENTRIES: { key: MpcFeatureKey; label: string }[] = [
+ { key: 'tools', label: 'Tools' },
+ { key: 'resources', label: 'Resources' },
+ { key: 'prompts', label: 'Prompts' },
+ { key: 'sampling', label: 'Sampling' },
+ { key: 'stdio_transport', label: 'STDIO' },
+ { key: 'http_transport', label: 'HTTP' },
+];
+
+function FeaturePill({ active, label }: { active: boolean; label: string }) {
+ const activeClass = 'bg-purple-50 text-purple-700 border-purple-200';
+ const inactiveClass = 'bg-gray-50 text-gray-400 border-gray-200 line-through';
+ return (
+
+ {label}
+
+ );
+}
+
+export default function McpAppCard({ app }: { app: ArchestraMcpApp }) {
+ const pricingClass = PRICING_STYLES[app.pricing] ?? PRICING_STYLES.free;
+
+ return (
+
+ {/* Header */}
+
+
+
+
+
+
+
{app.display_name}
+ {app.open_source && (
+
+ Open Source
+
+ )}
+
+
+ {app.category}
+
+ {PRICING_LABELS[app.pricing]}
+
+
+
+
+
+ {/* Description */}
+
{app.description}
+
+ {/* Supported Platforms */}
+
+ {app.supported_platforms.map((platform) => (
+
+ {PLATFORM_LABELS[platform] ?? platform}
+
+ ))}
+
+
+ {/* MCP Features */}
+
+
MCP Features
+
+ {MCP_FEATURE_ENTRIES.map(({ key, label }) => (
+
+ ))}
+
+
+
+ {/* Footer Links */}
+
+
+ );
+}
diff --git a/app/app/mcp-catalog/components/McpAppsClient.tsx b/app/app/mcp-catalog/components/McpAppsClient.tsx
new file mode 100644
index 00000000..36845215
--- /dev/null
+++ b/app/app/mcp-catalog/components/McpAppsClient.tsx
@@ -0,0 +1,117 @@
+'use client';
+
+import { useMemo, useState } from 'react';
+
+import McpAppCard from '@mcpCatalog/components/McpAppCard';
+import { ArchestraMcpApp } from '@mcpCatalog/types';
+
+interface McpAppsClientProps {
+ apps: ArchestraMcpApp[];
+ categories: string[];
+ pricingOptions: string[];
+}
+
+export default function McpAppsClient({ apps, categories, pricingOptions }: McpAppsClientProps) {
+ const [search, setSearch] = useState('');
+ const [selectedCategory, setSelectedCategory] = useState('All');
+ const [selectedPricing, setSelectedPricing] = useState('All');
+ const [openSourceOnly, setOpenSourceOnly] = useState(false);
+
+ const filtered = useMemo(() => {
+ return apps.filter((app) => {
+ const q = search.toLowerCase();
+ if (q && !app.display_name.toLowerCase().includes(q) && !app.description.toLowerCase().includes(q)) {
+ return false;
+ }
+ if (selectedCategory !== 'All' && app.category !== selectedCategory) {
+ return false;
+ }
+ if (selectedPricing !== 'All' && app.pricing !== selectedPricing) {
+ return false;
+ }
+ if (openSourceOnly && !app.open_source) {
+ return false;
+ }
+ return true;
+ });
+ }, [apps, search, selectedCategory, selectedPricing, openSourceOnly]);
+
+ const PRICING_LABELS: Record = {
+ free: 'Free',
+ freemium: 'Freemium',
+ paid: 'Paid',
+ };
+
+ return (
+
+ {/* Filters */}
+
+ {/* Search */}
+ setSearch(e.target.value)}
+ className="flex-1 min-w-[180px] px-3 py-2 text-sm border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-transparent"
+ />
+
+ {/* Category filter */}
+ setSelectedCategory(e.target.value)}
+ className="px-3 py-2 text-sm border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-purple-500 bg-white"
+ >
+ {categories.map((cat) => (
+
+ {cat === 'All' ? 'All Categories' : cat}
+
+ ))}
+
+
+ {/* Pricing filter */}
+ setSelectedPricing(e.target.value)}
+ className="px-3 py-2 text-sm border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-purple-500 bg-white"
+ >
+ {pricingOptions.map((p) => (
+
+ {p === 'All' ? 'All Pricing' : (PRICING_LABELS[p] ?? p)}
+
+ ))}
+
+
+ {/* Open Source toggle */}
+
+ setOpenSourceOnly(e.target.checked)}
+ className="w-4 h-4 rounded border-gray-300 text-purple-600 focus:ring-purple-500"
+ />
+ Open Source Only
+
+
+
+ {/* Result count */}
+
+ Showing {filtered.length} of{' '}
+ {apps.length} MCP apps
+
+
+ {/* Grid */}
+ {filtered.length > 0 ? (
+
+ {filtered.map((app) => (
+
+ ))}
+
+ ) : (
+
+
No MCP apps found
+
Try adjusting your filters or search query
+
+ )}
+
+ );
+}
diff --git a/app/app/mcp-catalog/data/mcp-apps.json b/app/app/mcp-catalog/data/mcp-apps.json
new file mode 100644
index 00000000..97c283fe
--- /dev/null
+++ b/app/app/mcp-catalog/data/mcp-apps.json
@@ -0,0 +1,266 @@
+[
+ {
+ "name": "claude-desktop",
+ "display_name": "Claude Desktop",
+ "description": "Anthropic's official desktop app for Claude. First-class MCP support with local server connections via STDIO and a built-in MCP server manager.",
+ "category": "Desktop Client",
+ "website_url": "https://claude.ai/download",
+ "logo_url": "/logo_claude.png",
+ "supported_platforms": ["windows", "mac"],
+ "mcp_features": {
+ "tools": true,
+ "resources": true,
+ "prompts": true,
+ "sampling": false,
+ "roots": true,
+ "stdio_transport": true,
+ "http_transport": false
+ },
+ "github_url": null,
+ "pricing": "freemium",
+ "open_source": false,
+ "mcp_docs_url": "https://modelcontextprotocol.io/quickstart/user"
+ },
+ {
+ "name": "cursor",
+ "display_name": "Cursor",
+ "description": "AI-first code editor with deep MCP integration. Connect MCP servers to give Cursor's AI context from your databases, APIs, and local files.",
+ "category": "IDE",
+ "website_url": "https://cursor.com",
+ "logo_url": "/logo_cursor.png",
+ "supported_platforms": ["windows", "mac", "linux"],
+ "mcp_features": {
+ "tools": true,
+ "resources": false,
+ "prompts": false,
+ "sampling": false,
+ "roots": false,
+ "stdio_transport": true,
+ "http_transport": true
+ },
+ "github_url": null,
+ "pricing": "freemium",
+ "open_source": false,
+ "mcp_docs_url": "https://docs.cursor.com/context/model-context-protocol"
+ },
+ {
+ "name": "windsurf",
+ "display_name": "Windsurf",
+ "description": "Codeium's agentic IDE featuring Cascade, an AI agent that uses MCP servers for extended context, web search, and external integrations.",
+ "category": "IDE",
+ "website_url": "https://windsurf.com",
+ "logo_url": "https://windsurf.com/favicon.ico",
+ "supported_platforms": ["windows", "mac", "linux"],
+ "mcp_features": {
+ "tools": true,
+ "resources": false,
+ "prompts": false,
+ "sampling": false,
+ "roots": false,
+ "stdio_transport": true,
+ "http_transport": true
+ },
+ "github_url": null,
+ "pricing": "freemium",
+ "open_source": false,
+ "mcp_docs_url": "https://docs.windsurf.com/windsurf/mcp"
+ },
+ {
+ "name": "vscode-github-copilot",
+ "display_name": "VS Code + GitHub Copilot",
+ "description": "Visual Studio Code with GitHub Copilot Chat supports MCP servers in agent mode, enabling tools and context from any MCP-compatible server.",
+ "category": "IDE",
+ "website_url": "https://code.visualstudio.com",
+ "logo_url": "https://code.visualstudio.com/favicon.ico",
+ "supported_platforms": ["windows", "mac", "linux"],
+ "mcp_features": {
+ "tools": true,
+ "resources": false,
+ "prompts": false,
+ "sampling": false,
+ "roots": false,
+ "stdio_transport": true,
+ "http_transport": true
+ },
+ "github_url": "https://github.com/microsoft/vscode",
+ "pricing": "freemium",
+ "open_source": true,
+ "mcp_docs_url": "https://code.visualstudio.com/docs/copilot/chat/mcp-servers"
+ },
+ {
+ "name": "zed",
+ "display_name": "Zed",
+ "description": "High-performance multiplayer code editor with native MCP support. Connect MCP servers directly to Zed's AI Assistant for context-aware coding.",
+ "category": "IDE",
+ "website_url": "https://zed.dev",
+ "logo_url": "https://zed.dev/favicon-32x32.png",
+ "supported_platforms": ["mac", "linux"],
+ "mcp_features": {
+ "tools": true,
+ "resources": true,
+ "prompts": true,
+ "sampling": false,
+ "roots": false,
+ "stdio_transport": true,
+ "http_transport": false
+ },
+ "github_url": "https://github.com/zed-industries/zed",
+ "pricing": "freemium",
+ "open_source": true,
+ "mcp_docs_url": "https://zed.dev/docs/assistant/model-context-protocol"
+ },
+ {
+ "name": "n8n",
+ "display_name": "n8n",
+ "description": "Workflow automation platform that acts as an MCP client, letting you integrate AI agents with hundreds of apps via MCP server connections in your automations.",
+ "category": "Automation",
+ "website_url": "https://n8n.io",
+ "logo_url": "/logo_n8n.png",
+ "supported_platforms": ["web", "linux"],
+ "mcp_features": {
+ "tools": true,
+ "resources": false,
+ "prompts": false,
+ "sampling": false,
+ "roots": false,
+ "stdio_transport": true,
+ "http_transport": true
+ },
+ "github_url": "https://github.com/n8n-io/n8n",
+ "pricing": "freemium",
+ "open_source": true,
+ "mcp_docs_url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.mcpclient/"
+ },
+ {
+ "name": "langchain",
+ "display_name": "LangChain",
+ "description": "Popular LLM application framework with MCP adapter support. Use any MCP server as a tool source in your LangChain agents and chains.",
+ "category": "Framework",
+ "website_url": "https://langchain.com",
+ "logo_url": "/logo_langchain.png",
+ "supported_platforms": ["linux", "mac", "windows"],
+ "mcp_features": {
+ "tools": true,
+ "resources": false,
+ "prompts": false,
+ "sampling": false,
+ "roots": false,
+ "stdio_transport": true,
+ "http_transport": true
+ },
+ "github_url": "https://github.com/langchain-ai/langchain",
+ "pricing": "free",
+ "open_source": true,
+ "mcp_docs_url": "https://python.langchain.com/docs/integrations/tools/mcp/"
+ },
+ {
+ "name": "continue-dev",
+ "display_name": "Continue",
+ "description": "Open-source AI code assistant for VS Code and JetBrains. Supports MCP servers as context providers and tool sources for its AI agent.",
+ "category": "IDE",
+ "website_url": "https://continue.dev",
+ "logo_url": "https://continue.dev/img/favicon.ico",
+ "supported_platforms": ["windows", "mac", "linux"],
+ "mcp_features": {
+ "tools": true,
+ "resources": true,
+ "prompts": true,
+ "sampling": false,
+ "roots": false,
+ "stdio_transport": true,
+ "http_transport": true
+ },
+ "github_url": "https://github.com/continuedev/continue",
+ "pricing": "free",
+ "open_source": true,
+ "mcp_docs_url": "https://docs.continue.dev/customize/context-providers"
+ },
+ {
+ "name": "cline",
+ "display_name": "Cline",
+ "description": "Autonomous AI coding agent VS Code extension with extensive MCP support. Can use any MCP server as a tool and even install MCP servers on your behalf.",
+ "category": "IDE",
+ "website_url": "https://cline.bot",
+ "logo_url": "https://cline.bot/favicon.ico",
+ "supported_platforms": ["windows", "mac", "linux"],
+ "mcp_features": {
+ "tools": true,
+ "resources": true,
+ "prompts": false,
+ "sampling": false,
+ "roots": false,
+ "stdio_transport": true,
+ "http_transport": true
+ },
+ "github_url": "https://github.com/cline/cline",
+ "pricing": "free",
+ "open_source": true,
+ "mcp_docs_url": "https://docs.cline.bot/mcp-servers/what-is-mcp"
+ },
+ {
+ "name": "librechat",
+ "display_name": "LibreChat",
+ "description": "Open-source ChatGPT-style web app that supports MCP servers as tool providers for its AI agents, enabling self-hosted MCP-powered chat.",
+ "category": "Web App",
+ "website_url": "https://librechat.ai",
+ "logo_url": "https://librechat.ai/favicon.ico",
+ "supported_platforms": ["web"],
+ "mcp_features": {
+ "tools": true,
+ "resources": false,
+ "prompts": false,
+ "sampling": false,
+ "roots": false,
+ "stdio_transport": true,
+ "http_transport": true
+ },
+ "github_url": "https://github.com/danny-avila/LibreChat",
+ "pricing": "free",
+ "open_source": true,
+ "mcp_docs_url": "https://www.librechat.ai/docs/configuration/librechat_yaml/object_structure/mcp_servers"
+ },
+ {
+ "name": "openai-agents-sdk",
+ "display_name": "OpenAI Agents SDK",
+ "description": "OpenAI's Python SDK for building agentic applications. Includes native MCP client support so agents can connect to any MCP server as a tool source.",
+ "category": "Framework",
+ "website_url": "https://openai.github.io/openai-agents-python/",
+ "logo_url": "/logo_openai.png",
+ "supported_platforms": ["linux", "mac", "windows"],
+ "mcp_features": {
+ "tools": true,
+ "resources": false,
+ "prompts": false,
+ "sampling": false,
+ "roots": false,
+ "stdio_transport": true,
+ "http_transport": true
+ },
+ "github_url": "https://github.com/openai/openai-agents-python",
+ "pricing": "free",
+ "open_source": true,
+ "mcp_docs_url": "https://openai.github.io/openai-agents-python/mcp/"
+ },
+ {
+ "name": "archestra",
+ "display_name": "Archestra Desktop",
+ "description": "Enterprise MCP platform for AI agents. Manages MCP server lifecycle, enforces security guardrails, and provides a curated catalog of 900+ MCP servers.",
+ "category": "Desktop Client",
+ "website_url": "https://archestra.ai",
+ "logo_url": "/logo_archestra.svg",
+ "supported_platforms": ["mac"],
+ "mcp_features": {
+ "tools": true,
+ "resources": true,
+ "prompts": true,
+ "sampling": false,
+ "roots": true,
+ "stdio_transport": true,
+ "http_transport": true
+ },
+ "github_url": null,
+ "pricing": "freemium",
+ "open_source": false,
+ "mcp_docs_url": "https://archestra.ai/docs"
+ }
+]
diff --git a/app/app/mcp-catalog/lib/apps.ts b/app/app/mcp-catalog/lib/apps.ts
new file mode 100644
index 00000000..64cba2e0
--- /dev/null
+++ b/app/app/mcp-catalog/lib/apps.ts
@@ -0,0 +1,66 @@
+import fs from 'fs';
+import path from 'path';
+
+import { ArchestraMcpApp } from '@mcpCatalog/types';
+
+const DATA_DIR = path.join(process.cwd(), './app/mcp-catalog/data');
+const MCP_APPS_JSON_FILE_PATH = path.join(DATA_DIR, 'mcp-apps.json');
+
+// Simple in-memory cache
+let appsCache: ArchestraMcpApp[] | null = null;
+
+/** Clear the apps cache (useful in development) */
+export function clearAppsCache(): void {
+ appsCache = null;
+}
+
+/** Load all MCP client apps from mcp-apps.json */
+export function loadApps(): ArchestraMcpApp[] {
+ if (appsCache) {
+ return appsCache;
+ }
+
+ try {
+ const content = fs.readFileSync(MCP_APPS_JSON_FILE_PATH, 'utf-8');
+ const apps = JSON.parse(content) as ArchestraMcpApp[];
+
+ // Sort: open-source first, then alphabetically by display name
+ appsCache = apps.sort((a, b) => {
+ if (a.open_source !== b.open_source) {
+ return a.open_source ? -1 : 1;
+ }
+ return a.display_name.localeCompare(b.display_name);
+ });
+
+ return appsCache;
+ } catch (error) {
+ console.error('Failed to load mcp-apps.json:', error);
+ return [];
+ }
+}
+
+/** Get unique categories from apps, sorted by count */
+export function getAppCategories(apps: ArchestraMcpApp[]): string[] {
+ const counts = new Map();
+
+ for (const app of apps) {
+ counts.set(app.category, (counts.get(app.category) ?? 0) + 1);
+ }
+
+ const sorted = Array.from(counts.entries())
+ .sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]))
+ .map(([cat]) => cat);
+
+ return ['All', ...sorted];
+}
+
+/** Get unique pricing options present in apps */
+export function getAppPricingOptions(apps: ArchestraMcpApp[]): string[] {
+ const seen = new Set();
+ for (const app of apps) {
+ seen.add(app.pricing);
+ }
+ const order = ['free', 'freemium', 'paid'];
+ const sorted = order.filter((p) => seen.has(p));
+ return ['All', ...sorted];
+}
diff --git a/app/app/mcp-catalog/schemas.ts b/app/app/mcp-catalog/schemas.ts
index dff56da0..e5abc95a 100644
--- a/app/app/mcp-catalog/schemas.ts
+++ b/app/app/mcp-catalog/schemas.ts
@@ -233,3 +233,91 @@ export const ArchestraMcpServerManifestSchema = BaseManifestSchema.extend({
export const ArchestraMcpServerManifestWithScoreBreakdownSchema = ArchestraMcpServerManifestSchema.extend({
score_breakdown: ArchestraScoreBreakdownSchema,
}).openapi('ArchestraMcpServerManifestWithScoreBreakdown');
+
+// ─── MCP App (Client Application) Schemas ────────────────────────────────────
+
+export const McpAppCategorySchema = z.enum([
+ 'IDE',
+ 'Desktop Client',
+ 'Automation',
+ 'Framework',
+ 'CLI',
+ 'Web App',
+ 'Other',
+]);
+
+export const McpAppPricingSchema = z.enum(['free', 'paid', 'freemium']);
+
+export const McpAppPlatformSchema = z.enum(['windows', 'mac', 'linux', 'web']);
+
+export const ArchestraMcpAppManifestSchema = z
+ .object({
+ /**
+ * Machine-readable identifier (slug)
+ */
+ name: z.string(),
+
+ /**
+ * Human-friendly display name
+ */
+ display_name: z.string(),
+
+ /**
+ * Short description of what the app does
+ */
+ description: z.string(),
+
+ /**
+ * App category (IDE, Desktop Client, Automation, etc.)
+ */
+ category: McpAppCategorySchema,
+
+ /**
+ * Primary website / homepage URL
+ */
+ website_url: z.string().url(),
+
+ /**
+ * Relative path to logo in /public, or an https:// URL
+ */
+ logo_url: z.string(),
+
+ /**
+ * Platforms the app runs on
+ */
+ supported_platforms: z.array(McpAppPlatformSchema),
+
+ /**
+ * MCP protocol features the app supports as a CLIENT
+ */
+ mcp_features: z.object({
+ tools: z.boolean(),
+ resources: z.boolean(),
+ prompts: z.boolean(),
+ sampling: z.boolean(),
+ roots: z.boolean(),
+ stdio_transport: z.boolean(),
+ http_transport: z.boolean(),
+ }),
+
+ /**
+ * GitHub repository URL (null for closed-source apps)
+ */
+ github_url: z.string().url().nullable(),
+
+ /**
+ * Pricing model
+ */
+ pricing: McpAppPricingSchema,
+
+ /**
+ * Whether the app is open source
+ */
+ open_source: z.boolean(),
+
+ /**
+ * Documentation URL for MCP integration
+ */
+ mcp_docs_url: z.string().url().nullable(),
+ })
+ .openapi('ArchestraMcpAppManifest');
diff --git a/app/app/mcp-catalog/types.ts b/app/app/mcp-catalog/types.ts
index 017a5302..d230fd9b 100644
--- a/app/app/mcp-catalog/types.ts
+++ b/app/app/mcp-catalog/types.ts
@@ -1,16 +1,26 @@
import type { z } from 'zod';
import type {
+ ArchestraMcpAppManifestSchema,
ArchestraMcpServerGitHubRepoInfoSchema,
ArchestraMcpServerManifestSchema,
ArchestraScoreBreakdownSchema,
MCPDependencySchema,
+ McpAppCategorySchema,
+ McpAppPlatformSchema,
+ McpAppPricingSchema,
McpServerCategorySchema,
} from '@mcpCatalog/schemas';
-// Infer types from Zod schemas
+// ─── MCP Server types ─────────────────────────────────────────────────────────
export type McpServerCategory = z.infer;
export type ArchestraScoreBreakdown = z.infer;
export type ArchestraMcpServerGitHubRepoInfo = z.infer;
export type ArchestraMcpServerManifest = z.infer;
export type MCPDependency = z.infer;
+
+// ─── MCP App (Client Application) types ──────────────────────────────────────
+export type McpAppCategory = z.infer;
+export type McpAppPlatform = z.infer;
+export type McpAppPricing = z.infer;
+export type ArchestraMcpApp = z.infer;
diff --git a/app/components/Header.tsx b/app/components/Header.tsx
index eefba33d..d4b995a4 100644
--- a/app/components/Header.tsx
+++ b/app/components/Header.tsx
@@ -50,6 +50,13 @@ export default function Header() {
MCP Catalog
+
+ MCP Apps
+
+
About Us
@@ -117,6 +124,14 @@ export default function Header() {
MCP Catalog
+ setIsMobileMenuOpen(false)}
+ >
+ MCP Apps
+
+