Skip to main content
Glama

yonote-mcp

pipeline coverage

MCP-сервер для управления рабочим пространством Yonote через AI-ассистенты (Claude, Cursor и другие).

Предоставляет 56 инструментов для работы с документами, коллекциями, пользователями, группами, комментариями, ссылками общего доступа, избранным, ревизиями, событиями и просмотрами.

Возможности

Группа

Кол-во

Описание

Документы

18

CRUD, поиск, архивация, перемещение, управление доступом

Коллекции

10

Управление коллекциями, участниками, экспорт

Пользователи

5

Список, приглашение, блокировка, активация

Группы

6

Управление группами и их участниками

Комментарии

4

CRUD комментариев к документам

Шаринг

4

Публичные ссылки на документы

Избранное

3

Управление избранным

Ревизии

2

История версий документов

События

1

Аудит-лог рабочего пространства

Просмотры

2

Статистика просмотров

Авторизация

1

Информация о текущем пользователе и команде

Related MCP server: Google Workspace MCP Server

Требования

  • Node.js >= 18

  • npm

  • API-токен Yonote

Установка

git clone <url-репозитория>
cd yonote-mcp
npm install
npm run build

Получение API-токена

  1. Откройте Yonote и перейдите в Настройки -> API

  2. Создайте новый персональный API-токен

  3. Используйте токен при подключении (см. ниже)

Токен действует от имени вашего пользователя и имеет те же права доступа.

Конфигурация

Токен и проект можно передать двумя способами:

Способ 1: CLI-аргументы (рекомендуется)

Передавайте параметры прямо в конфигурации MCP-клиента — без .env файлов:

Аргумент

Обязательный

Описание

--token

Да

API-токен Yonote

--project

Нет

Название проекта (формирует URL https://{project}.yonote.ru/api)

--base-url

Нет

Полный базовый URL API (если нужен нестандартный URL)

По умолчанию используется https://app.yonote.ru/api. Если передан --project, URL формируется автоматически.

Способ 2: Переменные окружения

Создайте файл .env на основе .env.example:

cp .env.example .env
YONOTE_API_TOKEN=ваш-токен
YONOTE_PROJECT=ваш-проект
YONOTE_API_BASE_URL=https://ваш-проект.yonote.ru/api

CLI-аргументы имеют приоритет над переменными окружения.

Локальное подключение (stdio)

При локальном подключении MCP-клиент запускает сервер как дочерний процесс и общается с ним через stdin/stdout.

Claude Desktop

Отредактируйте файл конфигурации:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "yonote": {
      "command": "node",
      "args": [
        "/абсолютный/путь/к/yonote-mcp/dist/index.js",
        "--token", "ваш-токен",
        "--project", "ваш-проект"
      ]
    }
  }
}

Перезапустите Claude Desktop.

Claude Code

claude mcp add yonote -- node /абсолютный/путь/к/yonote-mcp/dist/index.js --token ваш-токен --project ваш-проект

Или добавьте в .claude/settings.json проекта:

{
  "mcpServers": {
    "yonote": {
      "command": "node",
      "args": [
        "/абсолютный/путь/к/yonote-mcp/dist/index.js",
        "--token", "ваш-токен",
        "--project", "ваш-проект"
      ]
    }
  }
}

Cursor

Откройте Settings -> MCP Servers -> Add new MCP server и укажите:

{
  "mcpServers": {
    "yonote": {
      "command": "node",
      "args": [
        "/абсолютный/путь/к/yonote-mcp/dist/index.js",
        "--token", "ваш-токен",
        "--project", "ваш-проект"
      ]
    }
  }
}

Другие MCP-клиенты

Любой MCP-клиент с поддержкой stdio-транспорта может использовать этот сервер. Общий паттерн:

  • command: node

  • args: ["/путь/к/yonote-mcp/dist/index.js", "--token", "ваш-токен", "--project", "ваш-проект"]

Удалённое развертывание (HTTP)

Для подключения с удалённых машин сервер поддерживает режим Streamable HTTP транспорта.

