Skip to main content
Glama

Yandex Wiki MCP

PyPI version License: MIT

Реализация MCP-сервера для Яндекс Вики с режимами read/write и readonly.

Содержимое

  • mcp-yandex-wiki — полный режим (чтение + создание/обновление/append)

  • mcp-yandex-wiki-ro — read-only режим (только чтение)

Related MCP server: yandex-wiki-search-mcp

Установка

  1. Установить uv (если ещё не установлен).

  2. Получить OAuth-токен Яндекс и org_id:

    1. Создать приложение на oauth.yandex.ru с правами Wiki.

    2. Подставить client_id в URL:

      https://oauth.yandex.ru/authorize?response_type=token&client_id=<CLIENT_ID>

      и авторизоваться.

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

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

  • WIKI_TOKEN или TRACKER_TOKEN

  • WIKI_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_PASSWORD

  • REDIS_POOL_MAX_SIZE (10)

  • READONLY (true/false)

Кэширование (Redis)

Кэшируются только read-операции для Wiki:

  • wiki_page_get

  • wiki_page_get_by_url

  • wiki_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-wiki

Production-подобный пример:

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-wiki

Быстрый запуск (через PyPI)

TRACKER_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

Подключение в MCP-агентах (через PyPI)

Claude Code

Требования: должен быть установлен 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

Codex (конфиг проекта)

[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" }

Cursor

  1. Открыть Settings → Cursor Settings → MCP → + Add new global MCP server. Откроется файл ~/.cursor/mcp.json.

  2. Добавить конфигурацию:

{
  "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 в корне репозитория с аналогичным содержимым.

  1. Вернуться в Settings → MCP и убедиться, что у сервера зелёный индикатор (статус «running»).

Другие MCP-клиенты (JSON, общий шаблон)

{
  "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"
      }
    }
  }
}

Инструменты

mcp-yandex-wiki (rw)

  • wiki_page_get

  • wiki_page_get_by_url

  • wiki_page_get_text_by_url

  • wiki_page_create

  • wiki_page_update

  • wiki_page_append_content

mcp-yandex-wiki-ro

  • wiki_page_get

  • wiki_page_get_by_url

  • wiki_page_get_text_by_url

  • write-инструменты возвращают 403

Отладка (MCP Inspector)

Для интерактивной отладки MCP-сервера можно использовать MCP Inspector.

  1. Запустить сервер в режиме SSE:

uv run fastmcp run yandex_wiki_mcp/server.py --transport sse
  1. В другом терминале запустить Inspector:

npx @modelcontextprotocol/inspector@latest
  1. В открывшемся интерфейсе Inspector выбрать Transport Type: SSE и указать URL:

http://localhost:8000/sse
  1. Нажать Connect — Inspector подключится к серверу и покажет список доступных инструментов, позволяя вызывать их вручную и видеть ответы.

Настройки FastMCP для production

Сервер поддерживает переменные окружения FastMCP для тонкой настройки поведения:

  • FASTMCP_MASK_ERROR_DETAILS — при true маскирует детали ошибок в ответах клиентам. Показываются только сообщения из явно выброшенных ToolError. Рекомендуется для production.

  • FASTMCP_STRICT_INPUT_VALIDATION — при true включает строгую валидацию входных данных инструментов по JSON-схемам. При false (по умолчанию) допускаются совместимые преобразования типов (например, строка "10" → число 10).

Available Tools

7 tools
wiki_page_append_contentA

Write: добавить контент в начало/конец страницы или по якорю (#anchor).

Inputs: content (required), page_id (required), fields, location, +1 more. Returns: object

wiki_page_createB

Write: создать новую страницу.

Inputs: slug (required), title (required), content (required), fields, +2 more. Returns: object

wiki_page_getA
Read-onlyIdempotent

Read-only: получить страницу по slug (путь без домена).

Inputs: slug (required), fields, raise_on_redirect. Returns: object

wiki_page_get_by_urlB
Read-onlyIdempotent

Read-only: получить страницу по полной ссылке вида https://wiki.yandex.ru/<path...>/

Inputs: url (required), fields, raise_on_redirect. Returns: object

wiki_page_get_text_by_urlA
Read-onlyIdempotent

Read-only: вернуть только content страницы по полной ссылке.

Inputs: url (required). Returns: object

wiki_page_resolve_idA
Read-onlyIdempotent

Read-only: получить page_id страницы по slug или полной ссылке. Используйте перед wiki_page_update / wiki_page_append_content, если известен только slug или URL.

Inputs: url, slug. Returns: object

wiki_page_updateB
Idempotent

Write: обновить существующую страницу по ID (заголовок и/или контент).

Inputs: page_id (required), title, fields, content, +2 more. Returns: object

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 7 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose: read operations differentiate between full URL, slug, content-only, and ID resolution; write operations cover create, update, and append. No overlap or ambiguity.

    Naming Consistency5/5

    All tool names follow a consistent 'wiki_page_<verb>' pattern in snake_case. Verbs are descriptive (get, get_text, resolve_id, create, update, append_content) with no mixing of conventions.

    Tool Count5/5

    7 tools is well-scoped for a wiki server, covering essential read and write operations without being excessive or insufficient.

    Completeness4/5

    The tool set covers create, read (multiple variants), update, and append, but lacks a delete operation. This is a minor gap, as deletion is often needed in wiki management.

    Maintenance

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers