Remove :storage-inmemory module, tests, and related code.
ci / JVM build + tests (push) Successful in 6m46s
ci / JVM build + tests (push) Successful in 6m46s
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
# :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) — пока нет.
|
||||
Reference in New Issue
Block a user