mcp.ru.md
docs/i18n/integrations/mcp.ru.md
MCP — подключение Tesserae к Claude Code, Codex, Cursor
<!-- translations:start -->
English · 한국어 · 中文 · 日本語 · Español · Français · Deutsch
<!-- translations:end -->
Tesserae поставляется со stdio-сервером Model Context Protocol, который открывает скомпилированный типизированный граф любому MCP-совместимому клиенту: Claude Code, Codex CLI, Cursor, Claude Desktop и другим. Сервер объявляет три полноценные поверхности MCP — tools, resources и prompts — поэтому клиенты могут как запрашивать граф по требованию, так и дешево подгружать контекст из канонических URI.
Предварительные требования
Сервер читает из .tesserae/graph.json, поэтому требуется однократная компиляция:
cd /path/to/your-project
tesserae init # interactive; or --yes for non-interactive
tesserae compile # deterministic, no LLM calls, no API keys
Перекомпилируйте при каждом изменении источников. Сервер подхватит новый граф при следующем вызове инструмента без необходимости перезапуска.
1) Сгенерируйте конфиг клиента
tesserae projects mcp-config
Выводит JSON-фрагмент, примерно такой:
{
"mcpServers": {
"tesserae": {
"command": "python3",
"args": [
"-m", "tesserae.mcp_server",
"--graph", "/path/to/your-project/.tesserae/graph.json"
]
}
}
}
Точный путь подставляется из текущего проекта. Передайте --name <alias>, если хотите задать имя записи сервера, отличное от tesserae.
2) Вставьте его в свой MCP-клиент
| Клиент | Расположение конфига |
|---|---|
| Claude Code | ~/.claude/mcp-servers.json (или ~/.config/claude-code/mcp-servers.json) |
| Claude Desktop | macOS: ~/Library/Application Support/Claude/claude_desktop_config.json |
| Codex CLI | ~/.config/codex/mcp-servers.json |
| Cursor | Settings → MCP Servers → вставьте JSON |
| Hermes | ~/.hermes/config.toml (используйте TOML-эквивалентный блок, выводимый mcp-config --format hermes) |
После редактирования перезапустите клиент. Следующая сессия подключится и обнаружит поверхность Tesserae.
3) Что видит клиент
Tools — вызываются моделью
Каждый инструмент принимает необязательный graph_path или project (псевдоним из реестра), поэтому один сервер может разрешать любой зарегистрированный vault при каждом вызове. При отсутствии — откат к активному проекту.
Запросы к графу и извлечение
| Инструмент | Назначение |
|---|---|
schema | Управляемый словарь node, edge и wiki-kind |
graph_summary | Количество узлов и рёбер и распределение типов для активного проекта |
search_nodes | Фильтрация публичных узлов графа по query, type/types, kind, limit, гибридным mode/weights; include_superseded показывает выведенные из обращения узлы |
node_context | Узел + его инцидентные рёбра + соседние узлы. use_ppr ранжирует соседей персонализированным PageRank вместо обхода в 1 шаг; include_superseded и limit ограничивают результат |
embedding_status | Сообщает об активном бэкенде эмбеддингов, питающем гибридный поиск |
search_facts | Временные факты, спроецированные из графа (в стиле Graphiti); current_only фильтрует до актуальных |
timeline | Факты, упорядоченные по valid_from, для лонгитюдного представления |
graph_ppr | Персонализированный PageRank с затравкой в одном или нескольких seed_node_id; возвращает top-K наиболее релевантных узлов с настраиваемыми alpha, directed, edge_type_weights |
wiki_page | Тело скомпилированной markdown-страницы для узла плюс внутренние ссылки, на которые она ссылается |
raw_source | Исходный markdown (с ограничением до 16 KB) |
lint_report | Последние находки lint, полученные на этапе компиляции (с ограничением до 64 KB) |
Компилятор контекста по запросу (Phase 7)
| Инструмент | Назначение |
|---|---|
compile_context | Компилирует адаптированный документ контекста со ссылками для query или явных seeds. Обходит подграф ограниченной глубины (depth, 1–10, по умолчанию 2), ранжирует через PPR и заполняет символьный budget (по умолчанию 32000; 0 — без ограничения). По умолчанию детерминирован; при synthesize: true создаётся написанный LLM нарративный срез "topic". Возвращает body, citations, selected_node_ids и char_budget_used |
list_communities | Перечисляет узлы COMMUNITY_SUMMARY, созданные пост-компиляционным проходом, по числу участников (min_size, limit); через node_context пройдите по рёбрам summarizes обратно к участникам |
fresh_insights | Находки сессий, ранжированные по баллу затухания в стиле Эббингауза (сначала новые и наиболее посещаемые); отфильтровывает находки, вытесненные более новыми почти-дубликатами. Необязательные kind, limit, include_superseded |
Память сессий (см. sessions.md)
| Инструмент | Назначение |
|---|---|
list_sessions | Конверты сессий (id, started_at, title, files_touched, счётчики находок) для активного проекта; since, limit |
find_session_findings | Все находки сессий, связанные с node_id через discussed_in / references, с возможной фильтрацией по kinds (insight / decision / question / todo / hypothesis / takeaway) |
find_code_symbol_mentions | Расширяет находку сессии до символов CodeFunction/CodeClass/CodeMethod, которые она упоминает, через рёбра discusses из опционального прохода связывания insight↔symbol |
Вопрос-ответ и реестр
| Инструмент | Назначение |
|---|---|
ask | Вопрос–ответ на естественном языке через настроенный бэкенд памяти (raganything, cognee или скомпилированную wiki). backend, top_k; веерный запрос по нескольким vault через scope/scope_aliases; claude_config_dir для маршрутизации между аккаунтами |
list_projects / register_project / activate_project / unregister_project | Управление реестром нескольких проектов |
Управляемая настройка
| Инструмент | Назначение |
|---|---|
tesserae_setup_plan | Определяет окружение и предлагает план настройки в виде JSON. Только чтение — никогда не трогает .tesserae/ |
tesserae_setup_apply | Применяет (возможно отредактированный) план: записывает .tesserae/config.json и выполняет защищённые действия установки/запуска. Защищено confirm_install_actions / confirm_run_actions |
Resources — автоматически подгружаются в контекст модели
URI, которые клиент может подтянуть через свой пикер ресурсов, не тратя ход инструмента:
tesserae://graph/schema— та же полезная нагрузка, что и у инструментаschema, готовая как статический контекстtesserae://graph/summary— сводка по активному проектуtesserae://lint-report— последний lint-отчет в виде markdown
Плюс шаблоны URI, которые клиент может конструировать по требованию:
tesserae://wiki/{kind}/{slug}— тело любой скомпилированной wiki-страницыtesserae://raw/{source_path}— любой исходный markdown
Prompts — исследовательские шаблоны в один клик
Эти шаблоны появляются в slash-меню клиента (например, в палитре / Claude Code):
| Промпт | Аргументы | Что делает |
|---|---|---|
summarize-paper | slug (обязательный) | Вызывает node_context + wiki_page + опционально raw_source, затем возвращает структурированное саммари: вклад, набросок метода, ключевые результаты, ограничения, связанные узлы |
find-related-work | topic (обязательный), limit | Объединяет search_nodes + node_context для топ-K связанных элементов с обоснованиями релевантности |
compare-approaches | a, b (оба обязательные) | Подтягивает node_context для обоих + search_facts для заявлений о производительности; возвращает сравнение бок о бок с синтезом |
gap-analysis | topic (необязательный) | Выявляет нерешенные открытые вопросы, отсутствующие бенчмарки, недостаточно подкрепленные утверждения |
triage-open-questions | нет | Перечисляет все узлы OpenQuestion, группирует по теме, предлагает порядок приоритетов |
Каждый промпт рендерится в одно пользовательское сообщение, которое точно сообщает модели, какие инструменты Tesserae связать в цепочку, чтобы модель не пересоткрывала поверхность каждый раз заново.
Multi-project: регистрация нескольких vault под одним сервером
Постоянный реестр в ~/.tesserae/registry.json позволяет одному и тому же MCP-серверу разрешать любой зарегистрированный проект по имени:
tesserae register-project /path/to/research --name research
tesserae register-project /path/to/notes --name notes
После этого каждый инструмент, принимающий project или graph_path, будет разрешать project: "research" по реестру, не требуя полного пути. Сервер даже проверяет, что зарегистрированный graph_path всё ещё существует, и возвращает понятную ошибку, если нужна перекомпиляция.
Fan-out по всем зарегистрированным vault
Инструмент ask принимает scope: "all-registered" для параллельного запроса по каждому зарегистрированному проекту и возврата агрегированных результатов:
{
"name": "ask",
"arguments": {
"question": "Where is splatting used?",
"scope": "all-registered"
}
}
Ограничьте подмножеством через scope_aliases: ["research", "notes"].
Multi-account Claude CLI
Если ваш инструмент ask маршрутизируется через Claude CLI и у вас несколько аккаунтов (например, ~/.claude и ~/.claude-personal2), передавайте claude_config_dir для каждого вызова:
{
"name": "ask",
"arguments": {
"question": "...",
"claude_config_dir": "/Users/you/.claude-personal2"
}
}
Сервер экспортирует CLAUDE_CONFIG_DIR только на время этого вызова и восстанавливает предыдущее значение после. Никаких утечек между вызовами.
Проверка
После перезапуска MCP-клиента подтвердите соединение:
- Claude Code:
/mcpдолжен показатьtesseraeс количеством инструментов. - Cursor: иконка MCP в чате должна показывать
tesserae: connectedс количеством tools/resources/prompts. - Codex / Hermes: вызовите любой инструмент по имени (например,
schema) и проверьте ответ.
Если ничего не появляется, дважды проверьте, что --graph указывает на существующий .tesserae/graph.json — сервер теперь валидирует это при старте и при каждом вызове инструмента, так что вы увидите понятное сообщение об ошибке вместо безмолвного 500.
Где это уместно
MCP-сервер — это интерфейс чтения типизированного графа. Для пути записи (загрузка источников, перекомпиляция, обновление сопутствующих инструментов вроде RAG-Anything или Understand-Anything) используйте CLI напрямую. Эти две части развязаны: CLI обновляет .tesserae/, а MCP-сервер читает то, что там лежит, при следующем вызове инструмента.