Read in:
Русский

MCP-сервер

MCP превращает базу знаний в консультанта. Подключаете к AI-клиенту — получаете доступ к чужим знаниям в чате.

Как это работает

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│  AI-клиент      │────▶│   MCP-сервер    │────▶│  База знаний    │
│                 │◀────│   trip2g.com    │◀────│  автора         │
└─────────────────┘     └─────────────────┘     └─────────────────┘
     Вопрос              Векторный поиск         Заметки + инструкции
     Ответ               Релевантные заметки

Где подключить: Claude Desktop, Claude Code, Cursor, GitHub Copilot, Gemini CLI и другие клиенты с поддержкой MCP.

  1. Задаёте вопрос в чате
  2. MCP-сервер ищет релевантные заметки в базе автора
  3. Возвращает текст заметок и инструкции
  4. AI-клиент формирует ответ на основе этих знаний

Что внутри базы

Кроме знаний — инструкции для AI:

  • Как работать с этой базой
  • Какие методы вызывать в каких сценариях
  • В каком стиле отвечать

Автор обновляет базу или промпты — вы получаете апдейты сразу.

Подключение

MCP работает в разных клиентах. Пример для Claude Desktop:

  1. Откройте настройки Claude Desktop
  2. Перейдите в раздел MCP
  3. Добавьте сервер: /xxx
  4. Перезапустите приложение

В других клиентах (Cursor, Claude Code, Copilot) — аналогично через настройки MCP.

После подключения в чате появятся методы базы: search(), note_html(), similar() и другие.

Для авторов: как создать MCP-базу

Шаг 1. Опубликуйте знания

Перенесите заметки в Obsidian, опубликуйте через trip2g. Сервис автоматически создаст векторный индекс для поиска.

Шаг 2. Добавьте инструкции

Создайте заметку с инструкциями для AI. В свойствах укажите:

---
mcp_method: instructions
---

Пример инструкций:

# Role
You are a virtual assistant powered by a personal knowledge base.
Your answers MUST be grounded in the knowledge base content.

## Workflow
1. search(query) → find relevant notes
2. Pick 3 most relevant notes
3. Ask clarifying question to confirm direction
4. Load content with note_html(path) — use toc_path from search results to fetch only the relevant section of long notes
5. Synthesize answer through the lens of these notes
6. Cite sources with links

Шаг 2б. Системные инструкции (initialize)

Чтобы клиент получал инструкции автоматически при подключении, создайте заметку с mcp_method: initialize:

---
mcp_method: initialize
free: true
---

Клиент получает эти инструкции во время MCP-хендшейка, до любых вызовов инструментов. Добавьте free: true, если хотите, чтобы анонимные пользователи тоже получали инструкции.

Шаг 3. Настройте доступ

В настройках сайта включите MCP-сервер. Доступ может быть:

  • Открытый — для всех
  • По подписке — только для платных подписчиков

Кастомные инструменты и дискавери

Любая заметка с полем mcp_method в фронтматтере (кроме зарезервированных: initialize, search, similar, note_html, expand, federated_search, federated_similar, federated_note_html, federated_expand) становится вызываемым инструментом. Инструмент автоматически появляется в tools/list — никакой дополнительной настройки не нужно.

---
mcp_method: wiki_guide
mcp_description: Как ориентироваться в этой базе
---

Добавьте mcp_description, чтобы управлять описанием инструмента для AI. Если не указано — используется заголовок заметки.

Контроль доступа работает: заметка в закрытом подграфе видна только авторизованным пользователям с доступом к этому подграфу. Анонимные и пользователи без подписки не увидят её в tools/list и не смогут вызвать.

Именованные точки входа (?method=)

Одна база знаний может обслуживать несколько агентских ролей. У каждой роли — своя заметка с инструкциями, выбирается через URL-параметр ?method=:

/_system/mcp?method=wiki
/_system/mcp?method=support
/_system/mcp?method=onboarding

Когда клиент подключается к /_system/mcp?method=wiki, сервер отправляет содержимое заметки с mcp_method: wiki как инструкции initialize — вместо дефолтной заметки mcp_method: initialize. Все инструменты остаются теми же; меняются только системные инструкции.

Контроль доступа точек входа работает по тем же правилам что и обычные заметки. Если заметка точки входа в платном подграфе — только подписчики могут использовать эту точку входа. Анонимные пользователи получат ошибку Method not found. Это позволяет скрывать премиальные персоны за пейволлом.

Пример настройки:

