SkillAgentSearch skills...

yandex-wiki-search-mcp

MCP server for Yandex Wiki: full-text search, pages, comments, attachments and dynamic tables. 33 typed tools, server-side read-only mode, Docker-ready.

Install / Use

claude mcp add dlbolshov -- npx -y github:dlbolshov/yandex-wiki-search-mcp

If the server publishes to npm under a different name, use that package instead — check the repo README.

About this skill
🔌

MCP Server

Model Context Protocol server

Quality Score

83/100

Supported Platforms

Claude Code
Claude Desktop

English | Русский

<div align="center"> <img src="https://raw.githubusercontent.com/dlbolshov/yandex-wiki-search-mcp/main/docs/assets/logo/logo-primary.svg" alt="yandex-wiki-search-mcp logo" width="120">

Yandex Wiki Search MCP

yandex-wiki-search-mcp MCP server PyPI Python CI codecov License Docker

</div>

Demo: search a wiki page and summarize it via MCP

Connect Claude, Cursor, Windsurf, or any MCP client to Yandex Wiki: full-text search, pages, comments, attachments, and dynamic tables ("grids") — 33 tools with typed schemas.

An unofficial project — not affiliated with or endorsed by Yandex.

  • 🔍 Full-text search across the entire wiki — the same backend that powers the Wiki web search bar, up to 50 results per query
  • 📄 Full page lifecycle — create, update, append (top / bottom / anchor), clone, delete with a recovery token, comments, file uploads
  • 📊 Dynamic tables (grids) — 11 write tools: rows, columns, cells, copy, sort
  • 🔒 Server-side read-only modeWIKI_READ_ONLY=true simply doesn't register write tools, so the agent can't bypass it
  • 🧩 Typed tool surface — every tool ships input and output JSON schemas plus safety annotations (read-only / destructive / idempotent hints)
  • 🐳 Runs anywhere — stdio for desktop clients, streamable-http + Docker (with optional multi-user OAuth) for teams

Quick start

  1. Get a Yandex OAuth token with Wiki access (official guide) and your organization ID.
  2. Install into your client:

Add to Cursor Install in VS Code

<details> <summary><b>Claude Desktop / Windsurf / any JSON-config client (uvx)</b></summary>
{
  "mcpServers": {
    "yandex-wiki-search": {
      "command": "uvx",
      "args": ["yandex-wiki-search-mcp"],
      "env": {
        "WIKI_TOKEN": "YOUR_TOKEN",
        "WIKI_ORG_ID": "YOUR_ORG_ID",
        "WIKI_READ_ONLY": "true"
      }
    }
  }
}
</details> <details> <summary><b>Claude Code (CLI)</b></summary>
claude mcp add yandex-wiki-search \
  -e WIKI_TOKEN=YOUR_TOKEN -e WIKI_ORG_ID=YOUR_ORG_ID -e WIKI_READ_ONLY=true \
  -- uvx yandex-wiki-search-mcp
</details> <details> <summary><b>Docker (no Python required)</b></summary>
{
  "mcpServers": {
    "yandex-wiki-search": {
      "command": "docker",
      "args": ["run","--rm","-i",
        "-e","WIKI_TOKEN","-e","WIKI_ORG_ID","-e","WIKI_READ_ONLY=true",
        "ghcr.io/dlbolshov/yandex-wiki-search-mcp:latest"],
      "env": {"WIKI_TOKEN":"YOUR_TOKEN","WIKI_ORG_ID":"YOUR_ORG_ID"}
    }
  }
}
</details>

[!TIP] Start with WIKI_READ_ONLY=true — the server won't even register write tools. Flip it to false once you trust your agent with edits.

  1. Ask your agent something — see below.
<details> <summary><b>Need the old MCP SDK (1.x)?</b></summary>

The server runs on MCP Python SDK v2. That is invisible to clients — one v2 server answers every protocol revision back to 2024-11-05 as well as the current one, so there is nothing to change on your side and nothing to reinstall.

The only reason to hold back is a shared environment that pins mcp<2 for something else. 1.0.1 is the last release built on the 1.x SDK and stays on PyPI:

pip install "yandex-wiki-search-mcp<1.1"
</details>

What can it do

"Find our onboarding docs and summarize the key steps."

"What do we have on incident response? Open the most relevant page."

"Create a page team/weekly-notes and append today's standup summary."

"Add a row to the on-call rotation grid: alice, next week."

"Upload this PDF to the project page and link it at the bottom."

"Delete the draft page, but keep the recovery token in case I change my mind."

Tools

33 tools. All write tools disappear when WIKI_READ_ONLY=true.

Search & read (10)

| Tool | What it does | |---|---| | page_search | Full-text search across the entire Wiki (pages and files), up to 50 ranked results with a text excerpt each; server-side filters and optional <em> match highlighting | | page_get | Get a page by page_id or slug (accepts full Wiki URLs too) | | page_get_descendants | Traverse a page subtree — one flat list of {id, slug} from all nesting levels; from_root=true walks the whole Wiki; fetch_all drains the cursor in one call | | page_get_comments | List page comments (fetch_all supported) | | page_get_resources | List page resources (attachments + grids) with server-side title search (fetch_all supported) | | page_get_attachments | List page attachments (fetch_all supported) | | page_read_attachment | Read an attachment's content straight into the conversation (nothing is saved anywhere) — PNG/JPEG/GIF/WebP as a native image block that vision-capable clients render, text as text (SVG included: it is XML, and an image block a vision API cannot decode fails the host's next call), other binaries as a base64 blob. The format is decided by the file's magic bytes, not by the wire's claim. Capped to protect the model's context window: 128 KiB for text/binary, 2 MiB for images; anything larger is refused with a pointer to page_download_attachment or download_url from page_get_attachments | | page_get_grids | List grids attached to a page (fetch_all supported) | | grid_get | Get a grid by grid_id with row/column/revision filters | | user_get_current | Who am I — username and home_cluster (the caller's personal-section slug) |

Pages: write (12)

| Tool | What it does | |---|---| | page_create | Create a page | | page_update | Update page title and/or full content; set or clear a redirect to another page | | page_edit | Edit content by exact-text replacements without resending the whole page; a missing or ambiguous match fails the call before anything is written; writes back with allow_merge so a concurrent edit is merged, not overwritten | | page_append_content | Append content to top, bottom, or a named anchor | | page_clone | Copy a page to a new slug — the copy gets a new id; children, comments, and history stay with the original; occupied slugs are refused. The API has no true move/rename (details) | | page_add_comment | Add a comment or reply in a thread | | page_delete_comment | Delete a comment; returns the page's updated comment count | | page_delete_attachment | Delete an attachment from a page | | page_delete | Delete a page and receive a recovery token | | page_recover | Recover a deleted page by recovery token | | page_upload_attachment | Upload a local file in chunks and attach it to a page — not registered under OAUTH_ENABLED=true, where "local" would mean the shared server's filesystem | | page_download_attachment | Download an attachment to a local file — streamed to disk with no size cap, nothing enters the conversation. Written atomically (.part → fsync → rename), refuses to overwrite unless asked, and lands with the permissions a normal write would give (0666 & ~umask, never executable); replacing a file keeps that file's own mode. The directory fsync that makes the rename itself crash-durable, and the mode inheritance, are POSIX-only. Gated the same way as page_upload_attachment under OAuth |

Grids: write (11)

<details> <summary>Expand the table</summary>

| Tool | What it does | |---|---| | grid_create | Create a grid on a page | | grid_update | Update grid title and/or default sort | | grid_copy | Copy a grid to an existing target page (async operation) | | grid_delete | Delete a grid | | grid_add_rows | Add rows at a position or after a given row | | grid_update_cells | Update individual cells by row + column | | grid_delete_rows | Delete rows | | grid_move_row | Move a row | | grid_add_columns | Add typed columns | | grid_delete_columns | Delete columns by slug | | grid_move_column | Move a column |

Grid specifics:

  • Mutations use optimistic locking — fetch the grid first and pass the latest revision.
  • grid_update.default_sort takes [{"column": "status", "direction": "asc"}] entries; the server converts them to the wire format the API expects.
  • grid_add_columns requires required on every column because the real API validates it.
  • grid_copy returns operation metadata, not a ready copied grid object.
</details>

How it compares

Facts verified against the alternatives' docs and published code, July–August 2026; the official hosted server's tool list captured live from mcp.wiki.yandex.net (wiki-mcp-server 1.28.1, 2026-08-11).

| | yandex-wiki-search-mcp | Yandex's official MCP (hosted) | ya-yandex-wiki-mcp | slartus/mcp-yandex-wiki | ya-wiki-mcp | |---|---|---|---|---|---| | Full-text search | ✅ up to 50 results, server-side filters + highlighting | ❌ no search tool | ❌ | ✅ up to 10 results | ❌ | | Pages: create / update / append / delete + recover | ✅ all, plus partial edits via text replacement (page_edit) | partial — no append / recover; has partial edits via text replacement | ✅ all | partial — no append / recover | partial — no recover | | Pages: clone to a new slug | ✅ page_clone | ❌ | ❌ | ❌ | ✅ | | Grids: write tools | ✅ 11 | ✅ 12, incl. column update + row pin/color | ✅ 11 | ❌ read-only | ✅ 11, incl. clone | | Comments, attachment upload | ✅ incl. deletion, inline image preview, and download to disk | comments ✅ / upload ❌ (download + preview instead) | ✅ | ❌ | ❌ | | Server-side read-only mode | ✅ | ❌ | ✅ | ❌ | ❌ | | Typed output schemas + tool annotations | ✅ | ❌ | ❌ | ❌ | ❌ tools return plain strings | | YFM helpers | ✅ syntax cheat sheet resource + yfm_warnings in write tools | ❌ | ❌ | ❌ | ✅ Markdown→YFM converter + page-tree cache, prompt templates | | Docker / PyPI / MCP Registry | ✅ / ✅ / ✅ | — hosted service, closed source, nothing to install | ✅ / ✅ / ✅ | ❌ manual install | PyPI only

Truncated for display — read the full file on GitHub.

Related Skills

View on GitHub
GitHub Stars3
CategoryAI
Updated14h ago
Forks0

Languages

Python

Security Score

92/100

Audited on Aug 21, 2026

1 low