Skip to main content
Glama

docmost-community-mcp

Сервер Model Context Protocol для самостоятельно развёрнутого Docmost Community / Open Source Edition.

Исходный код: github.com/dilruwanm/docmost-community-mcp

Официальные ключи MCP и API Docmost доступны только в Enterprise. Этот сервер взаимодействует с тем же внутренним HTTP API, который использует веб-приложение Docmost, поэтому вы можете искать, читать, писать и организовывать вики CE из Cursor, Claude или любого MCP-клиента.

Для записи тела в формате Markdown требуется Docmost v0.71+. Последняя проверенная целевая версия — v0.95.0.

Установка

npx -y docmost-community-mcp

Из исходного кода:

git clone https://github.com/dilruwanm/docmost-community-mcp.git
cd docmost-community-mcp
npm install
npm run build

Related MCP server: docmost-mcp-local

Что вы получаете

Официальные названия инструментов MCP Enterprise, а также дополнительные возможности Community, которые в официальной документации не упомянуты.

Страницы: search_pages, get_page, create_page, update_page, list_pages, list_child_pages, duplicate_page, copy_page_to_space, move_page, move_page_to_space, delete_page, restore_page, list_trash, get_page_history, get_history_version, get_breadcrumbs, get_backlinks, export_page

Пространства: list_spaces, get_space, create_space, update_space, delete_space, export_space

Комментарии: get_comments, create_comment, update_comment, delete_comment

Поиск / люди: search_attachments, search_suggest, list_workspace_members, get_current_user

Файлы / метки / доступ: upload_attachment, get_attachment_info, list_page_labels, add_page_labels, remove_page_label, list_space_members, add_space_members, remove_space_member, update_space_member_role

Тела страниц и комментариев — это Markdown. Обновления выполняются через POST /api/pages/update с format: "markdown", поэтому Docmost преобразует и применяет изменение на месте. Сервер не открывает сокет Yjs и не создаёт собственную схему TipTap.

Переменные окружения

Переменная

Обязательна

Назначение

DOCMOST_URL

да

URL экземпляра, например https://docs.example.com

DOCMOST_EMAIL + DOCMOST_PASSWORD

один из способов авторизации

Вход в Community

DOCMOST_AUTH_TOKEN

один из способов авторизации

cookie authToken из браузера

DOCMOST_SESSION_PATH

нет

Файл кэша сессии

DOCMOST_READ_ONLY

нет

true / 1 / yes — только поиск и чтение; изменяющие инструменты отклоняются

Предпочтительнее использовать email/пароль. JWT кэшируется в ~/.docmost-community-mcp/session.json и обновляется при получении 401. Учётные записи с MFA не могут завершить вход здесь — вместо этого используйте DOCMOST_AUTH_TOKEN.

Используйте отдельного пользователя Docmost. Не коммитьте учётные данные.

Cursor

Добавьте в .cursor/mcp.json или ~/.cursor/mcp.json:

{
  "mcpServers": {
    "docmost": {
      "command": "npx",
      "args": ["-y", "docmost-community-mcp"],
      "env": {
        "DOCMOST_URL": "https://docs.example.com",
        "DOCMOST_EMAIL": "you@example.com",
        "DOCMOST_PASSWORD": "your-password"
      }
    }
  }
}

Из локального клона:

{
  "mcpServers": {
    "docmost": {
      "command": "node",
      "args": ["/absolute/path/to/docmost-community-mcp/dist/index.js"],
      "env": {
        "DOCMOST_URL": "https://docs.example.com",
        "DOCMOST_EMAIL": "you@example.com",
        "DOCMOST_PASSWORD": "your-password"
      }
    }
  }
}

Claude Desktop / Claude Code

Тот же блок mcpServers, что и выше. Claude Code:

claude mcp add docmost --env DOCMOST_URL=https://docs.example.com --env DOCMOST_EMAIL=you@example.com --env DOCMOST_PASSWORD=secret -- npx -y docmost-community-mcp

