Files

:mcp-bridge

Мост между протоколом MCP (Model Context Protocol) и MutableAgent из :agent-api. Превращает удалённые MCP-серверы в набор тулов, доступных агенту через стандартный install-механизм.

Что это и зачем

McpRegistry умеет подключаться к N MCP-серверам, опрашивать их tools/list и держать в памяти именованные тулы (NamedTool). Но McpRegistry сам по себе ничего не знает про агента — это просто реестр плюс JSON-RPC-клиент.

McpBridgeComponent — адаптер: реализует pw.binom.agentik.agent.Component и при install(MutableAgent) добавляет в toolProviders провайдер, который возвращает текущий снимок тулов из реестра. При uninstall — снимает.

Использование

val mcpRegistry = McpRegistry.fromConfig(config.mcp)
val agent = ChatAgent(...)
    .install(McpBridgeComponent(mcpRegistry))

После install MCP-тулы доступны агенту через стандартный toolsetDispatch.baseDispatcher — вызываются точно так же, как и встроенные (skill / memory / enable_toolset). Никаких особых путей.

На каждом tool-call collectTools() (внутри ChatAgent) перебирает все toolProviders и собирает актуальный список — добавление/удаление компонента видно немедленно, без рестарта агента.

Структура

  • McpRegistry — JSON-RPC клиент, поддерживает несколько MCP-серверов, параллельный опрос tools/list при старте, reconnect.
  • McpBridgeComponent — адаптер к :agent-api. Реализует Component; держит ссылку на McpRegistry; на install пушит McpToolProvider в MutableAgent.toolProviders, на uninstall снимает.
  • McpToolProvider — внутренний ToolProvider, возвращает registry.namedTools. Пустой по сути адаптер, нужен только чтобы дать имя для удаления (removeAll-логика).

Зависимости

  • :agent-api — MutableAgent, Component, ToolProvider.
  • :agent-toolsets — NamedTool, LiteTool.
  • :outbox-api — для live-событий (connection-loss / reconnect notifications).

НЕ включено

  • HTTP/SSE транспорт к MCP-серверам (только stdio/JSON-RPC сейчас; HTTP-вариант доделывается).
  • Конвертация McpResource → MemoryNote (отдельная фича, не реализована).
  • Авторизация OAuth (MCP 2025-06-15 draft) — пока нет.