Skip to main content
Every page in your next-dev-portfolio automatically generates a machine-readable MCP (Model Context Protocol) manifest. These manifests describe your portfolio’s structure, content, and data contracts in a format that AI agents, assistants, and LLM-powered tools can understand and query — no extra configuration required.

What Are MCP Manifests?

MCP manifests are structured JSON documents that describe your pages in a way AI systems can parse and act on. Instead of an AI agent scraping your HTML or guessing what your portfolio contains, it can read the manifest directly and understand:
  • Which pages exist and what they contain
  • The section types that make up each page (hero, skills, timeline, etc.)
  • The JSON Schema contract that governs the shape of each page’s data
  • Metadata like titles and descriptions for every page
This makes your portfolio natively compatible with agent frameworks, AI coding assistants, and any tool that speaks the Model Context Protocol.

Manifest Endpoints

Your deployed site exposes four types of manifest endpoints, all served as static files from your CDN:

Root Manifest

The root manifest at /mcp-manifest.json is the entry point for any agent discovering your portfolio. It lists every page alongside its manifest link and schema link.

Per-Page Manifests

Each page has its own manifest at /mcp-manifests/{slug}.json. This document describes the section types present on that page, their data shapes, and links to the full JSON Schema contract.

Per-Page JSON Schemas

The JSON Schema for each page lives at /schemas/{slug}.schema.json. These are the same Zod schemas used during the build, converted to standard JSON Schema format. External tools — validators, agent frameworks, OpenAPI integrations — can consume them directly. Every page’s <head> includes two link tags that allow agents and browsers to auto-discover the manifests for that specific page:
Any agent that follows the MCP discovery convention will find these tags and be able to navigate directly to the manifest and schema for the current page, without needing to consult the root index first.

public/llms.txt

In addition to the JSON manifests, your site generates a plain-text file at /llms.txt. This file is specifically designed for LLM crawlers that index sites for use in AI assistants and search tools. llms.txt follows an emerging convention for machine-readable site summaries. It describes your site’s purpose, lists your pages and their descriptions, and provides links to the full manifest index. It is generated by scripts/generate-llms-txt.mjs as part of the prebuild step.
Some AI assistants and agent frameworks check for /llms.txt before attempting to crawl a site. Having it present signals that your content is AI-ready and reduces unnecessary scraping.

How Manifests Are Generated

You never need to write or edit manifest files by hand. They are generated automatically by the scripts/bake.mjs prebuild script, which runs before every build:
1

Prebuild runs automatically

When you run npm run build, the prebuild npm script executes first. This calls scripts/bake.mjs, which reads all your content from src/data/ and your section schemas.
2

Manifests and schemas are written to `public/`

The bake script writes the root manifest, all per-page manifests, and all JSON Schema files into the public/ directory. These become static assets served directly by your CDN.
3

`llms.txt` is generated

scripts/generate-llms-txt.mjs runs and writes public/llms.txt using the same content data.
4

Next.js build continues

With all static manifest files in place, the Next.js build proceeds normally. The <link> tags are injected into each page’s <head> at build time.
The generated files in public/ are committed to your repository. This means they are available immediately on the CDN without any server-side rendering overhead, and they are versioned alongside your content.

Keeping Manifests Up to Date

Because manifests are regenerated on every build, they always reflect the current state of your content. If you add a new page, rename a section, or update a description, the next build will produce updated manifests automatically.
If you manually edit files in public/mcp-manifests/, public/schemas/, or public/mcp-manifest.json, your changes will be overwritten the next time you run npm run build. Always update your source content in src/data/ instead.