"use client"; import { useState } from "react"; import { X, Package, Star, ExternalLink, CheckCircle } from "lucide-react"; import { MCPProvider } from "@/lib/types/mcp"; import { MCPRatingStars } from "./MCPRatingStars"; interface MCPDetailModalProps { mcp: MCPProvider; isOpen: boolean; onClose: () => void; onInstall: () => void; } export function MCPDetailModal({ mcp, isOpen, onClose, onInstall, }: MCPDetailModalProps) { const [activeTab, setActiveTab] = useState< "about" | "capabilities" | "screenshots" | "configuration" >("about"); if (!isOpen) return null; const getCategoryColor = (category: string) => { switch (category) { case "map": return "bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200"; case "browser": return "bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200"; case "office": return "bg-purple-100 text-purple-800 dark:bg-purple-900 dark:text-purple-200"; case "search": return "bg-orange-100 text-orange-800 dark:bg-orange-900 dark:text-orange-200"; case "database": return "bg-indigo-100 text-indigo-800 dark:bg-indigo-900 dark:text-indigo-200"; case "finance": return "bg-emerald-100 text-emerald-800 dark:bg-emerald-900 dark:text-emerald-200"; case "code": return "bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200"; case "chart": return "bg-pink-100 text-pink-800 dark:bg-pink-900 dark:text-pink-200"; case "payment": return "bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200"; default: return "bg-gray-100 text-gray-800 dark:bg-gray-900 dark:text-gray-200"; } }; return (
by {mcp.author}
{mcp.description}
{configItem.mcpServers.command}{" "}
{configItem.mcpServers.arguments?.join(" ")}
{key}={String(value)}
No configuration available for this MCP
{tool.description}
{tool.input_schema && (
{param}
{typeof schema === "object" && schema
? (schema as any).type || "any"
: "any"}
{tool.input_schema.required?.includes(
param
) && (
*
)}
No screenshots available