Реализация MCP-сервера для Яндекс Вики с режимами read/write и readonly.
mcp-yandex-wiki— полный режим (чтение + создание/обновление/append)mcp-yandex-wiki-ro— read-only режим (только чтение)
- Установить
uv(если ещё не установлен). - Получить OAuth-токен Яндекс и
org_id:- Создать приложение на oauth.yandex.ru с правами Wiki.
- Подставить
client_idв URL:и авторизоваться.https://oauth.yandex.ru/authorize?response_type=token&client_id=<CLIENT_ID>
Обязательные:
WIKI_TOKENилиTRACKER_TOKENWIKI_ORG_IDилиTRACKER_ORG_ID
Опциональные:
WIKI_API_BASE_URL(по умолчаниюhttps://api.wiki.yandex.net/v1)TRANSPORT(stdioпо умолчанию)HOST(127.0.0.1)PORT(8088)MCP_PATH(/mcp)TOOLS_CACHE_ENABLED(true/false, по умолчаниюfalse)TOOLS_CACHE_REDIS_TTL(в секундах, по умолчанию3600)REDIS_ENDPOINT(localhost)REDIS_PORT(6379)REDIS_DB(0)REDIS_PASSWORDREDIS_POOL_MAX_SIZE(10)READONLY(true/false)
Кэшируются только read-операции для Wiki:
wiki_page_getwiki_page_get_by_urlwiki_page_get_text_by_url
Особенности:
- включается через
TOOLS_CACHE_ENABLED=true - кэш живёт в Redis (
REDIS_*) - при любых write-операциях (
create,update,append_content) кэш инвалидируется для затронутых страниц/slug - в ответах добавляется флаг
_mcp_cache_hit(true/false)
Минимальный пример для локального Redis:
docker run -p 6379:6379 --name redis-cache -d redis:alpine
TRACKER_TOKEN=your_token TRACKER_ORG_ID=your_org_id \
TOOLS_CACHE_ENABLED=true REDIS_ENDPOINT=127.0.0.1 REDIS_PORT=6379 uvx mcp-yandex-wikiProduction-подобный пример:
TRACKER_TOKEN=your_token TRACKER_ORG_ID=your_org_id \
TOOLS_CACHE_ENABLED=true \
REDIS_ENDPOINT=redis.internal \
REDIS_PORT=6379 \
REDIS_DB=0 \
REDIS_PASSWORD=secret \
TOOLS_CACHE_REDIS_TTL=7200 \
uvx mcp-yandex-wikiTRACKER_TOKEN=your_token TRACKER_ORG_ID=your_org_id \
uvx mcp-yandex-wiki
TRACKER_TOKEN=your_token TRACKER_ORG_ID=your_org_id \
uvx --from mcp-yandex-wiki mcp-yandex-wiki-roАльтернатива (после установки):
pip install mcp-yandex-wiki
python -m yandex_wiki_mcpТребования: должен быть установлен uvx (входит в uv).
claude mcp add yandex-wiki \
-e WIKI_TOKEN=your_token \
-e WIKI_ORG_ID=your_org_id \
-- uvx mcp-yandex-wiki
claude mcp add yandex-wiki-ro \
-e WIKI_TOKEN=your_token \
-e WIKI_ORG_ID=your_org_id \
-- uvx --from mcp-yandex-wiki mcp-yandex-wiki-ro --readonlyЕсли используете TRACKER_*-переменные, замените их на:
claude mcp add yandex-wiki \
-e TRACKER_TOKEN=your_token \
-e TRACKER_ORG_ID=your_org_id \
-- uvx mcp-yandex-wiki[mcp_servers.yandex-wiki]
command = "uvx"
args = ["mcp-yandex-wiki"]
env = { WIKI_TOKEN = "your_token", WIKI_ORG_ID = "your_org_id" }
[mcp_servers.yandex-wiki-ro]
command = "uvx"
args = ["--from", "mcp-yandex-wiki", "mcp-yandex-wiki-ro"]
env = { WIKI_TOKEN = "your_token", WIKI_ORG_ID = "your_org_id" }- Открыть Settings → Cursor Settings → MCP → + Add new global MCP server.
Откроется файл
~/.cursor/mcp.json. - Добавить конфигурацию:
{
"mcpServers": {
"yandex-wiki": {
"command": "uvx",
"args": ["mcp-yandex-wiki"],
"env": {
"WIKI_TOKEN": "your_token",
"WIKI_ORG_ID": "your_org_id"
}
}
}
}Для read-only режима:
{
"mcpServers": {
"yandex-wiki-ro": {
"command": "uvx",
"args": ["--from", "mcp-yandex-wiki", "mcp-yandex-wiki-ro"],
"env": {
"WIKI_TOKEN": "your_token",
"WIKI_ORG_ID": "your_org_id"
}
}
}
}Можно также добавить на уровне проекта — создайте файл
.cursor/mcp.jsonв корне репозитория с аналогичным содержимым.
- Вернуться в Settings → MCP и убедиться, что у сервера зелёный индикатор (статус «running»).
{
"mcpServers": {
"yandex-wiki": {
"command": "uvx",
"args": ["mcp-yandex-wiki"],
"env": {
"WIKI_TOKEN": "your_token",
"WIKI_ORG_ID": "your_org_id"
}
},
"yandex-wiki-ro": {
"command": "uvx",
"args": ["--from", "mcp-yandex-wiki", "mcp-yandex-wiki-ro"],
"env": {
"WIKI_TOKEN": "your_token",
"WIKI_ORG_ID": "your_org_id"
}
}
}
}wiki_page_getwiki_page_get_by_urlwiki_page_get_text_by_urlwiki_page_createwiki_page_updatewiki_page_append_content
wiki_page_getwiki_page_get_by_urlwiki_page_get_text_by_url- write-инструменты возвращают
403
Для интерактивной отладки MCP-сервера можно использовать MCP Inspector.
- Запустить сервер в режиме SSE:
uv run fastmcp run yandex_wiki_mcp/server.py --transport sse- В другом терминале запустить Inspector:
npx @modelcontextprotocol/inspector@latest- В открывшемся интерфейсе Inspector выбрать Transport Type: SSE и указать URL:
http://localhost:8000/sse
- Нажать Connect — Inspector подключится к серверу и покажет список доступных инструментов, позволяя вызывать их вручную и видеть ответы.
Сервер поддерживает переменные окружения FastMCP для тонкой настройки поведения:
FASTMCP_MASK_ERROR_DETAILS— приtrueмаскирует детали ошибок в ответах клиентам. Показываются только сообщения из явно выброшенныхToolError. Рекомендуется для production.FASTMCP_STRICT_INPUT_VALIDATION— приtrueвключает строгую валидацию входных данных инструментов по JSON-схемам. Приfalse(по умолчанию) допускаются совместимые преобразования типов (например, строка"10"→ число10).