
Next.js와 PostgreSQL을 사용하여 MCP 기반의 SaaS 디스커버리 엔진 구축하기
요약
Next.js, PostgreSQL, MCP를 활용하여 사람과 AI 에이전트 모두에게 정보를 제공하는 SaaS 디스커버리 엔진 구축 방법을 다룹니다. Prisma와 Zod를 사용하여 단일 진실 공급원(SSOT)을 설계하는 아키텍처 원칙을 강조합니다.
핵심 포인트
- MCP를 통해 AI 에이전트가 접근 가능한 AI-Ready 디렉토리 구축
- Prisma, Zod, JSON-LD를 활용한 데이터 정형화 및 단일 진실 공급원 확보
- UI 개발 전 정형화된 제품 엔티티(Canonical Entity) 설계의 중요성
먼저 정형화된 제품 엔티티(canonical product entity)를 설계한 다음, 이를 MCP를 통해 노출함으로써 AI 준비가 된 SaaS 디렉토리를 구축하세요. Prisma, Zod, JSON-LD를 사용하여 단일 진실 공급원(one source of truth)으로부터 사람, 검색 엔진, 그리고 AI 에이전트에게 정보를 제공합니다.
Next.js와 PostgreSQL을 사용하여 MCP 기반의 SaaS 디스커버리 엔진 구축하기
소프트웨어 디스커버리(discovery)는 더 이상 단순한 검색의 문제가 아닙니다. 오늘날 제품은 검색 엔진, 큐레이션된 디렉토리, AI 어시스턴트, 또는 후보 목록을 작성하는 자율 에이전트를 통해 발견될 수 있습니다. 여러분의 디렉토리는 이 모든 소비자에게 단일 진실 공급원(single source of truth)으로부터 정보를 제공해야 합니다.
Next.js, PostgreSQL, 그리고 Model Context Protocol (MCP)을 사용하여 사람, 검색 엔진, AI 에이전트에게 서비스를 제공하는 SaaS 디스커버리 엔진을 구축하는 방법을 소개합니다.
핵심 요약 (Key Takeaways)
- 먼저 정형화된 제품 엔티티(canonical product entity)를 설계한 다음, 이를 MCP를 통해 노출함으로써 AI 준비가 된 SaaS 디렉토리를 구축하세요.
- Prisma, Zod, JSON-LD를 사용하여 단일 진실 공급원(one source of truth)으로부터 사람, 검색 엔진, AI 에이전트에게 정보를 제공합니다.
아키텍처 원칙: 단일 진실 공급원 (One Source of Truth)

