Class McpWorkspaceResolver

java.lang.Object
com.github._1c_syntax.bsl.languageserver.mcp.McpWorkspaceResolver

@Component @Profile("mcp") public class McpWorkspaceResolver extends Object
Выбор рабочей папки для MCP-инструментов, у которых нет явной привязки к конкретному файлу (например, type_info, global_member_info). Клиент обязан явно указать workspaceFolder (одно из значений, которые вернул list_workspace_folders), потому что ответ может различаться между зарегистрированными папками (конфигурации, OneScript-проекты, библиотеки).

Сравнение URI ведётся через McpWorkspaceFolders.toWorkspaceFolderUri(String) — чтобы клиентское представление (file://D:/repo / file:///D:/repo/ / голый путь D:\repo) сходилось с тем URI, под которым папка зарегистрирована.

Инвариант ошибки: если корень не передан или не совпал ни с одной рабочей папкой, сообщение перечисляет зарегистрированные корни и называет инструмент их регистрации (см. McpWorkspaceFolders.registrationHint(Collection)).

  • Constructor Details

  • Method Details

    • resolveWorkspaceFolderUri

      public URI resolveWorkspaceFolderUri(@Nullable String requestedFolder)
      Выбрать рабочую папку для tool-запроса.
      Parameters:
      requestedFolder - URI рабочей папки (либо путь к ней), на которую ссылается запрос.
      Returns:
      URI зарегистрированной рабочей папки.
      Throws:
      IllegalArgumentException - если requestedFolder пуст/отсутствует, либо не совпадает ни с одной зарегистрированной рабочей папкой. Сообщение содержит список зарегистрированных папок и указание на register_workspace_folder.