MCP-Server
Aktiviere mcp, um bei jedem Build eine vollständige, unabgeschnittene site/mcp-index.json (sowie site/mcp-manifest.json und eine mcp-nav.json pro Baum) zu schreiben, damit bxSites Cloud deine veröffentlichte Website über einen öffentlichen, schreibgeschützten MCP-Server für KI-Agenten bereitstellen kann - unabhängig von search/searchProvider.
Auf dieser Seite
MCP-Server
Schalte mcp: true in bxsites.yaml ein, und jeder build schreibt drei
Dateien neben deinen gerenderten Seiten - eine vollständige,
maschinenlesbare Kopie des Inhalts, der Navigation und der Baumstruktur
deiner Website, die bxSites Cloud liest, um
einen öffentlichen, schreibgeschützten
MCP-Server für deine veröffentlichte
Website bereitzustellen - dieselbe Idee wie
GitBooks „MCP servers for published docs".
Nach der Veröffentlichung können KI-Agenten und -Assistenten (Claude,
ChatGPT und jeder andere MCP-fähige Client) den Inhalt deiner Website
direkt durchsuchen, browsen und abrufen, statt gerendertes HTML zu
scrapen:
site/mcp-index.json- ein vollständiger Eintrag pro Seite, pro Baumsite/mcp-nav.json- die eigene Navigationsstruktur dieses Baums, pro Baumsite/mcp-manifest.json- ein websiteweiter Index aller Bäume (Hauptseite, Versionen, Sprachen) und wo die eigenen Dateien jedes Baums von oben zu finden sind
BxSites selbst erzeugt ausschließlich die auf dieser Seite beschriebenen Dateien - sie tatsächlich als MCP-Server über das Netzwerk auszuliefern, ist Aufgabe von bxSites Cloud, nicht etwas, das dieses Modul selbst übernimmt.
Das Erzeugen von mcp-index.json selbst ist kostenlos und funktioniert
allein mit bxSites build, ganz ohne Cloud-Konto. Es tatsächlich als
laufenden MCP-Server für eine veröffentlichte Website bereitzustellen,
ist eine Funktion von bxSites Cloud, die nur in den kostenpflichtigen
Plänen enthalten ist - nicht im kostenlosen Plan. Aktuelle Details zu
den Plänen findest du unter
bxsites.io/cloud.
Aktivieren
mcp: true
{ "mcp": true }
mcp = true
false (Standard) ĂĽberspringt den gesamten Schritt - es werden weder
mcp-index.json, mcp-nav.json noch mcp-manifest.json geschrieben,
und build verursacht ĂĽber die reine PrĂĽfung des Flags hinaus keine
zusätzlichen Kosten.
Unabhängig von search
mcp hat nichts mit search/searchProvider zu tun - die
beiden sind voneinander unabhängige Schalter:
mcp-index.jsonwird unabhängig davon erzeugt, obsearchtrueoderfalseist, und unabhängig vonsearchProvider.provider("local","algolia","pagefind"oder ein eigener).- Das Aktivieren von
mcpändert nie etwas an der eigenen, besucherseitigen Suchbox deiner Website, und das Deaktivieren vonsearchdeaktiviert niemalsmcp-index.json.
Deshalb kann mcp-index.json nicht einfach search-index.json
wiederverwenden: Diese Datei wird nur fĂĽr den "local"-Such-Provider
gebaut (eine Algolia- oder Pagefind-gestĂĽtzte Website erzeugt gar keine
search-index.json, da beide ihren eigenen Index anderswo fĂĽhren), und
ihr body-Feld ist absichtlich abgeschnitten - search-index.json wird
an den Browser jedes Besuchers fĂĽr die Suchbox auf der Seite
ausgeliefert, weshalb es wichtig ist, sie klein zu halten. Keine dieser
Einschränkungen gilt für mcp-index.json: Sie wird serverseitig von
bxSites Cloud abgerufen, nicht an Besucher ausgeliefert, und ein
abgeschnittener Textkörper riskiert, dass ein KI-Agent eine unvollständige
oder falsche Antwort gibt.
Das Format von mcp-index.json
Ein Eintrag pro nicht versteckter Seite (dieselbe Konvention „versteckte
Seiten werden ausgeschlossen", die auch search-index.json/die
Navigation verwenden), sowohl für reguläre Doku-Seiten als auch für
Blog-Beiträge:
[
{
"title": "Getting Started",
"url": "getting-started/index.html",
"tags": ["guides"],
"headings": ["Getting Started", "Installation", "Next steps"],
"body": "Getting Started Installation Run bxSites new to scaffold a project... Next steps ...",
"type": "page",
"categories": [],
"updatedAt": "2026-08-18T10:15:00.000Z"
},
{
"title": "Announcing bxSites 2.0",
"url": "blog/announcing-bxsites-2/index.html",
"tags": ["release"],
"headings": ["Announcing bxSites 2.0"],
"body": "Announcing bxSites 2.0 Today we're shipping...",
"type": "post",
"categories": ["Releases"],
"updatedAt": "2026-08-15"
}
]
| Feld | Beschreibung |
|---|---|
title | Der Titel der Seite (Frontmatter title, wie bei search-index.json) |
url | Der URL-Pfad der Seite, relativ zur Website-Wurzel |
tags | Das Frontmatter-Array tags der Seite |
headings | Der reine Text jeder Ăśberschrift h1-h6 auf der Seite, in Dokumentreihenfolge |
body | Der vollständige reine Textinhalt der Seite, HTML-Tags entfernt - nie abgeschnitten |
type | "page" für eine reguläre Doku-Seite, "post" für einen Blog-Beitrag |
categories | Das eigene Frontmatter-Array categories eines Beitrags; bei einer Doku-Seite immer [] (Doku-Seiten haben keine Kategorien) |
updatedAt | Das eigene Frontmatter-date eines Beitrags; bei einer Doku-Seite deren eigenes Frontmatter-date, sofern gesetzt, sonst der Zeitpunkt der letzten Änderung ihrer Quelldatei als ISO-8601-Zeitpunkt. "", wenn keines von beidem verfügbar ist. |
Abgesehen von type/categories/updatedAt ist dies dieselbe
Eintragsform wie bei search-index.json, mit einem Unterschied: dort
wird body auf 400 Zeichen mit abschlieĂźender Ellipse gekĂĽrzt; hier ist
es die vollständige Seite.
Das Format von mcp-manifest.json
Einmal pro Website-Build geschrieben (nicht einmal pro Baum), listet
site/mcp-manifest.json jeden Baum auf, der eine eigene
mcp-index.json/mcp-nav.json erhalten hat, damit der MCP-Server von
bxSites Cloud versions- und sprachbewusste Tools anbieten kann, ohne die
eigenen Verzeichniskonventionen von bx-sites erraten zu mĂĽssen:
[
{ "path": "", "label": "1.0.x", "version": "1.0.x", "locale": "en", "default": true },
{ "path": "next", "label": "Next", "version": null, "locale": "en", "default": false },
{ "path": "versions/0.9", "label": "0.9", "version": "0.9", "locale": "en", "default": false },
{ "path": "es", "label": "Español", "version": "1.0.x", "locale": "es", "default": false }
]
| Feld | Beschreibung |
|---|---|
path | Der eigene, wurzelrelative Pfad dieses Baums - "" fĂĽr den Hauptbaum an der Website-Wurzel, sonst "next"/"versions/<name>"/"<localeCode>"/"versions/<name>/<localeCode>". Verbinde ihn mit /mcp-index.json (oder /mcp-nav.json), um die eigene Datei dieses Baums zu erhalten, z. B. "versions/0.9/mcp-index.json" - und fĂĽr die Wurzel selbst einfach "mcp-index.json" (dort ist path gleich ""). |
label | Eine menschenlesbare Bezeichnung fĂĽr diesen Baum - die eigene Bezeichnung des Versionsschalters (der Name von versions.default, der eigene Name einer einfachen Version oder "Latest"/"Next"), kombiniert mit der eigenen Bezeichnung der Sprache fĂĽr einen Sprach-Unterbaum |
version | Der Name aus docs/versions/<name>/, den dieser Baum rendert, oder null, wenn es sich um keine benannte Version handelt (der unversionierte Hauptbaum oder /next/) |
locale | Der eigene Sprachcode dieses Baums - i18n.defaultLocale.code fĂĽr einen Baum ohne Sprach-Suffix, sonst der eigene Code dieser Sprache |
default | true fĂĽr den einen Baum, der an der Website-Wurzel gerendert wird - denjenigen, auf dem ein Besucher/KI-Agent ohne Angabe von Version oder Sprache landet |
Das Format von mcp-nav.json
Neben der eigenen mcp-index.json jedes Baums geschrieben (Website-
Wurzel, /next/, jeder /versions/<name>/-Baum, jeder Sprach-Unterbaum)
ist mcp-nav.json die eigene Navigation dieses Baums - genau dieselbe
verschachtelte { title, url, order, icon, children }-Struktur, aus der
das Theme selbst die Seitenleiste rendert -, damit der MCP-Server von
bxSites Cloud ein get_nav/Inhaltsverzeichnis-Tool anbieten kann, ohne
eine zweite, eigene Navigationsform zu erfinden:
[
{
"title": "Getting Started",
"url": "getting-started/index.html",
"order": 1,
"icon": "phosphor-duotone:rocket-launch",
"children": []
},
{
"title": "Guides",
"url": "",
"order": 2,
"icon": "",
"children": [
{ "title": "Search", "url": "guides/search/index.html", "order": 1, "icon": "", "children": [] }
]
}
]
Ein Ordner-Gruppenknoten ohne eigene index.md (wie "Guides" oben)
hat eine leere url - er ist keine Seite, sondern nur eine Ăśberschrift
fĂĽr seine children.
Websites mit mehreren Versionen und Sprachen
Genau wie search-index.json werden mcp-index.json/mcp-nav.json
einmal pro gerendertem Baum geschrieben - die Hauptseite, /next/ (wenn
versions.default gesetzt ist), jeder /versions/<name>/-Baum und
jeder Sprach-Unterbaum -, sodass jeder veröffentlichte Baum sein eigenes
Dateipaar erhält, das nur die eigenen Seiten und die eigene Navigation
dieses Baums abdeckt. mcp-manifest.json hingegen wird einmal pro Build
geschrieben, nur an der Website-Wurzel, und listet jeden dieser Bäume auf.