Запуск в HTTP-режиме

YONOTE_API_TOKEN=ваш-токен TRANSPORT=http PORT=3000 node dist/index.js

Сервер запустится на http://0.0.0.0:3000/mcp.

Также доступен эндпоинт /health для проверки состояния.

Подключение удалённого клиента

В конфигурации MCP-клиента укажите URL сервера:

{
  "mcpServers": {
    "yonote": {
      "url": "http://ваш-сервер:3000/mcp"
    }
  }
}

Docker

Соберите образ (убедитесь, что проект скомпилирован — npm run build):

docker build -t yonote-mcp .

Запустите контейнер:

docker run -d \
  -p 3000:3000 \
  -e YONOTE_API_TOKEN=ваш-токен \
  --name yonote-mcp \
  yonote-mcp

Подключение клиента — аналогично HTTP-режиму выше.

Docker Compose

services:
  yonote-mcp:
    build: .
    ports:
      - "3000:3000"
    environment:
      - YONOTE_API_TOKEN=ваш-токен
    restart: unless-stopped
docker compose up -d

Рекомендации по продакшену

  • Используйте HTTPS (через reverse proxy — nginx, Caddy, Traefik)

  • Не зашивайте токен в Docker-образ — передавайте через переменные окружения или секреты

  • Ограничьте доступ к серверу по сети (firewall, VPN)

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

Переменная

Обязательная

По умолчанию

Описание

YONOTE_API_TOKEN

Да

—

API-токен Yonote (или --token)

YONOTE_PROJECT

Нет

app

Название проекта (или --project)

YONOTE_API_BASE_URL

Нет

https://{project}.yonote.ru/api

Базовый URL API (или --base-url)

TRANSPORT

Нет

stdio

Транспорт: stdio или http

PORT

Нет

3000

Порт HTTP-сервера (только для TRANSPORT=http)

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

Инструмент

Описание

documents_list

Список документов с фильтрацией по коллекции, пользователю, статусу

documents_info

Информация о документе по ID или share ID

documents_search

Полнотекстовый поиск по документам

documents_search_titles

Быстрый поиск по заголовкам

documents_create

Создание документа (Markdown)

documents_update

Обновление заголовка, текста и свойств

documents_delete

Перемещение в корзину или удаление

documents_archive

Архивация документа

documents_restore

Восстановление из архива или корзины

documents_move

Перемещение в другую коллекцию

documents_duplicate

Создание копии документа

documents_drafts

Список черновиков текущего пользователя

documents_viewed

Недавно просмотренные документы

documents_unpublish

Возврат в статус черновика

documents_users

Список пользователей с доступом

documents_add_user

Предоставление доступа пользователю

documents_remove_user

Отзыв доступа у пользователя

documents_children

Вложенная структура дочерних документов

Инструмент

Описание

collections_list

Список всех доступных коллекций

collections_info

Информация о коллекции

collections_create

Создание коллекции

collections_update

Обновление свойств коллекции

collections_delete

Удаление коллекции со всеми документами

collections_documents

Дерево документов коллекции

collections_add_user

Предоставление доступа пользователю

collections_remove_user

Отзыв доступа у пользователя

collections_memberships

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

collections_export

Экспорт коллекции (Markdown/HTML/JSON)

Инструмент

Описание

users_list

Список участников рабочего пространства

users_info

Информация о пользователе

users_create

Приглашение нового пользователя

users_suspend

Блокировка учётной записи

users_activate

Разблокировка учётной записи

Инструмент

Описание

groups_list

Список всех групп

groups_info

Информация о группе

groups_create

Создание группы

groups_update

Обновление имени группы

groups_delete

Удаление группы

groups_memberships

Список участников группы

Инструмент

Описание

comments_list

Список комментариев к документу или в коллекции

comments_create

Добавление комментария к документу

comments_update

Обновление комментария

comments_delete

Удаление комментария

Инструмент

Описание

shares_list

Список расшаренных документов/коллекций

shares_info

Информация о ссылке общего доступа

shares_create

