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. Открыть SettingsCursor SettingsMCP+ 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. Вернуться в SettingsMCP и убедиться, что у сервера зелёный индикатор (статус «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).

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoПоля в ответе через запятую: content, attributes, breadcrumbs, redirectcontent,attributes,breadcrumbs,redirect
contentYesСодержимое для добавления
page_idYesЧисловой ID страницы
locationNoПозиция вставки: top, bottom или якорь в формате #anchorbottom
is_silentNoНе отправлять уведомления подписчикам

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate the tool is not read-only, not idempotent, and not destructive. The description adds context about the append behavior and location options, but does not disclose other behavioral traits like error handling or prerequisites.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise single sentence with front-loaded action verb. No wasted words, but could benefit from structured breakdown of parameters or use cases.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple append operation given the schema and output schema exist, but missing details on behavior when anchor is not found, error cases, or effects on page versioning.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all 5 parameters with descriptions, so baseline is 3. The description adds no new parameter-level details beyond a restatement of the location parameter's options.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool adds content to a wiki page at specified locations (top/bottom/anchor). It effectively distinguishes from related tools like wiki_page_update (which replaces content) and wiki_page_create (which creates new pages).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implied usage for adding content without overwriting, but no explicit guidance on when to use this tool versus alternatives like wiki_page_update or wiki_page_create. Lacks when-not-to-use scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wiki_page_createB

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

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesПуть новой страницы без домена, например 'users/handbook/new-page'
titleYesЗаголовок страницы
fieldsNoПоля в ответе через запятую: content, attributes, breadcrumbs, redirectcontent,attributes,breadcrumbs,redirect
contentYesСодержимое страницы в формате Wiki/WYSIWYG
is_silentNoНе отправлять уведомления подписчикам
page_typeNoТип страницы: wysiwyg или wikitextwysiwyg

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate this is a write operation (readOnlyHint=false) and not idempotent or destructive. The description adds no behavioral details beyond this, such as whether duplicate slugs cause errors or how notifications work. The baseline is adequate but not enriched.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: a single sentence with a prefix label. It is front-loaded and wastes no words. However, it may be too brief for a tool with six parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema and six parameters, the description provides only a one-liner. It does not explain uniqueness constraints, default values, or behavior differences between page types. A creation tool with this complexity requires more context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, meaning all parameters are described in the schema. The description does not add any additional parameter-level meaning. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates a new wiki page ('создать новую страницу'). It specifies the verb and resource, making the primary action obvious. However, it does not differentiate from sibling tools like wiki_page_update or wiki_page_append_content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description only states the tool's purpose, leaving the agent without context for tool selection, especially given the existence of update and append siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wiki_page_getA
Read-onlyIdempotent

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

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesПуть страницы без домена, например 'users/handbook/onboarding'
fieldsNoПоля через запятую: content, attributes, breadcrumbs, redirectcontent,attributes,breadcrumbs,redirect
raise_on_redirectNoВернуть ошибку при редиректе вместо автоматического перехода

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, which the description echoes with 'Read-only'. However, it adds no new behavioral context beyond the annotations, such as error handling or default redirect behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the key trait ('Read-only') and concisely states the tool's purpose. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of a full output schema (not shown but stated as present) and 100% parameter coverage, the description is nearly complete for a simple read operation. It lacks some behavioral details like error cases or default redirect handling, but overall it suffices.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description merely restates the concept of 'slug' as path without domain, which is already in the schema. No additional meaning is provided for 'fields' or 'raise_on_redirect' beyond what the schema already specifies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('получить страницу') and the resource ('по slug'), with a specific definition of slug as path without domain. This distinguishes it from siblings like wiki_page_get_by_url which uses a full URL.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide explicit guidance on when to use this tool versus alternatives like wiki_page_get_by_url or wiki_page_resolve_id. Usage is implied (for reading a page by slug) but no exclusions or comparisons are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wiki_page_get_by_urlB
Read-onlyIdempotent

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

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesПолная ссылка на страницу, например https://wiki.yandex.ru/users/handbook/
fieldsNoПоля через запятую: content, attributes, breadcrumbs, redirectcontent,attributes,breadcrumbs,redirect
raise_on_redirectNoВернуть ошибку при редиректе вместо автоматического перехода

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description only repeats 'Read-only' without adding behavioral details like auth requirements or rate limits, so it adds minimal value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence with no wasted words. However, it is in Russian while the tool name is English, but that does not affect conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given three parameters (including optional fields and redirect handling), the description is insufficient. It omits hints about these capabilities, making the tool less navigable despite an output schema being present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline 3 applies. The description does not elaborate on parameters beyond the URL format, adding no extra meaning to the schema's existing descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves a page by its full URL, distinguishing it from sibling tools like wiki_page_get (likely by ID) and wiki_page_get_text_by_url (text only). The verb 'get' and resource 'page' are explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description only states what it does without context on prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wiki_page_get_text_by_urlA
Read-onlyIdempotent

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

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesПолная ссылка на страницу, например https://wiki.yandex.ru/users/handbook/

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true. The description reinforces this by stating 'Read-only' and adds that it returns only content, providing context beyond the annotations (e.g., what data is returned). No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence conveys the essential purpose and constraint. There is no extraneous information, and every word adds value. The description is optimally concise for the tool's simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (single required param, read-only, no side effects), the description together with the schema and output schema provides complete information. The description clearly states what is returned, and the schema covers the input. No gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes the 'url' parameter with a full description and example. The description adds no additional parameter details beyond repeating 'по полной ссылке', so it does not elevate understanding beyond the schema. With 100% schema coverage, baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool returns only the content of a wiki page given a full URL. It uses a specific verb ('return') and resource ('content'), and distinguishes from siblings like wiki_page_get_by_url (which presumably returns full page data). The purpose is unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates that the tool is read-only and returns only content, implying it should be used when only the page text is needed rather than the full page object. However, it does not explicitly state when to use it over siblings like wiki_page_get or wiki_page_get_by_url, leaving some inference required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wiki_page_resolve_idA
Read-onlyIdempotent

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

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoПолная ссылка на страницу, например https://wiki.yandex.ru/users/handbook/
slugNoПуть страницы без домена, например 'users/handbook/onboarding'

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description declares read-only behavior, matching annotations. It adds context about being a lookup/preparation step, but does not detail error handling or response content beyond annotations, which already cover safety and idempotency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two succinct sentences: one for purpose ('Read-only: get page_id...') and one for usage guidance, front-loaded with key read-only attribute. No superfluous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema and simple 2-parameter input, the description covers the core operation and usage context. It lacks mention of behavior when both parameters are provided or error cases, but these are minor for a straightforward lookup tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with parameter descriptions already explaining the format of url and slug. The tool description mentions these inputs in context but does not add new semantic detail beyond what the schema provides, warranting the baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool resolves page_id from slug or URL, specifying it is read-only and a preparatory step for update/append. This distinctly sets it apart from sibling tools that get content or perform mutations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises using this tool before wiki_page_update or wiki_page_append_content when only slug or URL is known, providing clear when-to-use guidance and implicit exclusions for cases where page_id is already available.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wiki_page_updateB
Idempotent

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

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoНовый заголовок страницы (None — не менять)
fieldsNoПоля в ответе через запятую: content, attributes, breadcrumbs, redirectcontent,attributes,breadcrumbs,redirect
contentNoНовое содержимое страницы (None — не менять)
page_idYesЧисловой ID страницы для обновления
is_silentNoНе отправлять уведомления подписчикам
allow_mergeNoРазрешить слияние при конфликте версий

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate idempotentHint=true and destructiveHint=false, so the safety profile is clear. The description adds minimal behavioral context, just confirming mutation. No mention of side effects like notifications or version conflicts.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise, using a single sentence that is front-loaded with 'Write:'. It is efficient but could benefit from slightly more context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 6 parameters and a rich output schema, the description is incomplete. It does not mention important parameters like fields, is_silent, or allow_merge, nor does it provide context about the operation's idempotency or non-destructiveness beyond what annotations already convey.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all parameters are fully described in the schema. The description hints at the title and content parameters but adds no additional meaning beyond what is already in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'update' and the resource 'existing page by ID', and specifies that it can modify title and/or content. It effectively distinguishes from sibling tools like create, get, or append_content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. For example, it does not mention that for appending content, one should use wiki_page_append_content, or that for creation, wiki_page_create is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

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

  1. 7 tool updatesv0.1.0
    • First observedwiki_page_append_content
    • First observedwiki_page_create
    • First observedwiki_page_get
    • First observedwiki_page_get_by_url
    • First observedwiki_page_get_text_by_url
    • First observedwiki_page_resolve_id
    • First observedwiki_page_update

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

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers