
Security News
PHP Foundation Says Chainguard Broke Security Embargo Ahead of Emergency Patches
The PHP Foundation says Chainguard broke a security embargo ahead of critical RCE patches, as leaks disrupted the coordinated release.
bookstack-mcp
Advanced tools
MCP server for BookStack wiki — search, read, create, and manage documentation via AI assistants
A Model Context Protocol (MCP) server that gives AI assistants full access to your BookStack documentation — search, read, create, and manage content.
npx bookstack-mcp
npx bookstack-mcp
git clone https://github.com/ttpears/bookstack-mcp.git
cd bookstack-mcp
npm install && npm run build
npm start
BOOKSTACK_BASE_URL=https://your-bookstack.com # Required
BOOKSTACK_TOKEN_ID=your-token-id # Required
BOOKSTACK_TOKEN_SECRET=your-token-secret # Required
BOOKSTACK_ENABLE_WRITE=false # Optional, default false
BOOKSTACK_INSECURE_SKIP_TLS_VERIFY=false # Optional, default false
Security warning:
BOOKSTACK_INSECURE_SKIP_TLS_VERIFY=truedisables TLS certificate verification for outgoing requests to BookStack. Use only for self-signed certs on a trusted LAN — connections become vulnerable to MITM attacks. The server logs aWARNINGline at startup whenever this is enabled.
The easiest install is the prebuilt MCPB bundle attached to each GitHub release:
bookstack-mcp-<version>.mcpb from the latest release..mcpb file in (or click Install Extension).false for read-only access; set to true to enable create/update/delete tools.If you'd rather edit the config file directly:
{
"mcpServers": {
"bookstack": {
"command": "npx",
"args": ["-y", "bookstack-mcp"],
"env": {
"BOOKSTACK_BASE_URL": "https://your-bookstack.com",
"BOOKSTACK_TOKEN_ID": "your-token-id",
"BOOKSTACK_TOKEN_SECRET": "your-token-secret"
}
}
}
}
Add to your librechat.yaml:
mcpServers:
bookstack:
command: npx
args:
- -y
- bookstack-mcp
env:
BOOKSTACK_BASE_URL: "https://your-bookstack.com"
BOOKSTACK_TOKEN_ID: "your-token-id"
BOOKSTACK_TOKEN_SECRET: "your-token-secret"
Run the server as a long-lived HTTP service and point LibreChat at the URL. This is the right setup for multi-user or containerized deployments.
Start the server in HTTP mode:
MCP_TRANSPORT=http \
MCP_HTTP_PORT=8080 \
BOOKSTACK_BASE_URL=https://your-bookstack.com \
BOOKSTACK_TOKEN_ID=your-token-id \
BOOKSTACK_TOKEN_SECRET=your-token-secret \
npx bookstack-mcp
Then configure LibreChat:
mcpServers:
bookstack:
type: streamable-http
url: http://bookstack-mcp:8080/mcp
3.0.0 breaking change: the deprecated HTTP+SSE transport (
GET /sse+POST /messages) has been removed. Streamable HTTP at/mcpalready speaks SSE for streaming responses, and is the only HTTP transport in current MCP clients. If you're on an older client that needs the legacy endpoints, pin tobookstack-mcp@2.x.
| Variable | Default | Description |
|---|---|---|
MCP_TRANSPORT | stdio | Set to http to enable the HTTP server |
MCP_HTTP_PORT | 8080 | Port to listen on |
MCP_HTTP_HOST | 127.0.0.1 | Bind address. Loopback by default for safety |
MCP_HTTP_ALLOWED_HOSTS | (loopback only) | Comma-separated allowlist of Host header hostnames for DNS rebinding protection. Required when binding to a non-loopback address |
MCP_HTTP_PATH | /mcp | Streamable HTTP endpoint |
When binding to 0.0.0.0 (e.g. inside a container reachable from other services), set MCP_HTTP_ALLOWED_HOSTS to the hostnames LibreChat will use to reach this server, e.g. MCP_HTTP_ALLOWED_HOSTS=bookstack-mcp,bookstack-mcp.internal.
Restart LibreChat after config changes.
The recommended path is the ttpears/claude-plugins marketplace, which ships this repo's plugin manifest (.claude-plugin/plugin.json):
/plugin marketplace add ttpears/claude-plugins
/plugin install bookstack-mcp@ttpears-plugins
Then set the BOOKSTACK_* environment variables in your shell so the plugin's MCP server can authenticate:
export BOOKSTACK_BASE_URL=https://your-bookstack.com
export BOOKSTACK_TOKEN_ID=your-token-id
export BOOKSTACK_TOKEN_SECRET=your-token-secret
If you'd rather not use the marketplace, register the server directly with claude mcp add. Repeat --env for each variable, put all flags before the server name, and use -- to mark the start of the command Claude Code will spawn:
claude mcp add bookstack \
--transport stdio \
--scope user \
--env BOOKSTACK_BASE_URL=https://your-bookstack.com \
--env BOOKSTACK_TOKEN_ID=your-token-id \
--env BOOKSTACK_TOKEN_SECRET=your-token-secret \
-- npx -y bookstack-mcp
Scope picks where the entry is written:
| Scope | Where it lives | Shared via git | Use it when |
|---|---|---|---|
local (default) | ~/.claude.json, scoped to the current project | No | Trying it out in one repo |
user | ~/.claude.json, available in every project | No | You want bookstack everywhere |
project | .mcp.json at the repo root | Yes | The whole team should get it |
The resulting config entry looks like this (in .mcp.json for project scope, or ~/.claude.json otherwise):
{
"mcpServers": {
"bookstack": {
"type": "stdio",
"command": "npx",
"args": ["-y", "bookstack-mcp"],
"env": {
"BOOKSTACK_BASE_URL": "https://your-bookstack.com",
"BOOKSTACK_TOKEN_ID": "your-token-id",
"BOOKSTACK_TOKEN_SECRET": "your-token-secret"
}
}
}
}
Tip for committed
.mcp.json: Claude Code expands${VAR}and${VAR:-default}references in.mcp.jsonfrom the surrounding shell. Use that to keep secrets out of git: set"BOOKSTACK_TOKEN_SECRET": "${BOOKSTACK_TOKEN_SECRET}"in the file and have each developer export the variable in their shell.
Books and pages are also exposed as MCP resources, so clients that browse resources (Claude Desktop, MCP Inspector, etc.) can @-mention them directly:
| URI template | Description |
|---|---|
bookstack://book/{id} | A book, returned as JSON metadata |
bookstack://page/{id} | A page, returned as markdown plus a JSON metadata blob |
Both templates support id autocompletion: as you type, the server searches BookStack and returns matching IDs so you don't have to remember numeric IDs by hand.
4.0.0 breaking changes: tool responses were trimmed for token efficiency. Removed fields:
direct_link,*_friendlydate strings,content_info,contextual_info,change_summary,pagination_hint,location,summary/tags_summary/book_counton shelves, and the buggypage_urlon attachments. Useurl, the ISO date fields, anddownload_urlinstead. Theget_capabilitiestool was removed — clients should usetools/list(built into MCP). Responses are now compact JSON (no pretty-printing) andget_recent_changesno longer issues per-result fetches.
| Tool | Description |
|---|---|
search_content | Search across all content with filtering |
search_pages | Search pages with optional book filtering |
get_books / get_book | List or get details of books |
get_pages / get_page | List or get full page content |
get_chapters / get_chapter | List or get chapter details |
get_shelves / get_shelf | List or get shelf details |
get_attachments / get_attachment | List or get attachment details |
get_comments / get_comment | List or get page comments (BookStack v25.11+) |
find_users | Look up BookStack users by name, email, or slug to resolve numeric user IDs for search filters |
get_recycle_bin | List items in the recycle bin |
export_page | Export page as HTML, PDF, Markdown, plaintext, or ZIP |
export_book | Export entire book |
export_chapter | Export chapter |
get_recent_changes | Recently updated content |
BOOKSTACK_ENABLE_WRITE=true)| Tool | Description |
|---|---|
create_book / delete_book | Create or delete a book |
create_chapter / delete_chapter | Create or delete a chapter |
create_page | Create a new page (HTML or Markdown) |
update_page | Update content, rename, or move to a different book/chapter |
delete_page | Delete a page (recoverable from recycle bin) |
create_shelf / update_shelf / delete_shelf | Manage shelves |
create_attachment / update_attachment / delete_attachment | Manage attachments |
create_comment / update_comment / delete_comment | Manage page comments (v25.11+) |
restore_deleted / permanently_delete | Restore or permanently destroy items in the recycle bin |
npm run dev # Hot reload with tsx
npm run type-check # Type checking only
npm run build # Production build
MIT
FAQs
MCP server for BookStack wiki — search, read, create, and manage documentation via AI assistants
The npm package bookstack-mcp receives a total of 153 weekly downloads. As such, bookstack-mcp popularity was classified as not popular.
We found that bookstack-mcp demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
The PHP Foundation says Chainguard broke a security embargo ahead of critical RCE patches, as leaks disrupted the coordinated release.

Security News
PHP releases emergency patches for two critical RCE vulnerabilities as agencies urge organizations to take unpatched sites offline.

Threat Research
/Security News
A supply chain attack compromised LiteLLM 1.107.0 on PyPI and Docker, spreading malware that steals cloud credentials, developer secrets, and AI provider keys.