#4875

refactor: extract MCP tool provider lifecycle

OpenKokeipwants to merge intofrom

Summary

  • introduce MCPToolProvider to own MCP dynamic tool lifecycle state
  • route AgentLoop MCP connect, reload, close, and runtime-context behavior through the provider
  • update MCP lifecycle tests to assert provider-owned state

Closes #4858

Tests

  • PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 PYTHONPATH=. pytest -p pytest_asyncio.plugin tests\agent\test_mcp_connection.py tests\agent\tools\test_self_tool.py -q
  • ruff check nanobot\agent\loop.py nanobot\agent\context.py nanobot\agent\tools\mcp.py nanobot\agent\tools\self.py

Activity

1