Создание публичной ссылки

shares_delete

Отзыв публичной ссылки

Инструмент

Описание

stars_list

Список избранных документов и коллекций

stars_create

Добавление в избранное

stars_delete

Удаление из избранного

Инструмент

Описание

revisions_list

История версий документа

revisions_info

Получение конкретной версии документа

Инструмент

Описание

events_list

Аудит-лог рабочего пространства

Инструмент

Описание

views_list

Статистика просмотров документа

views_create

Фиксация просмотра документа

Инструмент

Описание

auth_info

Информация о текущем пользователе и команде

Разработка

npm run build    # Компиляция TypeScript
npm start        # Запуск (stdio-режим)
npm test         # Запуск тестов

Структура проекта

src/
├── index.ts          # Точка входа, настройка транспорта
├── api-client.ts     # HTTP-клиент для Yonote API
└── tools/            # Инструменты MCP
    ├── documents.ts
    ├── collections.ts
    ├── users.ts
    ├── groups.ts
    ├── comments.ts
    ├── shares.ts
    ├── stars.ts
    ├── revisions.ts
    ├── events.ts
    ├── views.ts
    └── auth.ts

Available Tools

110 tools
attachments_createB

Create an attachment upload URL.

Inputs: name (required), size (required), contentType (required), documentId.

attachments_deleteB

Delete an attachment.

Inputs: id (required).

attachments_listA

List all attachments.

Inputs: no named parameters.

attachments_redirectB

Get redirect URL for an attachment.

Inputs: id (required).

attachments_sizeA

Get total size of all attachments.

Inputs: no named parameters.

auth_configB

Get authentication configuration for the workspace.

Inputs: no named parameters.

auth_infoA

Get authentication details for the current API key (current user, team info).

Inputs: no named parameters.

collections_add_groupB

Grant a group access to a collection.

Inputs: id (required), groupId (required).

collections_add_userB

Grant a user access to a collection.

Inputs: id (required), userId (required).

collections_createB

Create a new collection.

Inputs: name (required), color, private, description.

collections_deleteA

Delete a collection and all its documents.

Inputs: id (required).

collections_documentsA

Get the document hierarchy tree of a collection.

Inputs: id (required).

collections_exportC

Export a collection.

Inputs: id (required).

collections_export_allB

Export all collections.

Inputs: no named parameters.

collections_group_membershipsB

List group memberships of a collection.

Inputs: id (required), limit, query, offset, +1 more.

collections_infoC

Get detailed information about a collection.

Inputs: id (required).

collections_listB

List all accessible collections.

Inputs: limit, offset, nextPath.

collections_membershipsA

List individual user memberships of a collection.

Inputs: id (required), limit, query, offset, +1 more.

collections_remove_groupA

Revoke a group's access to a collection.

Inputs: id (required), groupId (required).

collections_remove_userA

Revoke a user's access to a collection.

Inputs: id (required), userId (required).

collections_updateC

Update a collection's properties.

Inputs: id (required), name, color, description.

comments_createC

Add a comment to an entity (e.g. entityType: "document").

Inputs: text (required), entityId (required), entityType (required), parentCommentId.

comments_deleteB

Delete a comment.

Inputs: id (required).

comments_infoC

Get information about a comment.

Inputs: id, paranoid.

comments_listC

List comments for an entity (e.g. entityType: "document").

Inputs: entityType (required), limit, offset, entityId, +1 more.

comments_resolveC

Resolve a comment thread.

Inputs: id (required).

comments_threadC

Get a comment thread.

Inputs: id, limit, offset, nextPath, +1 more.

comments_updateB

Update an existing comment.

Inputs: id (required), text (required).

database_rows_listC

List rows in a database document.

Inputs: parentDocumentId (required), filter, orderBy, direction, +1 more.

database_transactionB

Execute a database transaction with multiple changes.

Inputs: changes (required).

documents_add_userC

Grant a user access to a document.

Inputs: id (required), userId (required), permission.

documents_archiveA

Archive a document to hide it from the main view.

Inputs: id (required).

