: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) — пока нет.