---
mcp_method: wiki
free: true
---
Ты помощник по вики. Ищи в базе знаний и отвечай кратко.
---
mcp_method: premium_advisor
subgraphs: premium
---
Ты старший советник. Давай углублённый анализ. Только для подписчиков.

Клиенты подключаются как:

  • /_system/mcp — дефолтная персона (mcp_method: initialize)
  • /_system/mcp?method=wiki — публичный вики-ассистент
  • /_system/mcp?method=premium_advisor — премиальный советник (требует подписку)

Методы MCP

Метод Описание
search(query) Векторный поиск по базе. Возвращает компактные сниппеты — хлебную крошку заголовков и точный toc_path для каждого совпадения, без полного оглавления
expand(pid, toc_path?) Обход оглавления заметки по уровням. Возвращает прямых детей узла оглавления, чтобы спускаться по структуре, не загружая заметку. Подробнее: ru/user/expand
note_html(path, toc_path?) Полная заметка или отдельный раздел
similar(path) Похожие заметки
instructions() Инструкции автора для AI
editor_role() Стиль редактуры ответов
graphql_introspection(pattern) Изучить схему GraphQL — возвращает типы и операции по паттерну плюс связанные типы. Требует включённый admin-режим у API-ключа. См. ru/user/agent_admin.
graphql_request(query, variables?) Выполнить любой GraphQL-запрос или мутацию с правами администратора. Требует включённый admin-режим у API-ключа. См. ru/user/agent_admin. Пример использования: восстановление перезаписанных заметок.

Спуск по структуре: search → expand → note_html

Коротко: search возвращает компактные результаты — хлебную крошку заголовков и точный toc_path для каждого совпадения, а не всё оглавление целиком. Чтобы пройти по структуре заметки, вызовите expand — он обходит оглавление по одному уровню за раз, затем note_html(toc_path=[...]) читает нужный раздел. Так расход токенов остаётся низким: вы загружаете только те разделы, которые реально нужны.

search — компактные сниппеты и местоположение совпадений

Каждое совпадение search содержит:

  • хлебную крошку заголовков (title > section > subsection) — указывает на приблизительный раздел, которому принадлежит фрагмент;
  • точное поле toc_path (массив строк) — указывает на самый вложенный раздел, которому принадлежит этот фрагмент.

toc_path — массив-цепочка, однозначно идентифицирующий раздел. Заголовки могут повторяться под разными родительскими разделами; массив их разграничивает. Например, два раздела с одинаковым названием «Введение» под «Главой 1» и «Главой 2» дадут разные пути: ["Глава 1", "Введение"] и ["Глава 2", "Введение"].

Результаты search больше не содержат полного плоского массива toc. Чтобы изучить структуру заметки за пределами найденного раздела, используйте expand (ниже).

expand — обход оглавления по уровням

expand возвращает прямых детей узла оглавления (прогрессивное раскрытие), так что агент может пройти по структуре заметки, не загружая её содержимое и не запрашивая всё оглавление сразу. Подробное описание инструмента и рабочего цикла: ru/user/expand.

Принимает ссылку на заметку (pid, note_id, href или path) и необязательный toc_path:

  • Опустите toc_path (или передайте []), чтобы получить разделы верхнего уровня.
  • Передайте toc_path, чтобы получить подразделы этого раздела.
expand(pid=42)                                  → разделы верхнего уровня
expand(pid=42, toc_path=["Глава 1"])            → подразделы Главы 1

Каждый узел-ребёнок содержит:

{
  "title": "Введение",
  "level": 2,
  "path": ["Глава 1", "Введение"],
  "has_children": false
}
  • title — текст заголовка.
  • level — уровень заголовка (1–6).
  • path — полная хлебная крошка до этого узла; передайте её обратно как toc_path, чтобы раскрыть глубже или прочитать через note_html.
  • has_children — есть ли у узла свои подразделы. По нему решают, спускаться ли дальше через expand или читать лист через note_html.

note_html — получить отдельный раздел

note_html принимает необязательный параметр toc_path. Передайте значение path из совпадения search или из ребёнка expand, чтобы получить HTML только этого раздела, а не всей заметки.

note_html(pid=42, toc_path=["Глава 1", "Введение"])

Удобно для длинных заметок: найдите раздел через search или expand, затем запросите только его через note_html. Либо передайте match_id из совпадения search — получите сфокусированное окно вокруг конкретного попадания.

Экономия токенов с навигацией по оглавлению

Длинные заметки при полной загрузке расходуют много токенов. Механика toc_path и expand позволяет агенту загружать только нужный раздел.

