Why Zen Docs¶
AI often generates the wrong markup when it lacks framework context.
The Problem¶
- Zensical, Docusaurus, VitePress, and Starlight all use different syntax for the same concepts.
- General-purpose AI models train on all four frameworks at once — output is a statistical blend, not your project's dialect.
- One wrong primitive (e.g.
!!! notein a Docusaurus project) renders as raw text. No error. Just broken docs.
The Solution¶
mcp-zen-of-docs detects your framework first, then emits the correct syntax for every primitive. The same workflow fits GitHub Copilot, Copilot CLI, Cursor, Claude Desktop, and other MCP-capable clients.
| Primitive | Zensical | Docusaurus | VitePress | Starlight |
|---|---|---|---|---|
| Note admonition | !!! note "Title" |
:::note |
info |
<Aside type="note"> |
| Content tab | === "Tab" |
<TabItem> |
code-group |
<TabItem> |
| Code block | ```python title=... |
```python title=... |
```python |
```python |
| Grid cards | <div class="grid cards"> |
Not native | Not native | Not native |
What You Get¶
| Framework | How it's detected | mcp-zen-of-docs generates |
|---|---|---|
| Zensical | zensical.toml / mkdocs.yml |
!!! note, === "Tab", grid cards, Mermaid |
| Docusaurus | docusaurus.config.js / .ts |
:::note, <TabItem>, MDX components |
| VitePress | .vitepress/config.* |
info, code-group, Vue containers |
| Starlight | astro.config.mjs / .ts |
<Aside>, <TabItem>, Astro MDX |
What's Next¶
→ Quickstart — install mcp-zen-of-docs and detect your framework in 2 minutes.