Skip to main content
Glama
ttpears

BookStack MCP Server

by ttpears

MCP-сервер BookStack

npm version npm downloads CI Node.js MCP License: MIT

Сервер Model Context Protocol (MCP), который предоставляет ИИ-ассистентам полный доступ к вашей документации BookStack — поиск, чтение, создание и управление контентом.

npx bookstack-mcp

Возможности

  • 20 инструментов только для чтения + 18 инструментов для записи для полного покрытия API BookStack

  • Книги, главы, страницы, полки, вложения и комментарии — полный CRUD

  • Поддержка корзины — восстановление или окончательное удаление контента, помеченного как удаленный

  • Типобезопасная проверка входных данных с помощью Zod (автоматическое приведение параметров string/number для широкой совместимости с клиентами)

  • Встроенные URL-адреса и предварительный просмотр контента во всех ответах

  • Резервный экспорт в Markdown для страниц, созданных в HTML, чтобы ИИ-клиенты всегда получали полезный контент

  • Операции записи по умолчанию отключены для безопасности

  • Работает с Claude Desktop, Claude Code, LibreChat и любым MCP-совместимым клиентом

  • Транспорты Stdio и Streamable HTTP

Related MCP server: PDF RAG MCP Server

Быстрый старт

Установка из npm

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

Предупреждение о безопасности: BOOKSTACK_INSECURE_SKIP_TLS_VERIFY=true отключает проверку TLS-сертификатов для исходящих запросов к BookStack. Используйте только для самоподписанных сертификатов в доверенной локальной сети — соединения становятся уязвимыми для атак типа MITM. Сервер записывает строку WARNING в лог при запуске, если эта опция включена.

Настройка клиента

Claude Desktop

Добавьте в конфигурацию Claude Desktop:

{
  "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"
      }
    }
  }
}

LibreChat (stdio, для одного пользователя)

Добавьте в ваш 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"

LibreChat (Streamable HTTP, рекомендуется для продакшена / Docker)

Запустите сервер как долгоживущий HTTP-сервис и укажите LibreChat URL. Это правильная настройка для многопользовательских или контейнеризированных развертываний.

Запустите сервер в режиме HTTP:

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

Затем настройте LibreChat:

mcpServers:
  bookstack:
    type: streamable-http
    url: http://bookstack-mcp:8080/mcp

Критическое изменение в версии 3.0.0: устаревший транспорт HTTP+SSE (GET /sse + POST /messages) был удален. Streamable HTTP по адресу /mcp уже поддерживает SSE для потоковых ответов и является единственным HTTP-транспортом в текущих MCP-клиентах. Если вы используете старый клиент, которому нужны устаревшие эндпоинты, зафиксируйте версию bookstack-mcp@2.x.

Переменные окружения для HTTP-транспорта

Переменная

По умолчанию

Описание

MCP_TRANSPORT

stdio

Установите http для включения HTTP-сервера

MCP_HTTP_PORT

8080

Порт для прослушивания

MCP_HTTP_HOST

127.0.0.1

Адрес привязки. По умолчанию loopback для безопасности

MCP_HTTP_ALLOWED_HOSTS

(только loopback)

Разделенный запятыми список разрешенных имен хостов в заголовке Host для защиты от DNS-ребиндинга. Требуется при привязке к адресу, отличному от loopback

MCP_HTTP_PATH

/mcp

Эндпоинт для Streamable HTTP

При привязке к 0.0.0.0 (например, внутри контейнера, доступного из других сервисов), установите MCP_HTTP_ALLOWED_HOSTS в имена хостов, которые LibreChat будет использовать для доступа к этому серверу, например MCP_HTTP_ALLOWED_HOSTS=bookstack-mcp,bookstack-mcp.internal.

Перезапустите LibreChat после изменения конфигурации.

Claude Code (CLI)

Рекомендуемый путь — маркетплейс ttpears/claude-plugins, который поставляет манифест плагина этого репозитория (.claude-plugin/plugin.json):

/plugin marketplace add ttpears/claude-plugins
/plugin install bookstack-mcp@ttpears-plugins

Затем установите переменные окружения BOOKSTACK_* в вашей оболочке, чтобы MCP-сервер плагина мог пройти аутентификацию:

export BOOKSTACK_BASE_URL=https://your-bookstack.com
export BOOKSTACK_TOKEN_ID=your-token-id
export BOOKSTACK_TOKEN_SECRET=your-token-secret

