Skip to main content
Glama

Karakeep MCP server

by karakeep-app
AssetCard.tsx2.5 kB
"use client"; import Image from "next/image"; import Link from "next/link"; import { cn } from "@/lib/utils"; import { FileText } from "lucide-react"; import type { ZBookmarkTypeAsset } from "@karakeep/shared/types/bookmarks"; import { getAssetUrl } from "@karakeep/shared/utils/assetUtils"; import { getSourceUrl } from "@karakeep/shared/utils/bookmarkUtils"; import { BookmarkLayoutAdaptingCard } from "./BookmarkLayoutAdaptingCard"; import FooterLinkURL from "./FooterLinkURL"; function AssetImage({ bookmark, className, }: { bookmark: ZBookmarkTypeAsset; className?: string; }) { const bookmarkedAsset = bookmark.content; switch (bookmarkedAsset.assetType) { case "image": { return ( <Link href={`/dashboard/preview/${bookmark.id}`}> <Image alt="asset" src={getAssetUrl(bookmarkedAsset.assetId)} fill={true} className={className} /> </Link> ); } case "pdf": { const screenshotAssetId = bookmark.assets.find( (r) => r.assetType === "assetScreenshot", )?.id; if (!screenshotAssetId) { return ( <div className={cn(className, "flex items-center justify-center")} title="PDF screenshot not available. Run asset preprocessing job to generate one screenshot" > <FileText size={80} /> </div> ); } return ( <Link href={`/dashboard/preview/${bookmark.id}`}> <Image alt="asset" src={getAssetUrl(screenshotAssetId)} fill={true} className={className} /> </Link> ); } default: { const _exhaustiveCheck: never = bookmarkedAsset.assetType; return <span />; } } } export default function AssetCard({ bookmark: bookmarkedAsset, className, }: { bookmark: ZBookmarkTypeAsset; className?: string; }) { return ( <BookmarkLayoutAdaptingCard title={bookmarkedAsset.title ?? bookmarkedAsset.content.fileName} footer={ getSourceUrl(bookmarkedAsset) && ( <FooterLinkURL url={getSourceUrl(bookmarkedAsset)} /> ) } bookmark={bookmarkedAsset} className={className} wrapTags={true} image={(_layout, className) => ( <div className="relative size-full flex-1"> <AssetImage bookmark={bookmarkedAsset} className={className} /> </div> )} /> ); }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/karakeep-app/karakeep'

If you have feedback or need assistance with the MCP directory API, please join our Discord server