가장 중요한 설계 원칙은 다음과 같습니다: 제품에 대한 사실을 한 번만 저장한 다음, 동일한 정형 레코드(canonical record)로부터 모든 공개 표현을 생성하는 것입니다.
단일 진실 공급원이 없다면, 홈페이지에서는 제품을 "자동화 도구"라고 부르고, 디렉토리 목록에서는 "생산성 플랫폼"이라고 부르며, API 응답에서는 "개발자 도구"로 분류할 수도 있습니다. 사람은 때때로 이러한 불일치를 해결할 수 있지만, 기계는 훨씬 더 엄격합니다.
1. UI 이전에 제품 엔티티 설계하기
카드, 필터, 랜딩 페이지부터 시작하고 싶은 유혹이 들 것입니다. 하지만 대신 엔티티 모델(entity model)부터 시작하세요.
유용한 제품 프로필에는 이름과 설명 이상의 것이 필요합니다. 다음은 견고한 기반을 제공하는 Prisma 모델입니다:
enum ProductStatus {
DRAFT
PENDING_REVIEW
...
이 스키마는 카테고리(categories), 타겟 고객(audiences), 기능(features), FAQ, 미디어(media)를 의도적으로 분리합니다. 이 모든 것을 하나의 JSON 컬럼에 저장하면 초기 개발 속도는 빨라지겠지만, 나중에 필터링(filtering), 분석(analytics), 검증(validation) 및 추천(recommendations)을 수행하기가 더 어려워집니다.
목적에 따라 필드를 분리하세요:
- 식별 필드 (Identity fields) (변경이 거의 없음): 이름(name), 슬러그(slug), 웹사이트 URL(website URL), 회사(company), 기본 카테고리(primary category)
- 설명 필드 (Descriptive fields) (진화 가능): 태그라인(tagline), 상세 설명(long description), 기능(features), 스크린샷(screenshots), FAQ
- 운영 필드 (Operational fields) (플랫폼에서 관리): 중재 상태(moderation status), 노출 점수(visibility score), 인증 날짜(verification date)
이러한 구분은 권한(permissions) 관리에 도움이 됩니다. 창업자는 태그라인을 수정할 수 있지만, 노출 점수나 중재 상태를 직접 수정해서는 안 됩니다.
2. 엄격한 제출 파이프라인(Submission Pipeline) 구축하기
공개 디렉토리는 일관성 없는 데이터를 끌어들입니다. 제출 엔드포인트(submission endpoint)는 다음 네 단계를 수행해야 합니다:
- 파싱 및 검증 (Parse and validate) — Zod를 사용하여 입력 경계(input boundary)를 정의합니다.
- 정규화 (Normalize) — 트래킹 파라미터(tracking parameters)를 제거하고, URL을 소문자로 변환하며, 카테고리 이름을 정제합니다.
- 중복 탐지 (Detect duplicates) — 동일한 웹사이트 URL을 가진 기존 제품이 있는지 확인합니다.
- 검토 대기 상태로 저장 (Store as pending review) — 즉시 게시하지 않습니다.
const productSubmissionSchema = z.object({
name: z.string().trim().min(2).max(100),
websiteUrl: z.string().url().transform(cleanUrl),
...
3. AI 클라이언트를 위해 MCP를 통해 데이터 노출하기

이 지점에서 Model Context Protocol (MCP)이 등장합니다. AI 에이전트를 위한 별도의 API를 구축하는 대신, Claude Code 및 기타 AI 어시스턴트와 직접 연결되는 MCP 서버를 통해 제품 데이터를 노출하세요.
// mcp-server.ts
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
...
이 MCP 서버를 사용하면 Claude Code 사용자가 귀하의 디렉토리를 직접 쿼리할 수 있습니다:
claude code search_products query="project management" audience="startups" limit=5
4. 검색 엔진을 위한 JSON-LD 추가
각 제품 페이지에는 검색 엔진을 위한 구조화된 데이터 (Structured Data)가 포함되어야 합니다:
// app/products/[slug]/page.tsx
import { jsonLdScript } from "@/lib/json-ld";
...
지금 바로 시도해보세요: 다음 단계
- 먼저 Prisma 스키마 (Schema)를 정의하세요 — UI가 아닌 엔티티 모델 (Entity Model)부터 시작하세요.
- 제출 엔드포인트에 **Zod 검증 (Validation)을 추가하세요.
- 제품 데이터를 도구 (Tools) 및 리소스 (Resources)로 노출하는 **MCP 서버를 생성하세요.
- SEO를 위해 모든 제품 페이지에 **JSON-LD를 추가하세요.
claude mcp add명령어를 사용하여 **MCP 서버를 Claude Code에 연결하세요.
귀하의 SaaS 디렉토리는 하나의 정형화된 기록 (Canonical Record)으로부터 모든 소비자에게 서비스를 제공하는 제품 지식 시스템이 되어야 합니다. 데이터 모델부터 시작하면 나머지 모든 것은 자연스럽게 따라옵니다.
Source: dev.to
[20 Jul 업데이트 via devto_mcp]
최근의 생태계 분석[per devto_mcp]에 따르면, MCP 생태계는 2026년 5월 기준 npm과 GitHub에서 13,000개 이상의 서버로 폭발적으로 성장했으며, 월간 SDK 다운로드 수는 9,700만 건에 달합니다. 이는 6개월 전 수치의 3배에 달하는 규모입니다. 새로운 서버 등록 건수가 전년 대비(YoY) 400% 성장했다는 점은 위에서 설명한 것과 같은 검색 가능한 디렉토리(discoverable directories)를 구축하는 것이 얼마나 시급한지를 강조합니다. Anthropic의 공식 서버만 하더라도 파일 시스템(filesystem) 서버의 경우 월간 48,500건의 다운로드를 기록하고 있으며, 이는 잘 구조화된 SaaS 디스커버리 엔진(SaaS discovery engine)이 메울 수 있는 공급과 발견 가능성(findability) 사이의 격차를 극명하게 보여줍니다.
원문은 gentic.news에 처음 게시되었습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기