Как это работает:

  • search возвращает компактные совпадения — у каждого хлебная крошка заголовков (приблизительное местоположение) и toc_path (крошка самого вложенного раздела с совпадением). Полное оглавление документа он не возвращает.
  • expand обходит оглавление по одному уровню. Каждый ребёнок сообщает has_children, так что вы спускаетесь только там, где нужно.
  • note_html принимает toc_path — передайте любой path из совпадения search или ребёнка expand, чтобы получить HTML только этого раздела, а не всей заметки.

Рекомендуемый сценарий:

  1. search(query) — получить компактные совпадения с хлебной крошкой заголовков и matches[].toc_path (местоположение совпадения).
  2. note_html(pid=N, toc_path=match.toc_path) — загрузить только найденный раздел. Либо, чтобы сначала изучить структуру заметки:
  3. expand(pid=N) — список разделов верхнего уровня, затем expand(pid=N, toc_path=[...]) для спуска в раздел, ориентируясь на has_children.
  4. note_html(pid=N, toc_path=[...]) — прочитать найденный лист-раздел.

Для поиска и получения заметок по федеративным базам смотрите ru/user/federation. Федеративные базы поддерживают тот же спуск: federated_searchfederated_expandfederated_note_html. Интерфейс federated_expand повторяет expand, применённый к удалённой базе.

Сценарии использования

Консультант по чужим знаниям

Эксперт собрал базу знаний по теме. Вы подключили его MCP — получили консультанта, который отвечает в стиле эксперта, ссылается на его материалы.

Продажа доступа к знаниям

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

  • Доступ к актуальным знаниям
  • Обновления промптов и методов
  • Консультанта в своём чате

Автор получает:

  • Регулярный доход от подписок
  • Мотивацию поддерживать базу актуальной

Личные токены доступа

Личные токены позволяют аутентифицироваться на MCP-сервере без браузера и сессии. Используйте их для интеграции с CLI-утилитами, скриптами или внешними приложениями.

Создание токена

  1. Перейдите в Пользователь → Токены в настройках аккаунта
  2. Нажмите Создать токен
  3. Введите имя (например, "Claude Desktop", "API скрипт")
  4. Выберите срок действия: 30 дней, 90 дней (по умолчанию), 1 год или Не истекает
  5. Нажмите Создать
  6. Скопируйте токен — показывается только один раз. Сохраните в безопасном месте

Использование токена

Два формата:

HTTP заголовок Bearer:

curl https://yoursite.com/_system/mcp/tools/call \
  -H "Authorization: Bearer t2g_…" \
  -d '{"method":"search","params":{"query":"дизайн"}}'

Параметр в URL:

curl 'https://yoursite.com/_system/mcp/tools/call?token=t2g_…' \
  -d '{"method":"search","params":{"query":"дизайн"}}'

Контроль доступа

  • Администратор: видит все заметки и все подграфы
  • Обычный пользователь: видит только заметки в подписанных подграфах
  • Токены наследуют ваши разрешения — без дополнительных привилегий

Отзыв токена

  1. Перейдите в Пользователь → Токены
  2. Найдите токен и нажмите Отозвать
  3. Токен прекращает работать немедленно (в течение ~30 секунд при кэшировании)

Аутентификация по API-ключу

MCP принимает те же API-ключи, что использует плагин синхронизации Obsidian. Агенту, у которого уже есть ключ из подготовленного vault, не нужна отдельная настройка для MCP.

Использование ключа

curl https://yoursite.com/_system/mcp \
  -H "X-API-Key: <ваш-api-ключ>" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"tools/list","id":1}'

Уровень доступа

Аутентификация по API-ключу даёт доступ к контенту на уровне администратора — все заметки и подграфы.

Включить admin-инструменты GraphQL

Чтобы агент получил доступ к graphql_introspection и graphql_request:

  1. Перейдите в Администрирование → API-ключи
  2. Найдите ключ
  3. Включите MCP admin-инструменты

После этого агент сможет изучать схему GraphQL и вызывать любые мутации. Полный сценарий и примеры — в ru/user/agent_admin.

Telegram-боты (планируется)

В будущем — боты, которые отвечают на вопросы напрямую, без подключения к вашему чату. База отдаёт ответ, бот публикует его.

Приватность

  • Ваши данные не утекают — MCP только отдаёт текст из базы автора
  • Контекст остаётся у вас — сервер получает поисковые запросы, но не видит контекст чата, ваши ответы и файлы
  • Инструкции выполняются локально — на вашем клиенте, не на сервере базы
  • История не хранится — сервер не логирует запросы