mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
c6951c21f6
* Add MCP-based skills discovery (McpSkill, McpSkillsSource, McpSkillResource)
Implement Agent Skills discovery over MCP following the SEP-2640 convention:
- McpSkillsSource: reads skill://index.json to discover skills served by an MCP server
- McpSkill: lazily fetches SKILL.md content via resources/read on demand
- McpSkillResource: wraps MCP resource results (text and binary)
- Path traversal protection in get_resource for defense in depth
- Samples for Foundry Toolbox and standalone MCP skills server
- Comprehensive unit tests (514 lines)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Address PR review comments: rename to MCP* convention, fix error handling and samples
- Rename McpSkill/McpSkillResource/McpSkillsSource to MCPSkill/MCPSkillResource/MCPSkillsSource
- Add data-URI prefix stripping for blob resource decoding
- Let non-McpError exceptions propagate from get_resource()
- Fix contradictory test comment
- Use interactive input() in mcp_based_skill sample
- Remove misleading sample output block
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Restore debug logging for McpError in get_resource()
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Use AzureCliCredential in Foundry toolbox skills sample for consistency
Replace DefaultAzureCredential with AzureCliCredential to match the
credential convention used in all other samples.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* 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>
* Branch on McpError.error.code so only not-found errors return empty
Previously _try_read_index() and get_resource() swallowed every McpError
as 'no skills available', making auth failures, server crashes, and
connection drops indistinguishable from a server that simply has no
skills.
Now only two codes are treated as not-found:
- -32002 (MCP-spec Resource not found)
- -32601 (METHOD_NOT_FOUND — server lacks resources/read)
All other McpError codes and non-McpError exceptions propagate with a
warning log, surfacing real failures visibly.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add tests for non-McpError and non-not-found error propagation in MCP skills
Cover the re-raise branch in MCPSkill.get_resource for plain
ConnectionError/TimeoutError, the generic McpError (code 0) propagation
on get_resource, and TimeoutError propagation in _try_read_index.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Revert "Use MCPStreamableHTTPTool in MCP skills sample"
This reverts commit f31ed0ded9.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Introduce MCP_SKILLS experimental feature for MCP skill classes
Add a separate MCP_SKILLS feature ID to ExperimentalFeature enum and
use it for MCPSkillResource, MCPSkill, and MCPSkillsSource, since their
promotion timeline is partly outside of our control.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
c6951c21f6
·
2026-06-03 18:09:50 +00:00
History
Foundry Provider Samples
This folder contains Azure AI Foundry and Foundry Local samples for Agent Framework.
FoundryAgent Samples
| File | Description |
|---|---|
foundry_agent_basic.py |
Foundry Agent basic example |
foundry_agent_custom_client.py |
Foundry Agent custom client configuration |
foundry_agent_hosted.py |
Foundry Agent for hosted agents |
foundry_agent_with_function_tools.py |
Foundry Agent with local function tools |
FoundryChatClient Samples
| File | Description |
|---|---|
foundry_chat_client.py |
Foundry Chat Client with project endpoint example |
foundry_chat_client_basic.py |
Foundry Chat Client basic example |
foundry_chat_client_code_interpreter_files.py |
Foundry Chat Client with code interpreter and files |
foundry_chat_client_image_analysis.py |
Foundry Chat Client with image analysis |
foundry_chat_client_with_code_interpreter.py |
Foundry Chat Client with code interpreter |
foundry_chat_client_with_explicit_settings.py |
Foundry Chat Client with explicit settings |
foundry_chat_client_with_file_search.py |
Foundry Chat Client with file search |
foundry_chat_client_with_function_tools.py |
Foundry Chat Client with function tools |
foundry_chat_client_with_hosted_mcp.py |
Foundry Chat Client with hosted MCP |
foundry_chat_client_with_local_mcp.py |
Foundry Chat Client with local MCP |
foundry_chat_client_with_session.py |
Foundry Chat Client with session management |
foundry_chat_client_with_toolbox.py |
Foundry Chat Client connected to a toolbox via its MCP endpoint using MCPStreamableHTTPTool |
foundry_chat_client_with_toolbox_skills.py |
Foundry Chat Client that discovers MCP-based skills from a Foundry Toolbox endpoint via MCPSkillsSource (uses an Azure AD bearer token and the toolbox preview header) |
FoundryLocalClient Samples
Prerequisites
-
Install Foundry Local and required local runtime components.
-
Install the connector package:
pip install agent-framework-foundry-local --pre
| File | Description |
|---|---|
foundry_local_agent.py |
Basic Foundry Local agent usage with streaming and non-streaming responses, plus function tool calling. |
Environment Variables
FOUNDRY_LOCAL_MODEL: Optional model alias/ID to use by default whenmodelis not passed toFoundryLocalClient.