diff --git a/dotnet/samples/GettingStarted/FoundryAgents/FoundryAgents_Step27_LocalMCP/FoundryAgents_Step27_LocalMCP.csproj b/dotnet/samples/GettingStarted/FoundryAgents/FoundryAgents_Step27_LocalMCP/FoundryAgents_Step27_LocalMCP.csproj
new file mode 100644
index 0000000000..1e3e6f57e3
--- /dev/null
+++ b/dotnet/samples/GettingStarted/FoundryAgents/FoundryAgents_Step27_LocalMCP/FoundryAgents_Step27_LocalMCP.csproj
@@ -0,0 +1,22 @@
+
+
+
+ Exe
+ net10.0
+
+ enable
+ enable
+ $(NoWarn);CA1812
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dotnet/samples/GettingStarted/FoundryAgents/FoundryAgents_Step27_LocalMCP/Program.cs b/dotnet/samples/GettingStarted/FoundryAgents/FoundryAgents_Step27_LocalMCP/Program.cs
new file mode 100644
index 0000000000..6b1d22c14b
--- /dev/null
+++ b/dotnet/samples/GettingStarted/FoundryAgents/FoundryAgents_Step27_LocalMCP/Program.cs
@@ -0,0 +1,83 @@
+// Copyright (c) Microsoft. All rights reserved.
+
+// This sample demonstrates how to use a local MCP (Model Context Protocol) client with Azure Foundry Agents.
+// The MCP tools are resolved locally by connecting directly to the MCP server via HTTP,
+// and then passed to the Foundry agent as client-side tools.
+// This sample uses the Microsoft Learn MCP endpoint to search documentation.
+
+using Azure.AI.Projects;
+using Azure.Identity;
+using Microsoft.Agents.AI;
+using Microsoft.Extensions.AI;
+using ModelContextProtocol.Client;
+
+string endpoint = Environment.GetEnvironmentVariable("AZURE_FOUNDRY_PROJECT_ENDPOINT") ?? throw new InvalidOperationException("AZURE_FOUNDRY_PROJECT_ENDPOINT is not set.");
+string deploymentName = Environment.GetEnvironmentVariable("AZURE_FOUNDRY_PROJECT_DEPLOYMENT_NAME") ?? "gpt-4o-mini";
+
+const string AgentInstructions = "You are a helpful assistant that can help with Microsoft documentation questions. Use the Microsoft Learn MCP tool to search for documentation.";
+const string AgentName = "DocsAgent";
+
+// Connect to the MCP server locally via HTTP (Streamable HTTP transport).
+// The MCP server is hosted at Microsoft Learn and provides documentation search capabilities.
+Console.WriteLine("Connecting to MCP server at https://learn.microsoft.com/api/mcp ...");
+
+await using McpClient mcpClient = await McpClient.CreateAsync(new HttpClientTransport(new()
+{
+ Endpoint = new Uri("https://learn.microsoft.com/api/mcp"),
+ Name = "Microsoft Learn MCP",
+}));
+
+// Retrieve the list of tools available on the MCP server (resolved locally).
+IList mcpTools = await mcpClient.ListToolsAsync();
+Console.WriteLine($"MCP tools available: {string.Join(", ", mcpTools.Select(t => t.Name))}");
+
+// Wrap each MCP tool with a DelegatingAIFunction to log local invocations.
+List wrappedTools = mcpTools.Select(tool => (AITool)new LoggingMcpTool(tool)).ToList();
+
+// Get a client to create/retrieve/delete server side agents with Azure Foundry Agents.
+AIProjectClient aiProjectClient = new(new Uri(endpoint), new AzureCliCredential());
+
+// Create the agent with the locally-resolved MCP tools.
+AIAgent agent = await aiProjectClient.CreateAIAgentAsync(
+ model: deploymentName,
+ name: AgentName,
+ instructions: AgentInstructions,
+ tools: wrappedTools);
+
+Console.WriteLine($"Agent '{agent.Name}' created successfully.");
+
+try
+{
+ // First query
+ const string Prompt1 = "How does one create an Azure storage account using az cli?";
+ Console.WriteLine($"\nUser: {Prompt1}\n");
+ AgentResponse response1 = await agent.RunAsync(Prompt1);
+ Console.WriteLine($"Agent: {response1}");
+
+ Console.WriteLine("\n=======================================\n");
+
+ // Second query
+ const string Prompt2 = "What is Microsoft Agent Framework?";
+ Console.WriteLine($"User: {Prompt2}\n");
+ AgentResponse response2 = await agent.RunAsync(Prompt2);
+ Console.WriteLine($"Agent: {response2}");
+}
+finally
+{
+ // Cleanup by removing the agent when done
+ await aiProjectClient.Agents.DeleteAgentAsync(agent.Name);
+ Console.WriteLine($"\nAgent '{agent.Name}' deleted.");
+}
+
+///
+/// Wraps an MCP tool to log when it is invoked locally,
+/// confirming that the MCP call is happening client-side.
+///
+internal sealed class LoggingMcpTool(AIFunction innerFunction) : DelegatingAIFunction(innerFunction)
+{
+ protected override ValueTask