From f31ed0ded914e094f3ac5d811997b2cefc55836b Mon Sep 17 00:00:00 2001 From: SergeyMenshykh Date: Tue, 2 Jun 2026 11:29:28 +0100 Subject: [PATCH] Use MCPStreamableHTTPTool in MCP skills sample Replace raw mcp library imports (ClientSession, streamable_http_client) with the framework's MCPStreamableHTTPTool to keep MCP server connections consistent regardless of whether skills are enabled. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../skills/mcp_based_skill/mcp_based_skill.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/python/samples/02-agents/skills/mcp_based_skill/mcp_based_skill.py b/python/samples/02-agents/skills/mcp_based_skill/mcp_based_skill.py index a85841cd4d..0b0de2b912 100644 --- a/python/samples/02-agents/skills/mcp_based_skill/mcp_based_skill.py +++ b/python/samples/02-agents/skills/mcp_based_skill/mcp_based_skill.py @@ -7,12 +7,10 @@ import os # using the sample's Skills APIs. # import warnings # warnings.filterwarnings("ignore", message=r"\[SKILLS\].*", category=FutureWarning) -from agent_framework import Agent, MCPSkillsSource, SkillsProvider +from agent_framework import Agent, MCPSkillsSource, MCPStreamableHTTPTool, SkillsProvider from agent_framework.foundry import FoundryChatClient from azure.identity import AzureCliCredential from dotenv import load_dotenv -from mcp.client.session import ClientSession -from mcp.client.streamable_http import streamable_http_client """ MCP-Based Agent Skills @@ -42,15 +40,14 @@ async def main() -> None: print("Discovering MCP-based skills") print("-" * 60) - # 1. Connect to the MCP server over streamable HTTP. - async with streamable_http_client(url=mcp_url) as (read, write, _), ClientSession(read, write) as session: - await session.initialize() - + # 1. Connect to the MCP server using the framework's MCP client. + mcp_tool = MCPStreamableHTTPTool(name="skills-server", url=mcp_url, load_tools=False) + async with mcp_tool: # 2. Build a SkillsProvider that discovers skills over MCP. # MCPSkillsSource reads skill://index.json and creates one # MCPSkill per skill-md entry; SKILL.md bodies are fetched # on demand via resources/read. - skills_provider = SkillsProvider(MCPSkillsSource(client=session)) + skills_provider = SkillsProvider(MCPSkillsSource(client=mcp_tool.session)) # type: ignore[arg-type] # 3. Run the agent. client = FoundryChatClient(