documents_childrenA

Get the nested child document structure of a document.

Inputs: id (required).

documents_copyB

Create a copy of a document.

Inputs: id (required), collectionId, parentDocumentId.

documents_createB

Create a new document. Provide title and text in Markdown.

Inputs: title (required), collectionId (required), text, publish, +3 more.

documents_deleteA

Move a document to trash.

Inputs: id (required).

documents_draftsC

List current user's draft documents.

Inputs: sort, limit, offset, nextPath, +3 more.

documents_exportD

Export a document.

Inputs: id, shareId.

documents_importB

Import a document from a file.

Inputs: file (required), publish, template, collectionId, +1 more.

documents_infoA

Get detailed information about a document by ID or share ID.

Inputs: id, shareId.

documents_listC

List documents. Filter by collection, user, or other criteria.

Inputs: sort, limit, offset, userId, +6 more.

documents_moveB

Move a document to a different collection or parent.

Inputs: id (required), collectionId, parentDocumentId.

documents_pinC

Pin a document in its collection.

Inputs: id (required).

documents_pinnedB

List pinned documents in a collection.

Inputs: collectionId (required).

documents_remove_userA

Revoke a user's access to a document.

Inputs: id (required), userId (required).

documents_restoreB

Restore an archived or deleted document.

Inputs: id (required), revisionId.

documents_search_titlesA

Fast search by document titles only.

Inputs: query (required), nextPath, isPublished, collectionId.

documents_starC

Star a document.

Inputs: id (required).

documents_starredB

List starred documents.

Inputs: sort, limit, offset, nextPath, +1 more.

documents_templatizeC

Convert a document into a template.

Inputs: id (required).

documents_unpinB

Unpin a document from its collection.

Inputs: id (required).

documents_unpublishB

Move a published document back to draft status.

Inputs: id (required).

documents_unstarB

Remove star from a document.

Inputs: id (required).

documents_updateA

Update an existing document's title, text, or other properties.

Inputs: id (required), done, text, title, +3 more.

documents_usersA

List all users who have access to a document.

Inputs: id (required), query.

documents_viewedB

List recently viewed documents.

Inputs: sort, limit, offset, nextPath, +1 more.

events_listB

List workspace events (audit log).

Inputs: name, sort, limit, offset, +6 more.

file_operations_infoC

Get information about a file operation.

Inputs: id (required).

file_operations_listC

List file operations.

Inputs: type (required), sort, limit, offset, +2 more.

file_operations_redirectA

Get redirect URL for a file operation result.

Inputs: id (required).

groups_add_userB

Add a user to a group.

Inputs: id (required), userId (required).

groups_createC

Create a new user group.

Inputs: name (required).

groups_deleteB

Delete a group.

Inputs: id (required).

groups_infoB

Get detailed information about a group.

Inputs: id (required).

groups_listA

List all groups in the workspace.

Inputs: sort, limit, offset, nextPath, +1 more.

groups_membershipsB

List members of a group.

Inputs: id (required), limit, query, offset, +1 more.

groups_remove_userC

Remove a user from a group.

Inputs: id (required), userId (required).

groups_updateA

Update a group's name.

Inputs: id (required), name (required).

ldap_createB

Create LDAP authentication provider.

Inputs: ssl (required), base (required), port (required), user (required), +5 more.

ldap_loginC

Login via LDAP.

Inputs: email (required), password (required), providerId (required).

ldap_pingC

Test LDAP connection.

Inputs: ssl (required), base (required), port (required), user (required), +4 more.

loop_channelsA

List channels for a Loop team.

Inputs: teamId (required).

loop_commandsA

List available Loop commands.

Inputs: no named parameters.

loop_postC

Post a collection update to Loop.

Inputs: channel (required), collectionId (required).

loop_teamsA

List available Loop teams.

Inputs: no named parameters.

provider_deleteB

Delete an authentication provider.

Inputs: type (required).

provider_enableB

Enable or disable an authentication provider.

Inputs: type (required), isActive (required).

provider_infoB

Get authentication provider information.

