# ya-wiki-mcp

MCP-сервер для работы с API Яндекс Вики. Совместим с Claude Code, Claude Desktop и любым MCP-клиентом.

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

```bash
# Добавить в Claude Code
claude mcp add ya-wiki -e YA_WIKI_TOKEN=ваш-токен -e YA_WIKI_ORG_ID=ваш-org-id -- uvx ya-wiki-mcp

# Или запустить вручную
uvx ya-wiki-mcp
```

## Возможности

- **27 инструментов** — полный CRUD для страниц, динамических таблиц (гридов) и ресурсов
- **Справочник YFM** — встроенная документация по разметке Yandex Flavored Markdown
- **Конвертер Markdown → YFM** — автоматически конвертирует стандартный Markdown в формат Вики
- **Шаблоны промптов** — управление переиспользуемыми шаблонами страниц прямо из чата

## Настройка

| Переменная | Обязательна | Описание |
|------------|-------------|----------|
| `YA_WIKI_TOKEN` | Да | OAuth-токен. Получить: https://oauth.yandex.ru/ |
| `YA_WIKI_ORG_ID` | Да | ID организации |
| `YA_WIKI_ORG_TYPE` | Нет | `cloud` (по умолчанию) или `business` |

Можно указать в `.env` файле или передать через флаги `-e`.

### Получение токена

1. Перейдите на https://oauth.yandex.ru/ и создайте приложение
2. Выберите "Для доступа к API или отладки"
3. Добавьте права: `wiki:write` (полный доступ) или `wiki:read` (только чтение)
4. Получите токен: `https://oauth.yandex.ru/authorize?response_type=token&client_id=<ClientID>`

## Инструменты

### Страницы
| Инструмент | Описание |
|------------|----------|
| `get_page` | Получить страницу по slug или ID |
| `get_page_content` | Получить только текст страницы (без метаданных) |
| `create_page` | Создать страницу (wysiwyg, page, grid, template) |
| `update_page` | Обновить заголовок, контент или редирект |
| `delete_page` | Удалить страницу (возвращает токен восстановления) |
| `clone_page` | Клонировать страницу в новое расположение |
| `append_content` | Добавить текст к странице (в начало, конец, секцию или якорь) |

### Ресурсы
| Инструмент | Описание |
|------------|----------|
| `get_page_resources` | Вложения, таблицы, SharePoint-документы страницы |
| `get_page_grids` | Список гридов, привязанных к странице |

### Динамические таблицы (гриды)
| Инструмент | Описание |
|------------|----------|
| `create_grid` | Создать таблицу на странице |
| `get_grid` | Получить таблицу с фильтрацией и сортировкой |
| `update_grid` | Обновить заголовок или сортировку |
| `delete_grid` | Удалить таблицу |
| `add_rows` | Добавить строки |
| `delete_rows` | Удалить строки |
| `add_columns` | Добавить колонки |
| `delete_columns` | Удалить колонки |
| `update_cells` | Обновить значения ячеек |
| `move_rows` | Переместить строки |
| `move_columns` | Переместить колонки |
| `clone_grid` | Клонировать таблицу на другую страницу |

### Утилиты
| Инструмент | Описание |
|------------|----------|
| `convert_md_to_yfm` | Конвертировать Markdown в YFM (таблицы, callouts, details, underline, highlight) |

### Менеджер промптов
| Инструмент | Описание |
|------------|----------|
| `prompts_list` | Список всех сохранённых шаблонов |
| `prompts_get` | Получить и отрендерить шаблон с аргументами |
| `prompts_add` | Создать шаблон из чата |
| `prompts_add_from_file` | Загрузить шаблон из файла |
| `prompts_remove` | Удалить шаблон |

## Конвертер Markdown → YFM

Яндекс Вики использует YFM (Yandex Flavored Markdown), который отличается от стандартного Markdown. Конвертер автоматически преобразует:

| Markdown | YFM |
|----------|-----|
| `\| H1 \| H2 \|` таблицы | `#\| \|\| \|#` wiki-таблицы |
| `> [!NOTE]` callouts | `{% note info %}` |
| `<details><summary>` | `{% cut "Title" %}` |
| `<u>text</u>` | `++text++` |
| `<mark>text</mark>` | `==text==` |
| `<sup>text</sup>` | `text^super^` |
| `<sub>text</sub>` | `text~sub~` |

## Лицензия

MIT
