# :mcp-bridge Мост между протоколом [MCP](https://modelcontextprotocol.io/) (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` — снимает. ## Использование ```kotlin 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) — пока нет.