知识库集成服务

BookStack MCP Server是一个提供58种工具的知识库集成服务,支持OAuth 2.0认证,允许Claude.ai直接访问BookStack知识库内容。

  • by Jacob-Tate
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 Jacob-Tate/bookstack-mcp

使用说明

BookStack MCP服务器

一 MCP(模型上下文协议) 允许Claude.ai直接访问您的 书堆 知识库。

特性

  • 58工具 涵盖页面、章节、书籍、书架、搜索、附件、评论、权限、回收站、角色、用户、系统信息和审核日志
  • OAuth 2.0 与Claude.ai的MCP集成兼容的身份验证
  • 单用户 设计-您的BookStack API令牌是通过环境变量配置的,从不存储在MCP令牌中
  • 无状态HTTP 运输与 StreamableHTTPServerTransport

可用工具

组 工具
页面 list-pages, create-page, get-page, update-page, delete-page, export-page-markdown, export-page-plaintext
章节 list-chapters, create-chapter, get-chapter, update-chapter, delete-chapter, export-chapter-markdown, export-chapter-plaintext
书籍 list-books, create-book, get-book, update-book, delete-book, export-book-markdown, export-book-plaintext
货架 list-shelves, create-shelf, get-shelf, update-shelf, delete-shelf
搜索 search
附件 list-attachments, create-attachment-link, get-attachment, update-attachment, delete-attachment
评论 list-comments, create-comment, get-comment, update-comment, delete-comment
权限 get-content-permissions, update-content-permissions
回收站 list-recycle-bin, restore-from-recycle-bin, permanently-delete
角色 list-roles, create-role, get-role, update-role, delete-role
用户 list-users, create-user, get-user, update-user, delete-user
系统 get-system-info
审核日志 list-audit-log

示例提示

连接后,您可以问Claude以下问题:

阅读与搜索

  • “在开发人员指南书中查找标记有“API”的所有页面”
  • “在所有书籍中搜索有关身份验证的任何信息”
  • “给我看看‘入职’书的内容”
  • “将“架构概述”页面导出为markdown”

写作与编辑

  • “在基础架构书中创建一个名为‘Redis设置’的新页面,并附上设置说明”
  • “更新“API引用”页面以添加新的终结点节”
  • 将“传统授权”页面移至“已存档”章节

组织

  • “‘工程’书架上有什么书?”
  • “在DevOps书中创建一个名为“部署”的新章节”
  • “让我看看回收站里的所有东西”
  • “还原我意外删除的页面”

管理员

  • “列出所有用户及其角色”
  • “显示页面删除的最新审核日志条目”
  • “编辑者角色有哪些权限?”

Docker快速入门

docker run -d \
  -p 3000:3000 \
  -v bookstack-mcp-data:/app/data \
  -e BOOKSTACK_URL=https://your-bookstack.example.com \
  -e BOOKSTACK_TOKEN_ID=your-token-id \
  -e BOOKSTACK_TOKEN_SECRET=your-token-secret \
  -e MCP_AUTH_PASSWORD=choose-a-strong-password \
  -e JWT_SECRET=$(openssl rand -hex 32) \
  -e BASE_URL=https://your-mcp-domain.com \
  ghcr.io/jacob-tate/bookstack-mcp:latest

或者使用Docker Compose——请参阅 docker-compose.yml.

连接到Claude.ai

  1. 在Claude.ai中,请访问 设置→ 集成→ 添加MCP服务器
  2. 请输入您的服务器URL: https://your-mcp-domain.com/mcp
  3. 浏览器弹出窗口将打开——输入您的 MCP_AUTH_PASSWORD
  4. 完成——Claude现在可以访问您的BookStack实例了

环境变量

变量 必填 描述
BOOKSTACK_URL ✅ BookStack实例的URL
BOOKSTACK_TOKEN_ID ✅ API令牌ID
BOOKSTACK_TOKEN_SECRET ✅ API令牌机密
MCP_AUTH_PASSWORD ✅ OAuth浏览器弹出窗口中显示的密码
JWT_SECRET ✅ 签名令牌的随机字符串≥32个字符
BASE_URL ✅ 此MCP服务器的公共HTTPS URL
PORT -- HTTP端口(默认值: 3000)
AUTH_DB_PATH -- OAuth令牌的SQLite数据库(默认值: ./data/auth.db)

生成BookStack API令牌

在BookStack中: 简介→ API令牌→ 创建令牌

给它一个描述性的名称(例如“Claude MCP”)。令牌ID和secret在创建时显示一次——同时保存。

不使用Docker运行

需要 Node.js 24 (使用内置 node:sqlite --不需要本机编译)。

npm install
cp .env.example .env
# edit .env with your values
npm run build
npm start

开发(热重新加载):

npm run dev

备注:不要跑 npm run typecheck --MCP SDK的类型定义超过了Node的堆限制。 使用 npm run build (esbuild,~1s)来验证代码是否编译。

令牌撤销

要立即使令牌无效(例如怀疑泄漏):

# Revoke an access token (JWT)
curl -X POST https://your-mcp-domain.com/revoke \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "token=<access_token>"

# Revoke a refresh token (UUID)
curl -X POST https://your-mcp-domain.com/revoke \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "token=<refresh_token>"

总是回来 200 OK 每 RFC 7009.

要一次使所有令牌无效,请执行以下操作: 旋转 JWT_SECRET 在 .env 并重新启动。所有签发的JWT立即无法通过签名验证。

部署说明

  • 使用HTTPS暴露反向代理(nginx、Caddy)后面的端口3000
  • BASE_URL 必须是公共HTTPS URL——Claude.ai要求OAuth使用HTTPS
  • OAuth令牌在SQLite中持久化(./data/auth.db)--重新启动后仍能存活
  • 访问令牌在24小时后过期;刷新令牌持续90天,并自动轮换

项目结构

src/
├── config.ts              # Env var validation
├── index.ts               # Express app + startup
├── auth/
│   ├── db.ts              # node:sqlite singleton + schema init
│   ├── store.ts           # SQLite-backed OAuth state (tokens, clients)
│   ├── oauth.ts           # OAuthServerProvider + login form
│   └── middleware.ts      # Bearer token validation
├── bookstack/
│   └── client.ts          # BookStack API client (fetch-based)
└── mcp/
    ├── server.ts
    └── tools/
        ├── pages.ts
        ├── chapters.ts
        ├── books.ts
        ├── shelves.ts
        ├── search.ts
        ├── attachments.ts
        ├── comments.ts
        ├── permissions.ts
        ├── recycle-bin.ts
        ├── roles.ts
        ├── users.ts
        ├── system.ts
        └── audit-log.ts