Ручная установка (альтернатива)

Если вы не хотите использовать маркетплейс, зарегистрируйте сервер напрямую с помощью claude mcp add. Повторите --env для каждой переменной, поместите все флаги перед именем сервера и используйте -- для обозначения начала команды, которую запустит Claude Code:

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) определяет, где записывается запись:

Область

Где находится

Общий доступ через git

Используйте, когда

local (по умолчанию)

~/.claude.json, привязано к текущему проекту

Нет

Пробуете в одном репозитории

user

~/.claude.json, доступно во всех проектах

Нет

Вы хотите использовать bookstack везде

project

.mcp.json в корне репозитория

Да

Вся команда должна его использовать

Результирующая запись конфигурации выглядит так (в .mcp.json для области проекта или ~/.claude.json в противном случае):

{
  "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"
      }
    }
  }
}

Совет для закоммиченного .mcp.json: Claude Code раскрывает ссылки ${VAR} и ${VAR:-default} в .mcp.json из окружения оболочки. Используйте это, чтобы секреты не попадали в git: установите "BOOKSTACK_TOKEN_SECRET": "${BOOKSTACK_TOKEN_SECRET}" в файле и пусть каждый разработчик экспортирует переменную в своей оболочке.

Ресурсы MCP

Книги и страницы также представлены как ресурсы MCP, поэтому клиенты, которые просматривают ресурсы (Claude Desktop, MCP Inspector и т.д.), могут упоминать их напрямую через @:

Шаблон URI

Описание

bookstack://book/{id}

Книга, возвращается как JSON-метаданные

bookstack://page/{id}

Страница, возвращается как markdown плюс JSON-метаданные

Оба шаблона поддерживают автодополнение id: при вводе сервер ищет в BookStack и возвращает соответствующие ID, чтобы вам не приходилось запоминать числовые ID вручную.

Доступные инструменты

Операции чтения (всегда доступны)

Инструмент

Описание

get_capabilities

Возможности сервера и конфигурация

search_content

Поиск по всему контенту с фильтрацией

search_pages

Поиск страниц с опциональной фильтрацией по книгам

get_books / get_book

Список или получение деталей книг

get_pages / get_page

Список или получение полного контента страниц

get_chapters / get_chapter

Список или получение деталей глав

get_shelves / get_shelf

Список или получение деталей полок

get_attachments / get_attachment

Список или получение деталей вложений

get_comments / get_comment

Список или получение комментариев к странице (BookStack v25.11+)

get_recycle_bin

Список элементов в корзине

export_page

Экспорт страницы в HTML, PDF, Markdown, обычный текст или ZIP

export_book

Экспорт всей книги

export_chapter

Экспорт главы

get_recent_changes

Недавно обновленный контент

Операции записи (требуется BOOKSTACK_ENABLE_WRITE=true)

Инструмент

Описание

create_book / delete_book

Создание или удаление книги

create_chapter / delete_chapter

Создание или удаление главы

create_page

Создание новой страницы (HTML или Markdown)

update_page

Обновление контента, переименование или перемещение в другую книгу/главу

delete_page

Удаление страницы (можно восстановить из корзины)

create_shelf / update_shelf / delete_shelf

Управление полками

create_attachment / update_attachment / delete_attachment

Управление вложениями

create_comment / update_comment / delete_comment

Управление комментариями к странице (v25.11+)

restore_deleted / permanently_delete

Восстановление или окончательное удаление элементов из корзины

Настройка API BookStack

  1. Войдите в BookStack как администратор

  2. Перейдите в Settings > Users > Edit your user

  3. Убедитесь, что у пользователя есть разрешение Access System API

  4. В разделе API Tokens создайте новый токен

  5. Скопируйте Token ID и Token Secret

Безопасность

  • Операции записи по умолчанию отключены

  • Используйте HTTPS для продакшен-инстансов

  • Храните API-токены безопасно (никогда не коммитьте в git)

  • Рассмотрите возможность создания выделенного пользователя BookStack с ограниченными правами

Разработка

npm run dev          # Hot reload with tsx
npm run type-check   # Type checking only
npm run build        # Production build

Лицензия

MIT

Install Server
A
license - permissive license
B
quality
B
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
5Releases (12mo)

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ttpears/bookstack-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server