经 AI Skill Hub 精选评估,MCP工具 获评「推荐使用」。这款MCP工具在功能完整性、社区活跃度和易用性方面表现出色,AI 评分 7.5 分,适合有一定技术背景的用户使用。
使用Vue 3、Quasar v2和Vite构建的AI友好的文档渲染引擎,提供强大的文档呈现功能。
MCP工具 是一款遵循 MCP(Model Context Protocol)标准协议的 AI 工具扩展。通过 MCP 协议,它可以让 Claude、Cursor 等主流 AI 客户端直接访问和操作外部工具、数据源和服务,实现 AI 能力的无缝扩展。无论是文件操作、数据库查询还是 API 调用,都可以通过自然语言在 AI 对话中直接触发,极大提升生产效率。
使用Vue 3、Quasar v2和Vite构建的AI友好的文档渲染引擎,提供强大的文档呈现功能。
MCP工具 是一款遵循 MCP(Model Context Protocol)标准协议的 AI 工具扩展。通过 MCP 协议,它可以让 Claude、Cursor 等主流 AI 客户端直接访问和操作外部工具、数据源和服务,实现 AI 能力的无缝扩展。无论是文件操作、数据库查询还是 API 调用,都可以通过自然语言在 AI 对话中直接触发,极大提升生产效率。
# 方式一:通过 Claude Code CLI 一键安装
claude skill install https://github.com/docsector/docsector-reader
# 方式二:手动配置 claude_desktop_config.json
{
"mcpServers": {
"mcp--": {
"command": "npx",
"args": ["-y", "docsector-reader"]
}
}
}
# 配置文件位置
# macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
# Windows: %APPDATA%/Claude/claude_desktop_config.json
# 安装后在 Claude 对话中直接使用 # 示例: 用户: 请帮我用 MCP工具 执行以下任务... Claude: [自动调用 MCP工具 MCP 工具处理请求] # 查看可用工具列表 # 在 Claude 中输入:"列出所有可用的 MCP 工具"
// claude_desktop_config.json 配置示例
{
"mcpServers": {
"mcp__": {
"command": "npx",
"args": ["-y", "docsector-reader"],
"env": {
// "API_KEY": "your-api-key-here"
}
}
}
}
// 保存后重启 Claude Desktop 生效
<p align="center"> <img src="https://github.com/docsector.png" alt="docsector-logo" width="120px" height="120px"/> </p> <h1 align="center">Docsector Reader 📖</h1> <p align="center"> <i>A documentation rendering engine built with Vue 3, Quasar v2 and Vite with AI features.</i> </p> <p align="center"> <a href="https://www.npmjs.com/package/@docsector/docsector-reader"> <img alt="npm version" src="https://img.shields.io/npm/v/@docsector/docsector-reader?color=blue&label=npm"/> </a> <a href="https://github.com/docsector/docsector-reader/blob/main/LICENSE.md"> <img alt="License" src="https://img.shields.io/github/license/docsector/docsector-reader"/> </a> </p>
Transform Markdown content into beautiful, navigable documentation sites — with i18n, syntax highlighting, dark/light mode, and anchor navigation.
---
.md to the URL, with locale support (?lang=)Accept: text/markdown receive markdown responses, while browsers keep HTML by default/.well-known/http-message-signatures-directory for bot identity verificationsitemap.xml generation at build time with root-relative URLs by default and absolute URLs when siteUrl is configuredrobots.txt explicitly allowing 24 AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Cloudflare-AI-Search, GrokBot, etc.) and advertises Sitemap: /sitemap.xmlContent-Signal directive for declaring AI usage policy (ai-train, search, ai-input) in robots.txt/.well-known/agent-skills/index.json with RFC v0.2.0 schema and SHA-256 digestsSKILL.md that teaches agents Docsector blocks, page patterns, MCP lookup, and WebMCP tools/.well-known/mcp/server-card.json for MCP server discovery before connectionnavigator.modelContext for browser agentsLink response headers for agent discovery (api-catalog, service-doc, service-desc, describedby) per RFC 8288 / RFC 9727/mcp for AI assistant integration (Claude Desktop, VS Code, etc.)siteUrl in config)---
- [ ] and - [x] items render as read-only checkboxes with nested subtasksfigure / picture markup supports separate alt text and captions `mermaid blocks, with automatic dark/light theme switching$...$ and display $$...$$ formulas rendered with KaTeX[!NOTE], [!TIP], [!IMPORTANT], [!WARNING], and [!CAUTION]docsector install-skillbranding.logo and branding.name render as a home link in the global header, aligned left on desktop with a compact mobile treatment*.book.js tabs with icons, order, and color.active / color.inactivefullwidth layout that keeps the header and book tabs while removing the sidebar, subpage toolbar, and Table of ContentsPowered by Docsector footer renders across documentation and system pages, while respecting each page's own scroll container for full-width layout integration without double scrollbarsconfig.link.to, keeping localized titles while inheriting icon/status from the destination pagedone, draft, empty, or new with visual indicatorspage.subpage.locale.md source files for reliable GitHub edit URLssrc/pages/Homepage.{lang}.md directly at /homePage.layout to default or fullwidth; fullwidth keeps the header and book tabs while removing the sidebar, subpage toolbar, Table of Contents, and homepage footervirtual:docsector-homepage-override into i18n message building<d-block-expandable title="...">...</d-block-expandable> to collapse secondary content while keeping rich Markdown support inside the body<d-block-stepper> with nested <d-block-step title="...">...</d-block-step> items to render native Quasar vertical steppers with rich Markdown and optional per-step icon overrides<d-block-timeline> with nested <d-block-timeline-item date="...">...</d-block-timeline-item> entries and optional <d-block-timeline-tag> labels to publish GitBook-inspired changelog items with direct-link anchors, tag icons/colors, and rich Markdown bodies<d-block-file src="/files/...">...</d-block-file> in Markdown to render downloadable file cards with automatic local size detection and support for external URLs<d-block-embedded-url url="https://...">...</d-block-embedded-url> to render curated embeds for YouTube, Vimeo, Spotify, and CodePen with a safe link-card fallback for unsupported URLs<d-block-quick-links> and <d-block-quick-link> in Markdown to render rich home navigation cards<d-block-cards> and <d-block-card> in Markdown to render linked content cards with optional cover images<d-block-api src="..." /> in Markdown to render Quasar-compatible API reference UIs from public JSON assets without inventing a new schema/.well-known/api-catalog as Linkset JSON for machine-readable API discoverySKILL.md and reference files so agents can learn Docsector blocks, page patterns, MCP lookup, and WebMCP tools from a public manual pagesrc/pages/.old/<version>/ and expose them at prefixed routes (e.g. /v0.x/guide/...) while keeping the current docs at unprefixed routesbadge: { label, color, textColor }group and tab attributes in the fence info line<d-block-code-example src="..." /> to render bundled Vue SFC examples with a live preview, GitHub source link, source toggle, and CodePen export for compatible examplesbreadcrumb attribute; renders as clickable path segmentsdocsector.config.js---
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 |
Use Cloudflare AI Search as the first provider path:
/sitemap.xml and adds Sitemap: /sitemap.xml to robots.txt for crawler discovery./ai-search-sitemap.xml; otherwise the crawler can discover /sitemap.xml from robots.txt.AI_SEARCH_INSTANCE_NAME as a Cloudflare Pages environment variable or local .dev.vars entry.AI_SEARCH when available, or set encrypted Pages secrets for CLOUDFLARE_ACCOUNT_ID and CLOUDFLARE_API_TOKEN with AI Search run access.When enabled, docsector build can generate:
| File | Purpose |
|---|---|
functions/assistant.js | Cloudflare Pages Function for browser assistant requests |
dist/spa/sitemap.xml | Default crawler sitemap advertised from robots.txt |
dist/spa/robots.txt | Crawler policy with Sitemap: /sitemap.xml |
dist/spa/ai-search-sitemap.xml | Markdown-focused sitemap for AI Search crawling |
dist/spa/.well-known/ai-search/manifest.json | Source metadata for indexed documentation pages |
dist/spa/_routes.json | Routes the internal assistant endpoint to the Pages Function |
npm install @docsector/docsector-reader
npx docsector build
npx docsector serve # Preview production build
---
Consumer projects use the buildMessages helper from the engine:
import { buildMessages } from '@docsector/docsector-reader/i18n'
import homePageOverride from 'virtual:docsector-homepage-override'
const langModules = import.meta.glob('./languages/*.hjson', { eager: true })
const currentMdModules = import.meta.glob('../pages/**/*.md', { eager: true, query: '?raw', import: 'default' })
const oldMdModules = import.meta.glob('../pages/.old/**/*.md', { eager: true, query: '?raw', import: 'default' })
const mdModules = { ...currentMdModules, ...oldMdModules }
import boot from 'pages/boot'
import { books, pageEntries } from 'virtual:docsector-books'
export default buildMessages({ langModules, mdModules, books, pageEntries, boot, homePageOverride })
pageEntries is the preferred source because it preserves per-book and per-version registries and avoids path collisions when books or archived versions reuse the same route key.
Docsector now ships .env.example so teams can standardize Cloudflare variables.
Use the right place for each environment:
wrangler pages dev: use .dev.vars for Function runtime variables..env works when your runner actually loads it.Minimum variables when not using direct AI Search binding:
AI_SEARCH_INSTANCE_NAME=...
CLOUDFLARE_ACCOUNT_ID=...
CLOUDFLARE_API_TOKEN=...
If you bind AI Search as AI_SEARCH, the Assistant tries binding first and uses REST fallback when binding is not available.
---
> [!CAUTION]
> NOTICE OF BREAKING CHANGE.
>
> As of 7.0.0, multiple breaking changes were introduced into the library.
>
> Please review the migration guide before updating.
Supported alert types: NOTE, TIP, IMPORTANT, WARNING, CAUTION. Regular blockquotes without [!TYPE] continue to work normally.
<d-block-code-example src="manual/code-examples/basic-counter" title="Basic counter">
Optional caption rendered as inline Markdown.
</d-block-code-example>
Notes:
src/examples/**/*.vue; for example, src="manual/code-examples/basic-counter" resolves src/examples/manual/code-examples/BasicCounter.vue after kebab-case normalization.expanded="true" only when the source code should be visible by default.export default script. Named imports from vue and quasar are converted to browser globals.<script setup>, TypeScript scripts, or local imports still render in Docsector, but the CodePen action is disabled. Use codepen="false" to hide it intentionally.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"
}
}
}
---
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 }
}
}
}
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 only navigator.modelContext.registerTool().apiMode: 'dual' also attempts provideContext fallback when available.export default {
// ...other config
siteUrl: 'https://my-docs.example.com',
aiAssistant: {
enabled: true,
provider: 'aiSearch',
endpoint: '/assistant',
ui: {
title: 'Docs Assistant',
drawerWidth: 380,
wideBreakpoint: 1280,
showCitations: true,
suggestedPrompts: [
'How do I get started?',
'Summarize this page.',
'Where is the related API reference?'
]
},
aiSearch: {
binding: 'AI_SEARCH',
instanceNameEnv: 'AI_SEARCH_INSTANCE_NAME',
accountIdEnv: 'CLOUDFLARE_ACCOUNT_ID',
apiTokenEnv: 'CLOUDFLARE_API_TOKEN',
model: '@cf/meta/llama-3.3-70b-instruct-fp8-fast',
retrievalType: 'hybrid',
maxResults: 6,
matchThreshold: 0.4,
contextExpansion: 1,
queryRewrite: { enabled: true },
reranking: { enabled: false },
stream: true
}
}
}
export default {
// ...other config
linkHeaders: {
enabled: true,
apiCatalog: '/.well-known/api-catalog',
serviceDoc: '/',
serviceDesc: '/mcp',
describedBy: '/llms.txt'
},
apiCatalog: {
enabled: true,
path: '/.well-known/api-catalog',
items: [
'/mcp',
'https://api.example.com/openapi.json'
]
}
}
Set any target to null or false to disable that relation.
---
export default {
// ...other config
homePage: {
source: 'remote-readme',
layout: 'fullwidth',
remoteReadmeUrl: 'https://raw.githubusercontent.com/your-org/your-repo/main/README.md',
timeoutMs: 8000,
fallbackToLocal: true
}
}
export default {
// ...other config
webBotAuth: {
enabled: true,
directoryPath: '/.well-known/http-message-signatures-directory',
jwksEnv: 'WEB_BOT_AUTH_JWKS',
privateJwkEnv: 'WEB_BOT_AUTH_PRIVATE_JWK',
keyIdEnv: 'WEB_BOT_AUTH_KEY_ID',
keyId: null,
signatureMaxAge: 300,
signatureLabel: 'sig1'
}
}
Required runtime variables (Cloudflare Pages / Workers environment):
WEB_BOT_AUTH_JWKS: JSON string with a valid JWKS payload ({ "keys": [...] })WEB_BOT_AUTH_PRIVATE_JWK: JSON string for an Ed25519 private JWK used to sign directory responsesWEB_BOT_AUTH_KEY_ID: optional key id override (thumbprint or kid)export default {
// ...other config
contentSignals: {
enabled: true,
aiTrain: 'yes',
search: 'yes',
aiInput: 'yes',
userAgent: '*',
applyToAllBlocks: false
}
}
Notes:
aiTrain, search, and aiInput accept yes / no (or booleans).User-agent: *.Content-Signal lines.Sitemap: /sitemap.xml discoverable in robots.txt so crawlers can find the generated sitemap automatically.export default {
// ...other config
agentSkills: {
enabled: true,
path: '/.well-known/agent-skills/index.json',
schema: 'https://schemas.agentskills.io/discovery/0.2.0/schema.json',
skills: [
{
name: 'docsector-documentation-authoring',
type: 'skill-md',
description: 'Author Docsector documentation with Markdown, custom blocks, MCP, and WebMCP.',
url: '/.well-known/agent-skills/docsector-documentation-authoring/SKILL.md'
}
]
}
}
Notes:
name must be lowercase alphanumeric plus hyphens.type must be skill-md or archive.url should point to a locally published artifact when auto-digest is used.The consumer's Quasar config is a thin wrapper around the factory:
import { configure, createQuasarConfig } from '@docsector/docsector-reader/quasar-factory'
export default configure(() => {
return createQuasarConfig({
projectRoot: import.meta.dirname,
// Optional: consumer-specific boot files (resolved from src/boot/)
boot: ['qmediaplayer'],
// Optional: PWA manifest overrides
pwa: {
name: 'My Docs',
short_name: 'Docs',
theme_color: '#027be3'
},
// Optional: extra Vite plugins
vitePlugins: [],
// Optional: extend Vite config further
extendViteConf (viteConf) {
// custom aliases, plugins, etc.
}
})
})
export default {
branding: {
logo: '/images/logo/my-logo.png',
name: 'My Project',
version: 'v1.0.0',
versions: [
{ id: 'v1.0.0', current: true, released: false },
{ id: 'v0.9.0', released: true, status: 'deprecated' }
]
},
links: {
github: 'https://github.com/org/repo',
discussions: 'https://github.com/org/repo/discussions',
chat: 'https://discord.gg/invite',
email: 'contact@example.com',
changelog: 'https://github.com/org/repo/releases',
roadmap: 'https://github.com/org/repo/blob/main/ROADMAP.md',
sponsor: 'https://github.com/sponsors/user',
explore: [
{ label: '🌟 Related Project', url: 'https://github.com/org/related' }
]
},
github: {
editBaseUrl: 'https://github.com/org/repo/edit/main/src/pages'
},
linkHeaders: {
enabled: true,
apiCatalog: '/.well-known/api-catalog',
serviceDoc: '/',
serviceDesc: '/mcp',
describedBy: '/llms.txt'
},
apiCatalog: {
enabled: true,
path: '/.well-known/api-catalog',
items: []
},
markdownNegotiation: {
enabled: true,
agentFallback: true
},
aiAssistant: {
enabled: false,
provider: 'aiSearch',
endpoint: '/assistant',
ui: {
title: 'Docsector Assistant',
drawerWidth: 380,
wideBreakpoint: 1280,
showCitations: true
},
aiSearch: {
binding: 'AI_SEARCH',
instanceNameEnv: 'AI_SEARCH_INSTANCE_NAME',
accountIdEnv: 'CLOUDFLARE_ACCOUNT_ID',
apiTokenEnv: 'CLOUDFLARE_API_TOKEN',
retrievalType: 'hybrid',
maxResults: 6,
stream: true
}
},
mcpServerCard: {
enabled: true,
path: '/.well-known/mcp/server-card.json',
transportEndpoint: '/mcp',
transportType: 'streamable-http',
protocolVersion: '2025-03-26'
},
contentSignals: {
enabled: true,
aiTrain: 'yes',
search: 'yes',
aiInput: 'yes',
userAgent: '*',
applyToAllBlocks: false
},
agentSkills: {
enabled: true,
path: '/.well-known/agent-skills/index.json',
schema: 'https://schemas.agentskills.io/discovery/0.2.0/schema.json',
skills: [
{
name: 'docsector-documentation-authoring',
type: 'skill-md',
description: 'Author Docsector documentation with Markdown, custom blocks, MCP, and WebMCP.',
url: '/.well-known/agent-skills/docsector-documentation-authoring/SKILL.md'
}
]
},
languages: [
{ image: '/images/flags/united-states-of-america.png', label: 'English (US)', value: 'en-US' },
{ image: '/images/flags/brazil.png', label: 'Português (BR)', value: 'pt-BR' }
],
defaultLanguage: 'en-US'
}
The current version keeps the normal unprefixed routes such as /guide/getting-started/overview/. Archived major versions can be placed under src/pages/.old/<version>/ with the same book/index/Markdown layout, and are exposed with a URL prefix such as /v0.x/guide/getting-started/overview/.
Every version shows a release badge in the selector. Released versions default to released; versions with released: false or status: 'draft' default to draft; versions with status: 'deprecated' or deprecated: true default to deprecated in red. Use badge: { label, color, textColor } when you need custom badge copy or colors.
// Enable MCP server at /mcp
mcp: {
serverName: 'my-project', // Server identifier
toolSuffix: 'my_project' // Tool name suffix
}
---
docsector init <name> # Scaffold a new consumer project
docsector install-skill # Install the built-in authoring skill
docsector install-skill --force # Refresh an existing installed authoring skill
docsector dev # Start dev server (port 8181)
docsector dev --port 3000 # Custom port
docsector build # Build for production (dist/spa/)
docsector serve # Serve production build
docsector help # Show help
---
该项目使用了Vue 3和Quasar v2,构建了一个强大的文档呈现引擎,提供了AI友好的接口,但缺乏更多的文档和示例。
AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。
建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。
✅ MIT 协议 — 最宽松的开源协议之一,可自由商用、修改、分发,仅需保留版权声明。
AI Skill Hub 点评:MCP工具 的核心功能完整,质量良好。对于Claude Desktop / Claude Code 用户来说,这是一个值得纳入个人工具库的选择。建议先在非生产环境试用,再逐步推广。
| 原始名称 | docsector-reader |
| 原始描述 | 开源MCP工具:A documentation rendering engine built with Vue 3, Quasar v2 and Vite with AI fe。⭐21 · JavaScript |
| Topics | mcpaiai-friendlyai-toolsanchor-navigationbuilderjavascript |
| GitHub | https://github.com/docsector/docsector-reader |
| License | MIT |
| 语言 | JavaScript |
收录时间:2026-05-29 · 更新时间:2026-05-30 · License:MIT · AI Skill Hub 不对第三方内容的准确性作法律背书。
选择 Agent 类型,复制安装指令后粘贴到对应客户端