Install
$ agentstack add mcp-docsector-docsector-reader ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ● Environment & secrets Used
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Docsector Reader 📖
A documentation rendering engine built with Vue 3, Quasar v2 and Vite with AI features.
Transform Markdown content into beautiful, navigable documentation sites — with i18n, syntax highlighting, dark/light mode, and anchor navigation.
🤖 AI-Friendly Features
- 📋 Copy Page — One-click button copies the current page as raw Markdown, ready to paste into LLMs
- 📄 View as Markdown — Open any page as plain text by appending
.mdto the URL, with locale support (?lang=) - 🧠 Markdown Negotiation — Requests with
Accept: text/markdownreceive markdown responses, while browsers keep HTML by default - 🔐 Web Bot Auth Directory — Optional signed JWKS directory at
/.well-known/http-message-signatures-directoryfor bot identity verification - 🤖 Open in ChatGPT / Claude — One-click links to open the current page directly in ChatGPT or Claude for Q&A
- 🤖 LLM Bot Detection — Automatically serves raw Markdown to known AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Cloudflare-AI-Search, GrokBot, and others)
- 🗺️ Sitemap Generation — Automatic
sitemap.xmlgeneration at build time with root-relative URLs by default and absolute URLs whensiteUrlis configured - 🤖 AI-Friendly robots.txt — Scaffold includes a
robots.txtexplicitly allowing 24 AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Cloudflare-AI-Search, GrokBot, etc.), and the build appendsSitemap: /sitemap.xmlat the end for crawler discovery - 🧭 Content Signals — Optional
Content-Signaldirective for declaring AI usage policy (ai-train,search,ai-input) inrobots.txt - 🧩 Agent Skills Discovery Index — Optional
/.well-known/agent-skills/index.jsonwith RFC v0.2.0 schema and SHA-256 digests - ✍️ Docsector Authoring Skill — Publishable
SKILL.mdthat teaches agents Docsector blocks, page patterns, MCP lookup, and WebMCP tools - 🪪 MCP Server Card — Optional
/.well-known/mcp/server-card.jsonfor MCP server discovery before connection - 🌐 WebMCP Browser Tools — Optional registration of in-page tools via
navigator.modelContextfor browser agents - 🤖 AI Assistant Panel — Optional documentation assistant drawer backed by Cloudflare AI Search through an internal same-origin endpoint
- 🗂️ API Catalog Well-Known — Auto-generates
/.well-known/api-catalogas Linkset JSON for machine-readable API discovery - 🔗 Homepage Link Headers — Auto-generated
Linkresponse headers for agent discovery (api-catalog,service-doc,service-desc,describedby) per RFC 8288 / RFC 9727 - 🔌 MCP Server — Auto-generated MCP server at
/mcpfor AI assistant integration (Claude Desktop, VS Code, etc.) - 📄 llms.txt / llms-full.txt — Auto-generated llms.txt index and full-content file for LLM discovery (requires
siteUrlin config)
✨ Features
- 📝 Markdown Rendering — Write docs in Markdown, rendered with syntax highlighting (Prism.js)
- 📋 Clickable Inline Code — Backtick-rendered inline code snippets are clickable across pages, subpages, and AI assistant answers
- 🔽 Nested Markdown Lists — Ordered and unordered lists preserve sublist hierarchy across multiple indentation levels
- ☑️ Markdown Task Lists — GitBook-style
- [ ]and- [x]items render as read-only checkboxes with nested subtasks - ⌨️ Keyboard Shortcut Keycaps — Author GitBook-style shortcuts with raw
...tags, rendered consistently across docs and AI assistant answers - 🖼️ Block Image Captions & Zoom — Standalone Markdown images render as zoomable figures, and raw
figure/picturemarkup supports separate alt text and captions - 🧱 Raw HTML in Markdown — Renders inline and block HTML tags inside markdown sections (including homepage remote README content)
- 🧩 Mermaid Diagrams — Native support for fenced
`mermaidblocks, with automatic dark/light theme switching - ➗ Math & KaTeX — Native support for inline
$...$and display$$...$$formulas rendered with KaTeX - 🚨 GitHub-Style Alerts — Native support for
[!NOTE],[!TIP],[!IMPORTANT],[!WARNING], and[!CAUTION] - 🌍 Internationalization (i18n) — Multi-language support with HJSON locale files and per-page translations
- 🌗 Dark/Light Mode — Automatic theme switching with Quasar Dark Plugin
- 🧰 Docsector CLI Skill Installer — Install the built-in authoring skill into older scaffolds with
docsector install-skill - 🔗 Anchor Navigation — Right-side source-ordered Table of Contents tree with stable scroll tracking, resize-safe drawer state, auto-scroll to the active section, and active-heading resolution based on the last heading that crossed the content threshold
- 🖱️ Active Menu Item UX — Active menu entries keep pointer cursor, clear URL hash without redundant navigation, and prevent accidental label text selection
- 🔎 Search — Menu search across all documentation content and tags
- 💬 Assistant Chat UX Enhancements — Long conversations keep focus on recent messages, load earlier history progressively, deduplicate repeated sources, preserve the assistant panel open state across reloads, include per-message copy actions and hover-revealed message times, and show a floating quick return to the bottom
- 📱 Responsive — Mobile-friendly with collapsible sidebar and drawers
- 🏷️ Clickable Header Branding — The configured
branding.logoandbranding.namerender as a home link in the global header, aligned left on desktop with a compact mobile treatment - 📚 Book Tabs with Per-State Colors — Define
*.book.jstabs with icons, order, andcolor.active/color.inactive - 📐 Book Layout Presets — Configure books with the default documentation chrome or a
fullwidthlayout that keeps the header and book tabs while removing the sidebar, subpage toolbar, and Table of Contents - 🦶 Global Branding Footer — Built-in
Powered by Docsectorfooter renders across documentation and system pages, while respecting each page's own scroll container for full-width layout integration without double scrollbars - 🔀 Internal Shortcut Pages — Route entries can redirect with
config.link.to, keeping localized titles while inheriting icon/status from the destination page - 📐 Responsive Subpage Toolbar — Subpage actions align with the content column on desktop and dock to the bottom on mobile
- 🆚 Subpage Templates — Subpages opt into a structured template via
vs: { template: 'vs' }; the managed/strictvstemplate owns the order and localized titles of its Features, Performance and Security sections (one##heading per section, missing sections dropped gracefully), auto-colorizes✓/✗/➕comparison marks, and highlights the column whose header matches the consumer'sbranding.name - ⬆️ Reading Progress Back to Top — Documentation subpages can show a floating back-to-top control with circular reading progress that stays above the mobile subpage toolbar
- 🏷️ Status Badges — Mark pages as
done,draft,empty, ornewwith visual indicators - ✏️ Edit on GitHub — Direct links to edit pages on your repository
- 🧭 Robust Edit Link Mapping — Normalizes route paths (including trailing slashes) into
page.subpage.locale.mdsource files for reliable GitHub edit URLs - 📅 Last Updated Date — Automatic per-page "last updated" date from git commit history, locale-formatted
- 📊 Translation Progress — Automatic translation percentage based on header coverage
- 🌐 Accurate Available Translations — Locale availability counter now uses actual localized page source presence, avoiding false negatives when metadata is equal
- 🏠 Markdown Home at Root — Homepage is rendered from
src/pages/Homepage.{lang}.mddirectly at/ - 🧱 Configurable Homepage Layout — Set
homePage.layouttodefaultorfullwidth; fullwidth keeps the header and book tabs while removing the sidebar, subpage toolbar, Table of Contents, and homepage footer - 🌍 Remote README as Home — Optional build-time remote README source for homepage with automatic local fallback and automatic primary-title handoff when the remote README already provides the project heading
- 🔗 GitHub-Compatible Heading Anchors — Markdown headings use GitHub-style slugs so standard README Table of Contents links work inside Docsector
- 📖 Expandable Markdown Sections — Use
...to collapse secondary content while keeping rich Markdown support inside the body - 1️⃣ Stepper Guides — Use `
with nested...` items to render native Quasar vertical steppers with rich Markdown and optional per-step icon overrides - 🕒 Timeline Updates — Use `
with nested...entries and optional` labels to publish GitBook-inspired changelog items with direct-link anchors, tag icons/colors, and rich Markdown bodies - 📎 File Attachment Blocks — Use
...in Markdown to render downloadable file cards with automatic local size detection and support for external URLs - 🌐 Embedded URL Blocks — Use
...to render curated embeds for YouTube, Vimeo, Spotify, and CodePen with a safe link-card fallback for unsupported URLs - 🧭 Quick Links Custom Element — Use `
and` in Markdown to render rich home navigation cards - 🗂️ Cards Custom Element — Use `
and` in Markdown to render linked content cards with optional cover images - 🧾 API JSON Reference Block — Use `` in Markdown to render Quasar-compatible API reference UIs from public JSON assets without inventing a new schema
- 🧠 Docsector Authoring Skill Docs — Documents the built-in
SKILL.mdand reference files so agents can learn Docsector blocks, page patterns, MCP lookup, and WebMCP tools from a public manual page - 🗃️ Multi-Version History — Archive older major versions under
src/pages/.old//and expose them at prefixed routes (e.g./v0.x/guide/...) while keeping the current docs at unprefixed routes - 🏷️ Version Selector Badges — Every version in the sidebar selector displays a color-coded badge: green for released, orange for draft, red for deprecated; fully customizable via
badge: { label, color, textColor } - 📂 Tabbed Code Blocks — Group consecutive fenced code blocks into tabs using the
groupandtabattributes in the fence info line - 🧪 Live Code Example Blocks — Use `` to render bundled Vue SFC examples with a live preview, GitHub source link, source toggle, and CodePen export for compatible examples
- 🍞 Breadcrumb Path Display — Show a file path breadcrumb above code blocks with the
breadcrumbattribute; renders as clickable path segments - 🎨 File Type Icons — Automatically resolves file extension or filename to a Material Icon Theme SVG icon, shown inline in tabs and beside the last breadcrumb segment
- ⚙️ Single Config File — Customize branding, links, and languages via
docsector.config.js
🔌 MCP Server (Model Context Protocol)
Docsector Reader can automatically generate an MCP server at /mcp during build, allowing AI assistants like Claude to search and read your documentation in real time.
Enable MCP
Add mcp to your docsector.config.js:
export default {
// ... other config ...
mcp: {
serverName: 'my-docs', // MCP server identifier
toolSuffix: 'my_docs' // Tool name suffix (e.g. search_my_docs)
},
siteUrl: 'https://my-docs.example.com' // Required for MCP URLs
}
What the build generates
When mcp is configured, docsector build generates:
| File | Purpose | |---|---| | dist/spa/mcp-pages.json | Page index (title, path, book) for search | | functions/mcp.js | Cloudflare Pages Function implementing MCP | | dist/spa/_routes.json | Routes /mcp to the function | | dist/spa/_headers | CORS headers for MCP endpoint |
Exposed tools
| Tool | Description | |---|---| | search_{suffix} | Search documentation by keyword, returns matching pages | | get_page_{suffix} | Get full Markdown content of a specific page |
Test locally
npx docsector build
npx wrangler pages dev dist/spa
# In another terminal:
curl http://localhost:8788/mcp
curl -X POST http://localhost:8788/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Configure in AI assistants
VS Code (mcp.json):
{
"servers": {
"my-docs": {
"type": "http",
"url": "https://my-docs.example.com/mcp"
}
}
}
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"my-docs": {
"type": "url",
"url": "https://my-docs.example.com/mcp"
}
}
}
🪪 MCP Server Card Discovery
Docsector Reader can publish an MCP Server Card at:
/.well-known/mcp/server-card.json
This supports pre-connection MCP discovery, exposing:
serverInfo(name,version)- MCP transport endpoint (defaults to
/mcp) capabilitiesfor tools/resources/prompts
When MCP is enabled, tool capabilities are derived from the generated server:
search_{toolSuffix}get_page_{toolSuffix}
Configure
export default {
// ...other config
mcp: {
serverName: 'my-docs',
toolSuffix: 'my_docs'
},
mcpServerCard: {
enabled: true,
path: '/.well-known/mcp/server-card.json',
transportEndpoint: '/mcp',
transportType: 'streamable-http',
protocolVersion: '2025-03-26',
capabilities: {
tools: { supported: true },
resources: { supported: false },
prompts: { supported: false }
}
}
}
Validate
npx docsector build
cat dist/spa/.well-known/mcp/server-card.json
cat dist/spa/_headers
External validation:
curl -X POST https://isitagentready.com/api/scan \
-H 'Content-Type: application/json' \
-d '{"url":"https://YOUR-SITE.com"}'
Check checks.discovery.mcpServerCard.status equals "pass".
🌐 WebMCP Browser Tools
Docsector Reader can register browser-side tools for agents when navigator.modelContext is available (secure context required).
Default tools:
docs.search_docs(bridges to MCPsearch_{toolSuffix})docs.get_page(bridges to MCPget_page_{toolSuffix})docs.navigate_to(SPA navigation)docs.copy_current_page(current page markdown URL/content)
WebMCP Configure
export default {
// ...other config
mcp: {
serverName: 'my-docs',
toolSuffix: 'my_docs'
},
webMcp: {
enabled: true,
apiMode: 'dual', // 'registerTool' | 'dual'
toolPrefix: 'docs',
bridgeEndpoint: '/mcp',
bridgeToMcp: true,
tools: {
searchDocs: true,
getPage: true,
navigateTo: true,
copyCurrentPage: true
}
}
}
Notes:
apiMode: 'registerTool'uses onlynavigator.modelContext.registerTool().apiMode: 'dual'also attemptsprovideContextfallback when available.- Registration happens on page load and is automatically cleaned up on unmount.
WebMCP Validate
curl -X POST https://isitagentready.com/api/scan \
-H 'Content-Type: application/json' \
-d '{"url":"https://YOUR-SITE.com"}'
Check checks.discovery.webMcp.status equals "pass".
🤖 AI Assistant Panel
Docsector Reader can add an opt-in assistant panel for documentation Q&A. Users open it from the global header while reading pages and subpages; it is not a dedicated documentation route. The drawer posts to a same-origin Cloudflare Pages Function, and that function calls Cloudflare AI Search so secrets, rate-limit strategy, provider errors, and future auth stay server-side.
The panel is disabled by default. When enabled, desktop pages get a dedicated right-side assistant rail that can sit beside the table of contents on wide screens. Mobile uses a fullscreen dialog. Conversations restore at the l
…
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: docsector
- Source: docsector/docsector-reader
- License: MIT
- Homepage: https://docsector.com
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.