Заметки о дизайне

  • только stdio в этом выпуске. Streamable HTTP можно добавить позже.

  • Никакой лицензии Enterprise, никакого доступа к базе данных Docmost, никакого форка Docmost.

  • slug пространства принимается везде, где требуется идентификатор пространства.

  • move_page вычисляет необходимый дробный ключ position (first, last или после соседней страницы).

  • create_page / update_page понятно завершаются ошибкой на серверах версии ниже v0.71, вместо того чтобы молча отбрасывать тело. get_current_user сообщает docmostVersion из поля currentVersion Docmost.

  • Для delete_space требуется confirm: true. Изменяющие инструменты соблюдают DOCMOST_READ_ONLY.

  • list_pages по умолчанию возвращает недавно обновлённые страницы. Передайте view=tree для страниц корня боковой панели.

  • search_attachments доступен только в Enterprise; на Community-хостах вы получите понятное сообщение об ошибке 403.

  • Инструменты экспорта записывают zip или один файл .md/.html в output_path или во временный файл и возвращают путь.

Лицензия

MIT. Этот пакет не включает исходный код Docmost AGPL или Enterprise.

Available Tools

41 tools
add_page_labelsA

Add one or more labels to a page. Names are normalized to lowercase kebab-case.

Inputs: names (required), page_id (required).

add_space_membersB

Add users and/or groups to a space with a role.

Inputs: role (required), space_id (required), user_ids, group_ids.

copy_page_to_spaceA

Copy a page and its accessible sub-pages into a different space.

Inputs: page_id (required), space_id (required).

create_commentA

Add a page-level comment. Inline selection comments are not supported.

Inputs: page_id (required), markdown (required), parent_comment_id.

create_pageA

Create a page in a space. Body is Markdown and is persisted in place (Docmost v0.71+). Can nest under a parent.

Inputs: title (required), space_id (required), icon, markdown, +1 more.

create_spaceA

Create a space. Slug is generated from the name if omitted. Requires permission to manage spaces.

Inputs: name (required), slug, description.

delete_commentA
Destructive

Delete a comment. Owners can delete their own; space admins can delete any comment.

Inputs: comment_id (required).

delete_pageA
Destructive

Move a page to trash, or permanently delete it. Permanent delete requires space admin.

Inputs: page_id (required), permanently.

delete_spaceA
Destructive

Delete a space and its pages. This cannot be undone.

Inputs: confirm (required), space_id (required).

duplicate_pageA

Duplicate a page and its accessible sub-pages within the same space.

Inputs: page_id (required).

export_pageA
Read-only

Export a page to a local file. A page without children is often a .md or .html file; include_children usually returns a zip. Writes to output_path or a temp file and returns the path plus content type.

Inputs: page_id (required), format, output_path, include_children, +1 more.

export_spaceA
Read-only

Export a whole space as a zip of Markdown or HTML. Writes to output_path or a temp file.

Inputs: space_id (required), format, output_path, include_attachments.

get_attachment_infoC
Read-only

Get metadata for an uploaded attachment.

Inputs: attachment_id (required).

get_breadcrumbsA
Read-only

Get the ancestor path from space root to a page.

Inputs: page_id (required).

get_commentsA
Read-only

List page-level comments. Content is returned as Markdown. Each comment is re-fetched so edits are not stale.

Inputs: page_id (required), limit, cursor.

get_current_userA
Read-only

Get the authenticated user and workspace context, detected Docmost version, and whether this session is read-only.

Inputs: no named parameters.

get_history_versionA
Read-only

Get a specific page history version by history ID.

Inputs: history_id (required).

get_pageA
Read-only

Get a page's metadata and Markdown body. Use format=json for raw ProseMirror.

Inputs: page_id (required), format.

get_page_historyC
Read-only

List revision history for a page.

Inputs: page_id (required), limit, cursor.

get_spaceA
Read-only

Get details for a space, including the current user's membership.

Inputs: space_id (required).

list_child_pagesA
Read-only

