Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/marvin/agents/team.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

import pydantic_ai
from pydantic_ai.agent import AgentRunResult
from pydantic_ai.mcp import MCPServer

from marvin.agents.actor import Actor
from marvin.agents.names import TEAM_NAMES
Expand Down Expand Up @@ -74,10 +75,12 @@ async def get_agentlet(
self,
tools: list[Callable[..., Any]],
end_turn_tools: list["EndTurn"],
active_mcp_servers: list[MCPServer] | None = None,
) -> pydantic_ai.Agent[Any, Any]:
return await self.active_member.get_agentlet(
tools=self.get_tools() + tools,
end_turn_tools=self.get_end_turn_tools() + end_turn_tools,
active_mcp_servers=active_mcp_servers,
)

def friendly_name(self, verbose: bool = True) -> str:
Expand Down
32 changes: 32 additions & 0 deletions tests/agents/test_team_mcp_forward.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
from unittest.mock import AsyncMock, MagicMock

import pytest
from pydantic_ai.mcp import MCPServer

from marvin.agents.agent import Agent
from marvin.agents.team import Team


class DummyAgent(Agent):
async def get_agentlet(self, tools, end_turn_tools, active_mcp_servers=None):
Comment thread
romans127 marked this conversation as resolved.
Outdated
# Assert that the forwarded arg is passed through
self._seen_active_mcp_servers = active_mcp_servers
# Return a minimal stub that satisfies Orchestrator usage patterns if needed
stub = MagicMock()
stub.iter = AsyncMock()
return stub


@pytest.mark.asyncio
async def test_team_forwards_active_mcp_servers():
mock_server = MagicMock(spec=MCPServer)

a1 = DummyAgent(name="A1")
a2 = DummyAgent(name="A2")
team = Team(members=[a1, a2])

await team.get_agentlet(tools=[], end_turn_tools=[], active_mcp_servers=[mock_server])

assert getattr(team.active_member, "_seen_active_mcp_servers", None) == [mock_server]