BookStack MCP Server
Enables AI assistants to manage BookStack knowledge bases with tools for creating, reading, updating, and deleting pages, books, and shelves, as well as searching content.
README
š BookStack MCP Server
A professional-grade Model Context Protocol (MCP) server that seamlessly bridges AI assistants with BookStack knowledge management systems. Transform your documentation workflows with intelligent automation.
Created by Derron Knox | Showcasing enterprise-level software architecture and best practices
š Overview
This TypeScript-based MCP server provides a robust, production-ready interface for AI assistants to interact with BookStack instances. Designed with enterprise scalability, security, and maintainability in mind, it demonstrates advanced software engineering principles and modern development practices.
⨠Key Features
- š”ļø Enterprise Security: Token-based authentication with secure credential management
- šļø Modular Architecture: Clean separation of concerns with TypeScript interfaces
- š Comprehensive CRUD Operations: Full lifecycle management of BookStack content
- š³ Container-Ready: Production-optimized Docker setup with multi-stage builds
- ā” High Performance: Optimized API calls with proper error handling and timeouts
- š Type Safety: Full TypeScript implementation with strict type checking
- š Smart Search: Advanced content discovery and filtering capabilities
- š Intelligent Resolution: Name-to-ID resolution for user-friendly operations
š ļø Available Tools
Page Management
create_page- Create new pages with HTML/Markdown contentget_page_content- Retrieve page content by ID or nameupdate_page- Modify existing pages (content, location, metadata)delete_page- Remove pages from BookStack
Content Discovery
search_items- Search across shelves, books, chapters, and pageslist_books- Enumerate books with filtering and paginationlist_shelves- Browse shelf collections with advanced options
Book Management
read_book- Get details of a specific book by ID or namecreate_book- Create a new bookupdate_book- Modify existing books (content, metadata)delete_book- Remove books from BookStack
Advanced Features
- Flexible Targeting: Use either IDs or names for all operations
- Context-Aware Resolution: Automatic name-to-ID conversion
- Hierarchical Navigation: Support for book/chapter/page relationships
- Metadata Management: Tags, priorities, and organizational features
šāāļø Quick Start
Prerequisites
- Node.js 20+
- Docker & Docker Compose (for containerized deployment)
- BookStack instance with API access
- BookStack API tokens (Token ID & Secret)
1. Environment Setup
# 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. Installation Options
Option A: Docker Deployment (Recommended)
# Production-ready containerized deployment
docker-compose up --build -d
# Monitor logs
docker-compose logs -f bookstack-mcp-server
Option B: Local Development
# Install dependencies
npm install
# Development with hot reload
npm run watch
# Production build
npm run build
npm start
3. Integration with Claude Desktop
Add to your Claude Desktop configuration (~/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"
}
}
}
}
šļø Architecture & Best Practices
Project Structure
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
Engineering Principles Demonstrated
šÆ Clean Architecture
- Separation of Concerns: Distinct layers for validation, business logic, and API interaction
- Dependency Injection: Modular design with clear interfaces
- Single Responsibility: Each module has one well-defined purpose
š Security First
- Environment Variable Management: Secure credential handling
- Input Validation: Comprehensive argument sanitization
- Error Boundaries: Proper exception handling without information leakage
š Production Readiness
- Container Optimization: Multi-stage Docker builds for minimal image size
- Health Checks: Built-in container health monitoring
- Graceful Shutdown: Proper signal handling for clean termination
- Comprehensive Logging: Structured error reporting and debugging
š Code Quality
- TypeScript Strict Mode: Full type safety with comprehensive interfaces
- Modular Design: Reusable components with clear APIs
- Error Handling: Robust exception management with user-friendly messages
š§ Configuration Options
Environment Variables
| Variable | Description | Required | Example |
|---|---|---|---|
BOOKSTACK_URL |
BookStack instance URL | ā | https://wiki.company.com |
BOOKSTACK_API_TOKEN_ID |
API Token ID from BookStack | ā | abc123def456 |
BOOKSTACK_API_TOKEN_SECRET |
API Token Secret from BookStack | ā | xyz789uvw012 |
Docker Configuration
- Health Checks: 30-second intervals with 3 retry attempts
- Log Rotation: 10MB max file size, 5 file retention
- Security: Non-root user execution
- Resource Optimization: Multi-stage builds for production efficiency
š Usage Examples
Creating Content
// 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" }
]
});
Content Discovery
// 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"
});
Content Management
// 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" }]
});
š Deployment Options
Production Deployment
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 Workflow
# Development with auto-reload
npm run watch
# Type checking
npx tsc --noEmit
# Debug with MCP Inspector
npm run inspector
š Debugging & Troubleshooting
MCP Inspector
# Launch debugging interface
npm run inspector
# Access via browser at provided URL
Common Issues
Connection Problems
# Verify BookStack accessibility
curl -H "Authorization: Token $BOOKSTACK_API_TOKEN_ID:$BOOKSTACK_API_TOKEN_SECRET" \
"$BOOKSTACK_URL/api/books"
Container Issues
# Check container health
docker-compose ps
docker-compose logs bookstack-mcp-server
# Restart with fresh build
docker-compose down && docker-compose up --build
š Dependencies
Production Dependencies
- @modelcontextprotocol/sdk: ^0.6.0 - MCP protocol implementation
- axios: ^1.9.0 - HTTP client for BookStack API
Development Dependencies
- typescript: ^5.3.3 - Type-safe JavaScript development
- @types/node: ^20.11.24 - Node.js type definitions
System Requirements
- Node.js: 20+ (LTS recommended)
- Memory: 256MB minimum, 512MB recommended
- Storage: 100MB for application, additional for logs
šÆ Professional Showcase
This project demonstrates expertise in:
Backend Development
- RESTful API integration and design
- Microservices architecture patterns
- Error handling and resilience patterns
DevOps & Infrastructure
- Containerization with Docker
- Production deployment strategies
- Configuration management
- Health monitoring and observability
Software Engineering
- Clean code principles
- Design patterns (Strategy, Factory, Dependency Injection)
- Test-driven development mindset
- Documentation and maintainability
Modern JavaScript/TypeScript
- Advanced TypeScript features
- Async/await patterns
- ES2022+ modern syntax
- Node.js best practices
š¤ Contributing
This project welcomes contributions! Areas for enhancement:
- Unit test coverage expansion
- Additional BookStack API endpoints
- Performance optimizations
- Enhanced error recovery
š Contact
Derron Knox - Software Engineer & Solutions Architect
This project exemplifies enterprise-grade software development practices, demonstrating proficiency in modern web technologies, cloud-native development, and scalable system architecture.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.