List direct child pages of a page, in sidebar order. Omit page_id and pass space_id for space-root pages.

Inputs: limit, cursor, page_id, space_id.

list_page_labelsA
Read-only

List labels on a page.

Inputs: page_id (required), limit, cursor.

list_pagesA
Read-only

List pages in a space. Default view=recent is recently updated pages (not the sidebar tree; General can look empty). Use view=tree for space-root pages in sidebar order, or list_child_pages for children of a page.

Inputs: space_id (required), view, limit, cursor.

list_space_membersA
Read-only

List members and groups in a space.

Inputs: space_id (required), limit, cursor.

list_spacesA
Read-only

List spaces the authenticated user can access.

Inputs: limit, cursor.

list_trashA
Read-only

List soft-deleted pages in a space.

Inputs: space_id (required), limit, cursor.

list_workspace_membersC
Read-only

List workspace members.

Inputs: limit, query, cursor.

move_pageA

Move a page under a new parent or to the space root. Position is computed unless you pass an explicit 5-12 character key.

Inputs: page_id (required), root, position, after_page_id, +1 more.

move_page_to_spaceA

Move a page and its accessible sub-pages to a different space.

Inputs: page_id (required), space_id (required).

remove_page_labelA

Remove a label from a page by label ID.

Inputs: page_id (required), label_id (required).

remove_space_memberC
Destructive

Remove a user or group from a space.

Inputs: space_id (required), user_id, group_id.

restore_pageA

Restore a soft-deleted page from trash.

Inputs: page_id (required).

search_attachmentsA
Read-only

Search file attachments by name or indexed text. This is an Enterprise feature; Community Edition returns 403. Prefer get_attachment_info when you already have an attachment id.

Inputs: query (required), limit, space_id.

search_pagesA
Read-only

Full-text search for pages the authenticated user can access. Optionally scope to a space.

Inputs: query (required), limit, offset, space_id.

search_suggestA
Read-only

Typeahead suggestions. Pages are included by default (set include_pages=false to skip). Users and groups default to off.

Inputs: query (required), limit, space_id, include_pages, +2 more.

update_commentA

Replace a comment body. You can update your own comments.

Inputs: markdown (required), comment_id (required).

update_pageA

Update a page title, icon, and/or Markdown body in place. Body writes use the server converter (v0.71+). operation defaults to replace.

Inputs: page_id (required), icon, title, markdown, +1 more.

update_spaceC

Update a space name, slug, or description.

Inputs: space_id (required), name, slug, description.

update_space_member_roleC

Change a space member or group's role.

Inputs: role (required), space_id (required), user_id, group_id.

upload_attachmentA

Upload a local file to a page. Returns attachment metadata including the /api/files/:id/:name URL path.

Inputs: page_id (required), file_path (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 41 tools

    Disambiguation4/5

    Most tools target distinct resource-action pairs, and near-pairs like move_page vs move_page_to_space and duplicate_page vs copy_page_to_space are clearly separated by destination scope. The main ambiguity is list_pages vs list_child_pages, since both can return space-root pages depending on options.

    Naming Consistency5/5

    The API uses a consistent snake_case verb_noun pattern throughout: create_page, update_page, delete_page, list_spaces, get_comments, add_space_members, etc. Prepositional variants like move_page_to_space and copy_page_to_space follow the same readable convention.

    Tool Count2/5

    Forty-one tools is beyond the 16-25 'heavy' range and feels over-split for an MCP surface. Some tools such as search_attachments are non-functional in the Community Edition, and the many page-move/copy/list variants make the surface larger than its core workflows require.

    Completeness4/5

    The surface covers the core wiki lifecycle well: pages, spaces, comments, attachments, labels, members, search, export, trash, and history read operations. Workable gaps remain: there is no restore-from-version operation, no attachment delete/download, and no workspace-level user/group management.

    Maintenance

    ActivitySlowing
    ResponsivenessLimited data

    Related MCP Connectors

    Related MCP Servers