#以下是来自Codex的设计方案
mcp-server-implementation-plan.md
BookStack MCP Server 实施方案
基于现有 BookStack 结构(Beego 应用,文档内容在 document_store.go/md_document_store,搜索逻辑在 document_search_result.go、elasticsearch.go),为 Agent 提供类似 Context7 的信息获取能力。
方案概览
项目
说明
目标
提供 MCP Server,让 Agent 可检索书籍/文档、获取内容片段,并遵守书籍私有/权限规则
推荐架构
独立 MCP Sidecar(与 BookStack 同库/同配置),最小侵入、易于部署与回滚
备选架构
内置到 BookStack 进程里(同 HTTP 服务或独立端口),开发更省但耦合更深
MCP 能力设计
Resources(推荐)
Resource URI
说明
bookstack://books
书籍列表(支持分页/分类/私有过滤)
bookstack://books/{book_id}
书籍元信息
bookstack://books/{book_id}/docs
文档目录树/扁平列表
bookstack://docs/{doc_id}
文档全文(markdown/text/html 可选)
bookstack://docs/{doc_id}#section={heading}
按标题段落切分后的内容
bookstack://recent
最近更新文档
Tools(推荐)
Tool
参数
说明
search_docs
query, book_id?, limit?, member_token?
全文检索并返回片段 + doc_id
get_doc
doc_id, format=markdown|text|html
按需拉取完整内容
list_books
category?, include_private?, member_token?
书籍列表
list_docs
book_id, tree=true|false
文档列表/目录
get_book_outline
book_id
树状目录
Prompts(可选)
Prompt
说明
summarize_doc(doc_id)
生成摘要(配合 Agent 侧使用)
检索与内容生成
类别
方案
默认检索
复用 document_search_result.go 的 SQL LIKE 搜索(易落地)
可选增强
接入现有 ES(elasticsearch.go),有则用 ES,否则降级 SQL
内容来源
优先 DocumentStore.Content 或 DocumentStore.Markdown,避免仅用 HTML
切分策略
按 Markdown 标题切分(或固定字数切分),产出 section_id 便于引用
权限与安全
类别
方案
身份
新增 MCP Token(配置项或数据库表);或复用已有成员系统(member_id + token)
授权
遵循 books.privately_owned 和 relationship 角色校验
隔离
只读访问;限制 IP 白名单/速率;支持只公开内容模式
实施步骤(里程碑)
阶段
目标
M0 基线
确定传输方式(stdio/HTTP SSE)、部署形态(sidecar/内置)、鉴权方案
M1 MVP
MCP Server 骨架 + list_books/list_docs/get_doc/search_docs(SQL 检索)
M2 权限
接入角色校验、私有书籍访问控制、审计日志
M3 体验
加入 Markdown 分段/引用、缓存、ES 可选增强
M4 文档
配置说明、Agent 侧接入示例、运维与监控
配置建议
# MCP Server 配置
mcp.enabled : true
mcp.bind : " 0.0.0.0:9090"
mcp.auth_token : " your-secure-token"
mcp.allow_private : false
# Elasticsearch(可选)
ELASTICSEARCH_ON : true
ELASTICSEARCH_HOST : " http://localhost:9200"
风险与规避
风险
规避措施
隐私泄露
严格按书籍权限过滤(relationship + 私有书籍 token)
性能
搜索与全文读取限流/分页;热点缓存(书籍目录、最近更新)
内容质量
优先 Markdown/Content,必要时 HTML→Text 转换
待确认事项
Important
在开始实施前,请确认以下决策点:
部署形态 :采用 Sidecar MCP 还是内置到 BookStack 进程?
鉴权方式 :独立 MCP Token 还是复用成员登录/Token?
检索增强 :是否接入 ES 做全文检索增强?
下一步
如果你认可此方案,我可以进一步:
#以下是来自Codex的设计方案
mcp-server-implementation-plan.md
BookStack MCP Server 实施方案
方案概览
MCP 能力设计
Resources(推荐)
bookstack://booksbookstack://books/{book_id}bookstack://books/{book_id}/docsbookstack://docs/{doc_id}bookstack://docs/{doc_id}#section={heading}bookstack://recentTools(推荐)
search_docsquery,book_id?,limit?,member_token?get_docdoc_id,format=markdown|text|htmllist_bookscategory?,include_private?,member_token?list_docsbook_id,tree=true|falseget_book_outlinebook_idPrompts(可选)
summarize_doc(doc_id)检索与内容生成
document_search_result.go的 SQL LIKE 搜索(易落地)elasticsearch.go),有则用 ES,否则降级 SQLDocumentStore.Content或DocumentStore.Markdown,避免仅用 HTMLsection_id便于引用权限与安全
member_id+ token)books.privately_owned和relationship角色校验实施步骤(里程碑)
list_books/list_docs/get_doc/search_docs(SQL 检索)配置建议
风险与规避
relationship+ 私有书籍 token)待确认事项
Important
在开始实施前,请确认以下决策点:
下一步
如果你认可此方案,我可以进一步: