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-mcpIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
AI & Machine LearningSupported Platforms
Skill content
View source on GitHubEnglish | Русский
<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
</div>
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 mode —
WIKI_READ_ONLY=truesimply 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
- Get a Yandex OAuth token with Wiki access (official guide) and your organization ID.
- Install into your client:
{
"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 tofalseonce you trust your agent with edits.
- Ask your agent something — see below.
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-notesand 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_sorttakes[{"column": "status", "direction": "asc"}]entries; the server converts them to the wire format the API expects.grid_add_columnsrequiresrequiredon every column because the real API validates it.grid_copyreturns operation metadata, not a ready copied grid object.
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
momen-cursurrules-prompt-file
40.6kCursor rules for building custom frontends with Momen.app as headless BaaS with GraphQL API, actionflows, AI agents, and Stripe integration.
pyspark-etl-best-practices-cursorrules-prompt-file
40.6kCursor rules for PySpark ETL development with code style, joins, window functions, map operations, and Iceberg patterns.
semiotic-react-dataviz-cursorrules-prompt-file
40.6kCursor rules for Semiotic data visualization library with 30+ chart types, MCP server, and AI-assisted chart generation.
claude-mem
91.5kPersistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode + More