Inputs: no named parameters.

revisions_infoB

Get a specific document revision/snapshot.

Inputs: id (required).

revisions_listC

List version history of a document.

Inputs: sort, limit, offset, nextPath, +1 more.

share_passwords_createB

Create a password for a share link.

Inputs: shareId (required).

shares_createA

Create a public share link for a document.

Inputs: documentId (required).

shares_infoC

Get information about a share link.

Inputs: id, documentId.

shares_listC

List shared documents.

Inputs: sort, limit, offset, nextPath, +1 more.

shares_revokeB

Revoke a public share link.

Inputs: id (required).

shares_updateC

Update a share link's properties.

Inputs: id (required), link, expiresAt, exposesAt, +2 more.

stars_createB

Add a document or collection to favorites.

Inputs: documentId, collectionId.

stars_deleteB

Remove an item from favorites.

Inputs: id (required).

stars_listA

List user's favorite (starred) documents and collections.

Inputs: limit, offset.

subscriptions_createC

Subscribe to document events.

Inputs: event (required), documentId (required).

subscriptions_deleteC

Delete a subscription.

Inputs: id (required).

subscriptions_infoC

Get subscription information.

Inputs: event (required), documentId (required).

sync_blocks_createC

Create sync blocks.

Inputs: ids, documentId.

sync_blocks_deleteC

Delete sync blocks.

Inputs: ids, documentId.

sync_blocks_listC

List sync blocks for a document.

Inputs: documentId.

sync_blocks_list_insertsB

List inserts of a sync block.

Inputs: syncBlockId.

telegram_commandsC

List available Telegram commands.

Inputs: group.

telegram_postB

Post a collection update to Telegram.

Inputs: collectionId (required).

users_activateA

Re-activate a suspended user account.

Inputs: id (required).

users_createC

Invite a new user to the workspace.

Inputs: name (required), email (required), role.

users_deleteC

Delete a user account.

Inputs: id (required).

users_demoteB

Demote a user from admin.

Inputs: id (required).

users_infoC

Get detailed information about a user.

Inputs: id (required).

users_listC

List workspace members.

Inputs: sort, limit, query, filter, +3 more.

users_promoteB

Promote a user to admin.

Inputs: id (required).

users_suspendB

Suspend (disable) a user account.

Inputs: id (required).

users_updateB

Update current user's profile.

Inputs: name, avatarUrl.

views_createC

Record a document view.

Inputs: documentId (required).

views_listC

List view statistics for a document.

Inputs: documentId (required), limit, offset.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    C2.6/5.0

    Scored across 110 tools

    Disambiguation2/5

    The toolset has multiple overlapping boundaries, especially among document listing variants (documents_list, documents_search, documents_search_titles, documents_drafts, documents_viewed) and duplicate star concepts (documents_starred vs stars_list, documents_star vs stars_create). Auth-related tools (auth_info, auth_config, provider_info) and redirect tools (attachments_redirect, file_operations_redirect) also blur together. Agents will frequently struggle to pick the correct tool.

    Naming Consistency3/5

    Most tools follow a resource_prefix + action pattern such as documents_create, collections_update, and comments_resolve. However, the set also contains bare noun names like documents_drafts, documents_viewed, collections_documents, groups_memberships, and loop_teams, plus verb-first outliers like ldap_login and loop_post. The overall pattern is recognizable but not consistently applied.

    Tool Count1/5

    With 110 tools, this server is far over-scoped for a focused document-management MCP. It bundles documents, collections, users, groups, auth, LDAP, Telegram, Loop, sync blocks, database rows, attachments, file operations, subscriptions, and more into one namespace. This creates an unwieldy surface that is expensive for agents to navigate and reason about.

    Completeness4/5

    The domain coverage is extensive: documents, collections, users, groups, comments, shares, revisions, subscriptions, attachments, and authentication all have substantial lifecycle operations. Minor gaps exist, such as no permanent document purge, no restore-from-revision, no explicit publish action, and limited database row operations, but core workflows are generally well covered.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers