Skip to content

documentation-mcp-server: resources/list возвращает null вместо пустого массива, что нарушает спецификацию MCP #2

Description

@Almeonamy

Описание проблемы

Сервер yandex-cloud-documentation (доступный по адресу https://docs.mcp.cloud.yandex.net/mcp) в ответ на запрос resources/list возвращает null в поле resources вместо пустого массива []. Это нарушает спецификацию протокола MCP и приводит к сбою MCP-клиентов, которые не ожидают null на этом месте.

Как воспроизвести

Подключиться к серверу через mcp-remote и выполнить следующую последовательность JSON-RPC запросов:

npx -y mcp-remote https://docs.mcp.cloud.yandex.net/mcp

Затем отправить в stdin:

{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}
{"jsonrpc":"2.0","method":"notifications/initialized","params":{}}
{"jsonrpc":"2.0","id":2,"method":"resources/list","params":{}}

Фактический результат

{"jsonrpc":"2.0","id":2,"result":{"resources":null}}

Ожидаемый результат

Согласно спецификации MCP, если сервер не предоставляет ресурсов, он должен вернуть пустой массив:

{"jsonrpc":"2.0","id":2,"result":{"resources":[]}}

Что примечательно

При этом в ответе на initialize сервер объявляет поддержку resources:

"capabilities": {
  "resources": {"subscribe": true, "listChanged": true},
  "tools": {"listChanged": true}
}

То есть сервер заявляет о поддержке Resources, но возвращает null при их запросе — это противоречие.

Последствия

Данная проблема приводит к NullReferenceException в клиентской библиотеке ModelContextProtocol в Visual Studio (GitHub Copilot), из-за чего сервер отображается как неработающий (статус "Сбой"), хотя инструмент documentation_generative_search технически доступен.

Воспроизводится в Visual Studio 2026 с GitHub Copilot и библиотекой ModelContextProtocol.

Предлагаемое исправление

Вернуть пустой массив вместо null в методе resources/list:

{"resources": []}

Это однострочное исправление на стороне сервера устранит проблему для всех MCP-клиентов, строго следующих спецификации.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions