From 5d811a11c7e851184e6488d353e4958420e258ed Mon Sep 17 00:00:00 2001 From: Mrunal Hirve Date: Mon, 3 Nov 2025 14:22:38 -0800 Subject: [PATCH 1/5] Add agentic auth for AF --- .../services/mcp_tool_registration_service.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/libraries/microsoft-agents-a365-tooling-extensions-agentframework/microsoft_agents_a365/tooling/extensions/agentframework/services/mcp_tool_registration_service.py b/libraries/microsoft-agents-a365-tooling-extensions-agentframework/microsoft_agents_a365/tooling/extensions/agentframework/services/mcp_tool_registration_service.py index 50237f6b..064d1a09 100644 --- a/libraries/microsoft-agents-a365-tooling-extensions-agentframework/microsoft_agents_a365/tooling/extensions/agentframework/services/mcp_tool_registration_service.py +++ b/libraries/microsoft-agents-a365-tooling-extensions-agentframework/microsoft_agents_a365/tooling/extensions/agentframework/services/mcp_tool_registration_service.py @@ -14,6 +14,11 @@ ) from microsoft_agents_a365.tooling.utils.constants import Constants +from microsoft_agents_a365.tooling.utils.utility import ( + get_ppapi_token_scope, + get_use_environment_id, +) + class McpToolRegistrationService: """ @@ -43,9 +48,9 @@ async def add_tool_servers_to_agent( initial_tools: List[Any], agent_user_id: str, environment_id: str, - auth: Optional[Authorization] = None, + auth: Authorization, + turn_context: TurnContext, auth_token: Optional[str] = None, - turn_context: Optional[TurnContext] = None, ) -> Optional[ChatAgent]: """ Add MCP tool servers to a chat agent (mirrors .NET implementation). @@ -56,14 +61,20 @@ async def add_tool_servers_to_agent( initial_tools: List of initial tools to add to the agent agent_user_id: Unique identifier for the agent user environment_id: Environment identifier for MCP server discovery - auth: Optional authorization context + auth: Authorization context for token exchange + turn_context: Turn context for the operation auth_token: Optional bearer token for authentication - turn_context: Optional turn context for the operation Returns: ChatAgent instance with MCP tools registered, or None if creation failed """ try: + # Exchange token if not provided + if not auth_token: + scopes = get_ppapi_token_scope() + authToken = await auth.exchange_token(turn_context, scopes, "AGENTIC") + auth_token = authToken.token + self._logger.info( f"Listing MCP tool servers for agent {agent_user_id} in environment {environment_id}" ) From 3978d56ca75dab45cdd69aafb22164ab3d81e51e Mon Sep 17 00:00:00 2001 From: Mrunal Hirve Date: Mon, 3 Nov 2025 14:44:46 -0800 Subject: [PATCH 2/5] fix --- .../services/mcp_tool_registration_service.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/libraries/microsoft-agents-a365-tooling-extensions-agentframework/microsoft_agents_a365/tooling/extensions/agentframework/services/mcp_tool_registration_service.py b/libraries/microsoft-agents-a365-tooling-extensions-agentframework/microsoft_agents_a365/tooling/extensions/agentframework/services/mcp_tool_registration_service.py index 064d1a09..83ffe9f5 100644 --- a/libraries/microsoft-agents-a365-tooling-extensions-agentframework/microsoft_agents_a365/tooling/extensions/agentframework/services/mcp_tool_registration_service.py +++ b/libraries/microsoft-agents-a365-tooling-extensions-agentframework/microsoft_agents_a365/tooling/extensions/agentframework/services/mcp_tool_registration_service.py @@ -14,11 +14,7 @@ ) from microsoft_agents_a365.tooling.utils.constants import Constants -from microsoft_agents_a365.tooling.utils.utility import ( - get_ppapi_token_scope, - get_use_environment_id, -) - +from microsoft_agents_a365.tooling.utils.utility import get_ppapi_token_scope class McpToolRegistrationService: """ From 75a12a83bb0454c4af340792f8c68e754c28eabd Mon Sep 17 00:00:00 2001 From: Mrunal Hirve Date: Mon, 3 Nov 2025 14:47:39 -0800 Subject: [PATCH 3/5] format --- .../agentframework/services/mcp_tool_registration_service.py | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/microsoft-agents-a365-tooling-extensions-agentframework/microsoft_agents_a365/tooling/extensions/agentframework/services/mcp_tool_registration_service.py b/libraries/microsoft-agents-a365-tooling-extensions-agentframework/microsoft_agents_a365/tooling/extensions/agentframework/services/mcp_tool_registration_service.py index 83ffe9f5..dddc49c6 100644 --- a/libraries/microsoft-agents-a365-tooling-extensions-agentframework/microsoft_agents_a365/tooling/extensions/agentframework/services/mcp_tool_registration_service.py +++ b/libraries/microsoft-agents-a365-tooling-extensions-agentframework/microsoft_agents_a365/tooling/extensions/agentframework/services/mcp_tool_registration_service.py @@ -16,6 +16,7 @@ from microsoft_agents_a365.tooling.utils.utility import get_ppapi_token_scope + class McpToolRegistrationService: """ Provides MCP tool registration services for Agent Framework agents. From 2b421e4968257e4f45b6a8314cd14a9213af2a60 Mon Sep 17 00:00:00 2001 From: Mrunal Hirve Date: Mon, 3 Nov 2025 15:46:07 -0800 Subject: [PATCH 4/5] add env changes --- .../services/mcp_tool_registration_service.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/libraries/microsoft-agents-a365-tooling-extensions-agentframework/microsoft_agents_a365/tooling/extensions/agentframework/services/mcp_tool_registration_service.py b/libraries/microsoft-agents-a365-tooling-extensions-agentframework/microsoft_agents_a365/tooling/extensions/agentframework/services/mcp_tool_registration_service.py index dddc49c6..f4068c34 100644 --- a/libraries/microsoft-agents-a365-tooling-extensions-agentframework/microsoft_agents_a365/tooling/extensions/agentframework/services/mcp_tool_registration_service.py +++ b/libraries/microsoft-agents-a365-tooling-extensions-agentframework/microsoft_agents_a365/tooling/extensions/agentframework/services/mcp_tool_registration_service.py @@ -14,7 +14,10 @@ ) from microsoft_agents_a365.tooling.utils.constants import Constants -from microsoft_agents_a365.tooling.utils.utility import get_ppapi_token_scope +from microsoft_agents_a365.tooling.utils.utility import ( + get_ppapi_token_scope, + get_use_environment_id, +) class McpToolRegistrationService: @@ -104,7 +107,7 @@ async def add_tool_servers_to_agent( headers[Constants.Headers.AUTHORIZATION] = ( f"{Constants.Headers.BEARER_PREFIX} {auth_token}" ) - if environment_id: + if get_use_environment_id() and environment_id: headers[Constants.Headers.ENVIRONMENT_ID] = environment_id server_name = getattr(config, "mcp_server_name", "Unknown") From 6739f20c12a0b50272ecc4d1ef67db2ac3907141 Mon Sep 17 00:00:00 2001 From: Mrunal Hirve Date: Tue, 4 Nov 2025 10:22:30 -0800 Subject: [PATCH 5/5] PR comments --- .../agentframework/services/mcp_tool_registration_service.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/microsoft-agents-a365-tooling-extensions-agentframework/microsoft_agents_a365/tooling/extensions/agentframework/services/mcp_tool_registration_service.py b/libraries/microsoft-agents-a365-tooling-extensions-agentframework/microsoft_agents_a365/tooling/extensions/agentframework/services/mcp_tool_registration_service.py index 07aab816..a79d2ffb 100644 --- a/libraries/microsoft-agents-a365-tooling-extensions-agentframework/microsoft_agents_a365/tooling/extensions/agentframework/services/mcp_tool_registration_service.py +++ b/libraries/microsoft-agents-a365-tooling-extensions-agentframework/microsoft_agents_a365/tooling/extensions/agentframework/services/mcp_tool_registration_service.py @@ -15,7 +15,7 @@ from microsoft_agents_a365.tooling.utils.constants import Constants from microsoft_agents_a365.tooling.utils.utility import ( - get_ppapi_token_scope, + get_mcp_platform_authentication_scope, get_use_environment_id, ) @@ -71,7 +71,7 @@ async def add_tool_servers_to_agent( try: # Exchange token if not provided if not auth_token: - scopes = get_ppapi_token_scope() + scopes = get_mcp_platform_authentication_scope() authToken = await auth.exchange_token(turn_context, scopes, "AGENTIC") auth_token = authToken.token