@h4sht/bookstack-mcp
by h4sht
README.md
# @h4sht/bookstack-mcp
<p align="center">
<img src="https://raw.githubusercontent.com/BookStackApp/BookStack/development/public/icon.png" alt="BookStack" width="120" />
</p>
<p align="center">
<strong>MCP server for BookStack</strong> โ connect Claude Code, Codex, OpenCode and any AI assistant to your BookStack wiki.<br>
<em>One command, zero config files, instant setup.</em>
</p>
<p align="center">
<a href="https://github.com/h4sht/bookstack-mcp"><img src="https://img.shields.io/badge/github-h4sht%2Fbookstack--mcp-blue?logo=github" alt="GitHub repo"></a>
<a href="./LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="License MIT"></a>
<img src="https://img.shields.io/badge/tests-32%2F32-brightgreen" alt="Tests 32/32">
<img src="https://img.shields.io/badge/node-%3E%3D18-brightgreen?logo=node.js" alt="Node >=18">
</p>
---
## ๐ Claude Code
```bash
claude mcp add bookstack -- npx github:h4sht/bookstack-mcp
```
Claude Code will prompt you for:
- `BOOKSTACK_BASE_URL` โ your BookStack API URL (e.g. `https://wiki.example.com/api`)
- `BOOKSTACK_API_TOKEN` โ your API token (`token_id:token_secret`)
Or pass them directly:
```bash
claude mcp add bookstack \
--env BOOKSTACK_BASE_URL=https://wiki.example.com/api \
--env BOOKSTACK_API_TOKEN=token_id:token_secret \
-- npx github:h4sht/bookstack-mcp
```
Then use `/mcp` inside Claude Code to verify it's connected โ
---
## ๐ ๏ธ What you get (25 tools)
| Category | Tools |
|----------|-------|
| ๐ **Books** (6) | list, get, create, update, delete, export |
| ๐ **Chapters** (6) | list, get, create, update, delete, export |
| ๐ **Pages** (6) | list, get, create, update, delete, export |
| ๐ **Shelves** (5) | list, get, create, update, delete |
| ๐ **Search** (1) | search across all content |
| โ๏ธ **System** (1) | instance info |
All `export_*` tools support `markdown`, `html`, `pdf`, `plaintext`.
---
## โ๏ธ Markdown-powered
BookStack stores pages as HTML but accepts **Markdown input** through its API. This means Claude can create and edit wiki pages in its native format:
```
"Create a page about async Python in book 3"
โ bookstack_create_page({
book_id: 3,
name: "Async Python Guide",
markdown: "# Async Python\n\n`asyncio` is Python's standard library..."
})
```
Pages are also exported as Markdown, so Claude can read, analyze, and improve existing content.
---
## ๐ฆ Setup for other AI assistants
### OpenAI Codex
```bash
codex mcp add bookstack \
--env BOOKSTACK_BASE_URL=https://wiki.example.com/api \
--env BOOKSTACK_API_TOKEN=id:secret \
-- npx github:h4sht/bookstack-mcp
```
Or add this to `~/.codex/config.toml`:
```toml
[mcp_servers.bookstack]
command = "npx"
args = ["github:h4sht/bookstack-mcp"]
[mcp_servers.bookstack.env]
BOOKSTACK_BASE_URL = "https://wiki.example.com/api"
BOOKSTACK_API_TOKEN = "id:secret"
```
Verify with: `codex mcp list`
### OpenCode
```bash
opencode mcp add
# Select "local", then enter: npx github:h4sht/bookstack-mcp
```
Or add to `opencode.json`:
```jsonc
{
"mcp": {
"bookstack": {
"type": "local",
"command": ["npx", "github:h4sht/bookstack-mcp"],
"enabled": true,
"environment": {
"BOOKSTACK_BASE_URL": "https://wiki.example.com/api",
"BOOKSTACK_API_TOKEN": "id:secret"
}
}
}
}
```
### Cline (VS Code)
Add to Cline MCP settings file:
```json
{
"mcpServers": {
"bookstack": {
"command": "npx",
"args": ["github:h4sht/bookstack-mcp"],
"env": {
"BOOKSTACK_BASE_URL": "https://wiki.example.com/api",
"BOOKSTACK_API_TOKEN": "id:secret"
}
}
}
}
```
### Any MCP-compatible assistant (stdio)
The server command is always the same:
```bash
npx github:h4sht/bookstack-mcp
```
Set `BOOKSTACK_BASE_URL` and `BOOKSTACK_API_TOKEN` as environment variables.
---
## ๐ง Config reference
| Variable | Required | Description |
|----------|----------|-------------|
| `BOOKSTACK_BASE_URL` | Yes | Full URL including `/api` |
| `BOOKSTACK_API_TOKEN` | Yes | Format: `token_id:token_secret` |
| `BOOKSTACK_TIMEOUT` | No | Request timeout ms (default: `30000`) |
---
## ๐ Security
- **4 auditable files** โ read the whole source in 10 minutes
- **One dependency** โ only `@modelcontextprotocol/sdk` (official Anthropic)
- **Native fetch()** โ no HTTP libraries, no hidden requests
- **Stdio only** โ no open ports, no network surface
- **Zero telemetry** โ no analytics, no tracking, no calls home
- **Stderr logging** โ never writes to stdout (MCP protocol integrity)
---
## ๐งช Tests
```bash
npm test # 32 tests, all passing โ
```
---
## ๐ Structure
```
@h4sht/bookstack-mcp/
โโโ src/
โ โโโ index.ts # MCP server, stdio transport, config
โ โโโ client.ts # BookStack REST client (native fetch)
โ โโโ tools.ts # 25 MCP tool definitions + handlers
โ โโโ types.ts # TypeScript types
โโโ dist/ # Compiled JS (ready to run)
โโโ tests/ # 32 unit + integration tests
โโโ package.json
โโโ README.md
```
---
## ๐ License
MIT ยฉ [h4sht](https://github.com/h4sht)
This server cannot be deployed
Maintenance
ActivityStale
ResponsivenessNo issues