使用说明
📚 BookStack MCP服务器
一个专业级的模型上下文协议(MCP)服务器,将AI助手与BookStack知识管理系统无缝连接。通过智能自动化改变您的文档工作流程。
由...创建 Derron Knox | 展示企业级软件架构和最佳实践
🚀 概述
这个基于TypeScript的MCP服务器为AI助手与BookStack实例交互提供了一个健壮的、生产就绪的接口。它的设计考虑了企业的可扩展性、安全性和可维护性,展示了先进的软件工程原理和现代开发实践。
✨ 主要特点
- 🛡️ 企业安全:具有安全凭证管理的基于令牌的身份验证
- 🏗️ 模块化架构:与TypeScript接口进行清晰的关注点分离
- 🔄 全面的CRUD操作:BookStack内容的全生命周期管理
- 🐳 集装箱准备就绪:通过多阶段构建进行生产优化的Docker设置
- ⚡ 高性能:通过正确的错误处理和超时优化API调用
- 📋 类型安全:具有严格类型检查的完整TypeScript实现
- 🔍 智能搜索:高级内容发现和过滤功能
- 📖 智能分辨率:名称到ID解析,便于用户操作
🛠️ 可用工具
页面管理
create_page-使用HTML/Markdown内容创建新页面get_page_content-按ID或名称检索页面内容update_page-修改现有页面(内容、位置、元数据)delete_page-从BookStack中删除页面
内容发现
search_items-跨书架、书籍、章节和页面搜索list_books-通过过滤和分页枚举书籍list_shelves-使用高级选项浏览书架收藏
图书管理
read_book-按ID或姓名获取特定书籍的详细信息create_book-创建新书update_book-修改现有书籍(内容、元数据)delete_book-从BookStack中删除书籍
高级功能
- 灵活定位:对所有操作使用ID或名称
- 上下文感知解决方案:自动名称到ID转换
- 分层导航:支持书籍/章节/页面关系
- 元数据管理:标签、优先级和组织特征
🏃♂️ 快速开始
先决条件
- Node.js 20+
- Docker和Docker Compose(用于容器化部署)
- 具有API访问权限的BookStack实例
- BookStack API代币(代币ID和密钥)
1.环境设置
# Clone and configure
git clone <repository-url>
cd bookstack/
cp .env.example .env
# Configure your BookStack credentials
cat > .env << EOF
BOOKSTACK_URL="https://your-bookstack-instance.com"
BOOKSTACK_API_TOKEN_ID="your_token_id_here"
BOOKSTACK_API_TOKEN_SECRET="your_token_secret_here"
EOF
2.安装选项
选项A:Docker部署(推荐)
# Production-ready containerized deployment
docker-compose up --build -d
# Monitor logs
docker-compose logs -f bookstack-mcp-server
方案B:地方发展
# Install dependencies
npm install
# Development with hot reload
npm run watch
# Production build
npm run build
npm start
3.与克劳德桌面集成
添加到您的Claude Desktop配置(~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"bookstack-mcp-server": {
"command": "node",
"args": ["/path/to/bookstack/build/index.js"],
"env": {
"BOOKSTACK_URL": "https://your-bookstack-instance.com",
"BOOKSTACK_API_TOKEN_ID": "your_token_id",
"BOOKSTACK_API_TOKEN_SECRET": "your_token_secret"
}
}
}
}
🏗️ 架构和最佳实践
项目结构
bookstack/
├── src/
│ ├── types.ts # TypeScript interface definitions
│ ├── utils/
│ │ ├── validation.ts # Input validation & sanitization
│ │ └── api.ts # API utilities & helper functions
│ ├── tools/
│ │ ├── definitions.ts # Tool schema definitions
│ │ └── handlers.ts # Business logic implementations
│ └── index.ts # Main server & orchestration
├── build/ # Compiled JavaScript output
├── Dockerfile # Multi-stage container build
├── docker-compose.yml # Production deployment config
└── package.json # Dependencies & scripts
工程原理演示
🎯 清洁建筑
- 关注点分离:用于验证、业务逻辑和API交互的不同层
- 依赖注入:模块化设计,界面清晰
- 单一责任:每个模块都有一个明确的目的
🔒 安全第一
- 环境变量管理:安全的凭证处理
- 输入验证:全面的论点净化
- 误差边界:正确的异常处理,无信息泄露
🚀 生产准备就绪
- 容器优化:多阶段Docker构建,实现最小映像大小
- 健康检查:内置容器健康监测
- 优雅地关闭:正确的信号处理,实现干净端接
- 综合录井:结构化错误报告和调试
📊 代码质量
- TypeScript严格模式:全型安全,接口全面
- 模块化设计:具有清晰API的可重用组件
- 错误处理:强大的异常管理,用户友好的消息
🔧 配置选项
环境变量
| 变量 | 描述 | 必填 | 示例 |
|---|---|---|---|
BOOKSTACK_URL |
BookStack实例URL | ✅ | https://wiki.company.com |
BOOKSTACK_API_TOKEN_ID |
BookStack中的API令牌ID | ✅ | abc123def456 |
BOOKSTACK_API_TOKEN_SECRET |
来自BookStack的API令牌机密 | ✅ | xyz789uvw012 |
Docker配置
- 健康检查:30秒间隔,重试3次
- 日志轮转:最大文件大小为10MB,保留5个文件
- 安全:非root用户执行
- 资源优化:多阶段构建,提高生产效率
🔍 使用示例
创建内容
// Create a page in a specific book
await createPage({
name: "API Documentation",
markdown: "# API Guide\n\nComprehensive API documentation...",
book_name: "Development Guides",
tags: [
{ name: "category", value: "api" },
{ name: "priority", value: "high" }
]
});
内容发现
// Search across all content types
await searchItems({
query: "kubernetes deployment",
count: 20
});
// Find pages by context
await getPageContent({
page_name: "Deployment Guide",
book_name: "Infrastructure Documentation"
});
内容管理
// Update page with new content
await updatePage({
page_name: "Getting Started",
book_name: "User Manual",
markdown: "# Updated Getting Started Guide\n...",
tags: [{ name: "status", value: "updated" }]
});
🚀 部署选项
生产部署
Docker Swarm
# Scale across multiple nodes
docker stack deploy -c docker-compose.yml bookstack-mcp
Kubernetes
apiVersion: apps/v1
kind: Deployment
metadata:
name: bookstack-mcp-server
spec:
replicas: 3
selector:
matchLabels:
app: bookstack-mcp-server
template:
metadata:
labels:
app: bookstack-mcp-server
spec:
containers:
- name: bookstack-mcp-server
image: bookstack-mcp-server:latest
env:
- name: BOOKSTACK_URL
valueFrom:
secretKeyRef:
name: bookstack-credentials
key: url
开发工作流程
# Development with auto-reload
npm run watch
# Type checking
npx tsc --noEmit
# Debug with MCP Inspector
npm run inspector
🐛 调试与故障排除
MCP检查员
# Launch debugging interface
npm run inspector
# Access via browser at provided URL
常见问题
连接问题
# Verify BookStack accessibility
curl -H "Authorization: Token $BOOKSTACK_API_TOKEN_ID:$BOOKSTACK_API_TOKEN_SECRET" \
"$BOOKSTACK_URL/api/books"
集装箱问题
# Check container health
docker-compose ps
docker-compose logs bookstack-mcp-server
# Restart with fresh build
docker-compose down && docker-compose up --build
📋 依赖项
生产依赖性
- @模型上下文协议/sdk:^0.6.0-MCP协议实现
- 轴:^1.9.0-BookStack API的HTTP客户端
发展依赖性
- 打字稿:^5.3.3-类型安全的JavaScript开发
- @类型/节点:^20.11.24-Node.js类型定义
系统要求
- Node.js:20+(建议使用LTS)
- 记忆:最小256MB,建议512MB
- 存储:100MB用于应用程序,额外用于日志
🎯 专业展示
该项目展示了以下方面的专业知识:
后端开发
- RESTful API集成与设计
- 微服务架构模式
- 错误处理和弹性模式
DevOps和基础设施
- Docker的容器化
- 生产部署策略
- 配置管理
- 健康监测和可观察性
软件工程
- 干净代码原则
- 设计模式(策略、工厂、依赖注入)
- 测试驱动开发思维
- 文件和可维护性
现代JavaScript/TypeScript
- 高级TypeScript功能
- 异步/等待模式
- ES2022+现代语法
- Node.js最佳实践
🤝 贡献
这个项目欢迎捐款!需要改进的领域:
- 单元测试覆盖范围扩展
- 其他BookStack API端点
- 性能优化
- 增强的错误恢复
📞 联系
Derron Knox - 软件工程师和解决方案架构师
该项目展示了企业级软件开发实践,展示了对现代web技术、云原生开发和可扩展系统架构的熟练掌握。
