Skip to content

Commit 588402c

Browse files
Merge pull request #306867 from MicrosoftDocs/main
Auto Publish – main to live - 2025-10-14 05:00 UTC
2 parents 99ba19a + 86ac8aa commit 588402c

14 files changed

Lines changed: 203 additions & 52 deletions

articles/azure-functions/functions-bindings-mcp-trigger.md

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ zone_pivot_groups: programming-languages-set-functions
1616

1717
Use the MCP tool trigger to define tool endpoints in a [Model Content Protocol (MCP)](https://github.com/modelcontextprotocol) server. Client language models and agents can use tools to perform specific tasks, such as storing or accessing code snippets.
1818

19-
[!INCLUDE [functions-mcp-extension-preview-note](../../includes/functions-mcp-extension-preview-note.md)]
20-
2119
For information on setup and configuration details, see the [overview](functions-bindings-mcp.md).
2220

2321
## Example
@@ -73,8 +71,6 @@ builder.Services
7371
.AddApplicationInsightsTelemetryWorkerService()
7472
.ConfigureFunctionsApplicationInsights();
7573

76-
builder.EnableMcpToolMetadata();
77-
7874
builder
7975
.ConfigureMcpTool("get_snippets")
8076
.WithProperty("snippetname", "string", "The name of the snippet.");
@@ -440,20 +436,6 @@ In C#, you can define properties for your tools in several ways. Which approach
440436
- You define a custom type with the properties, and the function binds to that type.
441437
- You use the `FunctionsApplicationBuilder` to define properties in your `Program.cs` file.
442438

443-
In all cases, you must include a call to `builder.EnableMcpToolMetadata()` in your `Program.cs`:
444-
445-
```csharp
446-
var builder = FunctionsApplication.CreateBuilder(args);
447-
448-
builder.ConfigureFunctionsWebApplication();
449-
450-
builder.EnableMcpToolMetadata();
451-
452-
// other configuration
453-
454-
builder.Build().Run();
455-
```
456-
457439
#### [`McpToolProperty` attribute](#tab/attribute)
458440

459441
You can define one or more tool properties by applying the `McpToolProperty` attribute to input binding-style parameters in your function.
@@ -507,8 +489,6 @@ var builder = FunctionsApplication.CreateBuilder(args);
507489

508490
builder.ConfigureFunctionsWebApplication();
509491

510-
builder.EnableMcpToolMetadata();
511-
512492
builder
513493
.ConfigureMcpTool("get_snippets")
514494
.WithProperty("snippetname", "string", "The name of the snippet.");

articles/azure-functions/functions-bindings-mcp.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ zone_pivot_groups: programming-languages-set-functions
1616

1717
The [Model Context Protocol (MCP)](https://github.com/modelcontextprotocol) is a client-server protocol intended to enable language models and agents to more efficiently discover and use external data sources and tools.
1818

19-
[!INCLUDE [functions-mcp-extension-preview-note](../../includes/functions-mcp-extension-preview-note.md)]
20-
2119
The Azure Functions MCP extension allows you to use Azure Functions to create remote MCP servers. These servers can host MCP tool trigger functions, which MCP clients, such as language models and agents, can query and access to do specific tasks.
2220

2321
| Action | Type |
@@ -28,10 +26,11 @@ The Azure Functions MCP extension allows you to use Azure Functions to create re
2826
[!INCLUDE [functions-mcp-extension-powershell-note](../../includes/functions-mcp-extension-powershell-note.md)]
2927
## Prerequisites
3028

31-
+ The MCP extension relies on Azure Queue storage provided by the [default host storage account](./storage-considerations.md) (`AzureWebJobsStorage`). When using identity-based connections, make sure that your function app has at least the equivalent of these role-based permissions in the host storage account: [Storage Queue Data Reader](/azure/role-based-access-control/built-in-roles#storage-queue-data-reader) and [Storage Queue Data Message Processor](/azure/role-based-access-control/built-in-roles#storage-queue-data-message-processor).
29+
+ When you use the SSE transport, the MCP extension relies on Azure Queue storage provided by the [default host storage account](./storage-considerations.md) (`AzureWebJobsStorage`). When using identity-based connections, make sure that your function app has at least the equivalent of these role-based permissions in the host storage account: [Storage Queue Data Reader](/azure/role-based-access-control/built-in-roles#storage-queue-data-reader) and [Storage Queue Data Message Processor](/azure/role-based-access-control/built-in-roles#storage-queue-data-message-processor).
3230
+ When running locally, the MCP extension requires version 4.0.7030 of the [Azure Functions Core Tools](functions-run-local.md), or a later version.
3331
::: zone pivot="programming-language-csharp"
34-
+ Requires version 2.0.2 or later of the `Microsoft.Azure.Functions.Worker.Sdk` package.
32+
+ Requires version 2.1.0 or later of the `Microsoft.Azure.Functions.Worker` package.
33+
+ Requires version 2.0.2 or later of the `Microsoft.Azure.Functions.Worker.Sdk` package.
3534

3635
## Install extension
3736

@@ -46,17 +45,16 @@ Add the extension to your project by installing this [NuGet package](https://www
4645
<!---At GA, replace with:
4746
[!INCLUDE [functions-install-extension-bundle](../../includes/functions-install-extension-bundle.md)]
4847
-->
49-
[!INCLUDE [functions-extension-bundles-json-preview](../../includes/functions-extension-bundles-json-preview.md)]
48+
> [!IMPORTANT]
49+
> A generally available version of the extension is now available. However, it isn’t yet included in the default extension bundle. The instructions show how to use the preview extension bundle, which includes an earlier preview version of the MCP extension, along with other preview dependencies. For now, to use the generally available version of the extension, you must [manually install the extension](./functions-bindings-register.md#explicitly-install-extensions).
50+
[!INCLUDE [functions-extension-bundles-json-preview](../../includes/functions-extension-bundles-json-preview.md)]
5051
::: zone-end
5152

5253
## host.json settings
5354

5455
[!INCLUDE [functions-host-json-section-intro](../../includes/functions-host-json-section-intro.md)]
5556

56-
> [!NOTE]
57-
> Until the extension is no longer in preview, the JSON schema for `host.json` isn't updated, and specific properties and behaviors might change. During the preview period, you might see warnings in your editor that say the `mcp` section isn't recognized. You can safely ignore these warnings.
58-
59-
You can use `host.json` to define MCP server information.
57+
You can use the `extensions.mcp` section in `host.json` to define MCP server information.
6058

6159
```json
6260
{
@@ -66,6 +64,7 @@ You can use `host.json` to define MCP server information.
6664
"instructions": "Some test instructions on how to use the server",
6765
"serverName": "TestServer",
6866
"serverVersion": "2.0.0",
67+
"encryptClientState": true,
6968
"messageOptions": {
7069
"useAbsoluteUriForEndpoint": false
7170
}
@@ -79,6 +78,7 @@ You can use `host.json` to define MCP server information.
7978
| **instructions** | Describes to clients how to access the remote MCP server. |
8079
| **serverName** | A friendly name for the remote MCP server. |
8180
| **serverVersion** | Current version of the remote MCP server. |
81+
| **encryptClientState** | Determines if client state is encrypted. Defaults to true. Setting to false may be useful for debugging and test scenarios but isn't recommended for production. |
8282
| **messageOptions** | Options object for the message endpoint in the SSE transport. |
8383
| **messageOptions.UseAbsoluteUriForEndpoint** | Defaults to `false`. Only applicable to the server-sent events (SSE) transport; this setting doesn't affect the Streamable HTTP transport. If set to `false`, the message endpoint is provided as a relative URI during initial connections over the SSE transport. If set to `true`, the message endpoint is returned as an absolute URI. Using a relative URI isn't recommended unless you have a specific reason to do so.|
8484

@@ -91,15 +91,15 @@ To connect to the MCP server exposed by your function app, you need to provide a
9191
| Streamable HTTP | `/runtime/webhooks/mcp` |
9292
| Server-Sent Events (SSE)<sup>1</sup> | `/runtime/webhooks/mcp/sse` |
9393

94-
<sup>1</sup> Newer protocol versions have deprecated the Server-Sent Events transport. Unless your client specifically requires it, you should use the Streamable HTTP transport instead.
94+
<sup>1</sup> Newer protocol versions deprecated the Server-Sent Events transport. Unless your client specifically requires it, you should use the Streamable HTTP transport instead.
9595

9696
When hosted in Azure, the endpoints exposed by the extension also require the [system key](./function-keys-how-to.md) named `mcp_extension`. If it isn't provided in the `x-functions-key` HTTP header, your client receives a `401 Unauthorized` response. You can retrieve the key using any of the methods described in [Get your function access keys](./function-keys-how-to.md#get-your-function-access-keys). The following example shows how to get the key with the Azure CLI:
9797

9898
```azurecli
9999
az functionapp keys list --resource-group <RESOURCE_GROUP> --name <APP_NAME> --query systemKeys.mcp_extension --output tsv
100100
```
101101

102-
MCP clients accept this configuration in various ways. Consult the documentation for your chosen client. The following example shows an `mcp.json` file like you might use to [configure MCP servers for GitHub Copilot in Visual Studio Code](https://code.visualstudio.com/docs/copilot/customization/mcp-servers#_configuration-format). The example sets up two servers, both using the Streamable HTTP transport. The first is for local testing with the Azure Functions Core Tools. The second is for a function app hosted in Azure. The configuration takes input parameters for which VS Code prompts you when you first run the remote server. Using inputs ensures that secrets like the system key aren't saved to the file and checked into source control.
102+
MCP clients accept this configuration in various ways. Consult the documentation for your chosen client. The following example shows an `mcp.json` file like you might use to [configure MCP servers for GitHub Copilot in Visual Studio Code](https://code.visualstudio.com/docs/copilot/customization/mcp-servers#_configuration-format). The example sets up two servers, both using the Streamable HTTP transport. The first is for local testing with the Azure Functions Core Tools. The second is for a function app hosted in Azure. The configuration takes input parameters for which Visual Studio Code prompts you when you first run the remote server. Using inputs ensures that secrets like the system key aren't saved to the file and checked into source control.
103103

104104
```json
105105
{

articles/backup/back-up-azure-stack-hyperconverged-infrastructure-virtual-machines.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: Back up Azure Local virtual machines with MABS
33
description: This article contains the procedures to back up and recover virtual machines using Microsoft Azure Backup Server (MABS).
44
ms.topic: how-to
5-
ms.date: 03/06/2025
5+
ms.date: 10/14/2025
66
ms.service: azure-backup
77
ms.custom: engagement-fy24
88
author: AbhishekMallick-MS
@@ -91,8 +91,9 @@ These are the prerequisites for backing up virtual machines with MABS:
9191
```
9292
Install DPMAgentInstaller.exe`
9393
```
94-
>[!Note]
95-
>Default Application Control settings may prevent agent deployment, [switch application control to "Audit" mode](/azure/azure-local/manage/manage-wdac#switch-application-control-policy-modes) before agent installation to work around this issue. After deployment is complete, it is highly recommended to switch the application control back to "Enforced" mode.
94+
>[!Note]
95+
>Default Application Control settings may prevent agent deployment, [switch application control to "Audit" mode](/azure/azure-local/manage/manage-wdac#switch-application-control-policy-modes) before agent installation to work around this issue. After deployment is complete, we recommend that you switch the application control back to **Enforced** mode.
96+
9697
2. After the installation is complete, run the following command to configure the agent on the node:
9798
9899
```

articles/firewall/firewall-best-practices.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@ Use the following best practices for testing and monitoring:
7272
- Look for spikes in network performance or latency. Correlate rule hit timestamps, such as application rules hit count and network rules hit count, to determine if rule processing is a significant factor contributing to performance or latency issues. By analyzing these patterns, you can identify specific rules or configurations that you might need to optimize.
7373
- **Add alerts to key metrics**
7474
- In addition to regular monitoring, it's crucial to set up alerts for key firewall metrics. This ensures that you're promptly notified when specific metrics surpass predefined thresholds. To configure alerts, see [Azure Firewall logs and metrics](metrics.md#alert-on-azure-firewall-metrics) for detailed instructions about setting up effective alerting mechanisms. Proactive alerting enhances your ability to respond swiftly to potential issues and maintain optimal firewall performance.
75+
- **Track configuration changes**
76+
- Monitor changes to firewall rules and policies to maintain security compliance and troubleshoot issues. For comprehensive rule set change tracking using Azure Resource Graph, see [Track rule set changes](rule-set-change-tracking.md).
7577

7678
## Next steps
7779

articles/firewall/firewall-workbook.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,3 +153,4 @@ The investigation section enables exploration and troubleshooting, offering addi
153153
## Next steps
154154

155155
- Learn more about [Azure Firewall Diagnostics](firewall-diagnostics.md)
156+
- Learn how to [Track rule set changes](rule-set-change-tracking.md) using Azure Resource Graph

articles/firewall/monitor-firewall-reference.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,4 +219,5 @@ To create a diagnostic setting and enable Resource Specific Table, see [Create d
219219
## Related content
220220

221221
- See [Monitor Azure Firewall](monitor-firewall.md) for a description of monitoring Azure Firewall.
222+
- See [Track rule set changes](rule-set-change-tracking.md) for detailed Azure Resource Graph queries to track firewall rule modifications.
222223
- See [Monitor Azure resources with Azure Monitor](/azure/azure-monitor/essentials/monitor-azure-resource) for details on monitoring Azure resources.

articles/firewall/monitor-firewall.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,23 +40,25 @@ For the available resource log categories, their associated Log Analytics tables
4040
You can also connect to your storage account and retrieve the JSON log entries for access and performance logs. After you download the JSON files, you can convert them to CSV and view them in Excel, Power BI, or any other data-visualization tool.
4141

4242
> [!TIP]
43-
> If you are familiar with Visual Studio and basic concepts of changing values for constants and variables in C#, you can use the [log converter tools](https://github.com/Azure-Samples/networking-dotnet-log-converter) available from GitHub.
43+
> If you're familiar with Visual Studio and basic concepts of changing values for constants and variables in C#, you can use the [log converter tools](https://github.com/Azure-Samples/networking-dotnet-log-converter) available from GitHub.
4444
4545
[!INCLUDE [horz-monitor-activity-log](~/reusable-content/ce-skilling/azure/includes/azure-monitor/horizontals/horz-monitor-activity-log.md)]
4646

4747
## Change tracking (Preview) 
4848

4949
Azure Resource Graph (ARG) is an Azure service designed to provide efficient and performant resource exploration at scale.  Azure Resource Graph (ARG) provides change analysis data for various management and troubleshooting scenarios. Users can find when changes were detected on an Azure Resource Manager (ARM) property, view property change details and query changes at scale across their subscription, management group, or tenant. 
5050

51-
ARG change analysis recently added support for RuleCollectionGroups. You can now track changes to Azure Firewall Rule Collection Groups using an Azure Resource Graph query from the Azure Portal ResourceGraphExplorer page using a query like this:  
51+
ARG change analysis recently added support for RuleCollectionGroups. You can now track changes to Azure Firewall Rule Collection Groups using an Azure Resource Graph query from the Azure portal ResourceGraphExplorer page using a query like this:  
5252

5353
:::image type="content" source="media/monitor-firewall/query.png" alt-text="Screenshot of the Azure Resource Graph query to track changes to Azure Firewall Rule Collection Groups.":::
5454

5555
Below is a sample change output.  
5656

5757
:::image type="content" source="media/monitor-firewall/output.png" alt-text="Screenshot of the output that depicts the change to Azure Firewall Rule Collection Groups.":::
5858

59-
This capability can help you track changes made to your firewall rules helping ensure accountability for a sensitive resource like a firewall.
59+
This capability can help you track changes made to your firewall rules helping ensure accountability for a sensitive resource like a firewall.
60+
61+
For comprehensive tracking of rule set changes with detailed queries and examples, see [Track rule set changes](rule-set-change-tracking.md).
6062

6163
## Structured Azure Firewall logs
6264

@@ -87,7 +89,7 @@ In **Resource specific** mode, individual tables in the selected workspace are c
8789
New resource specific tables are now available in Diagnostic setting that allows you to utilize the following categories:
8890

8991
- [Network rule log](/azure/azure-monitor/reference/tables/azfwnetworkrule) - Contains all Network Rule log data. Each match between data plane and network rule creates a log entry with the data plane packet and the matched rule's attributes.
90-
- [NAT rule log](/azure/azure-monitor/reference/tables/azfwnatrule) - Contains all DNAT (Destination Network Address Translation) events log data. Each match between data plane and DNAT rule creates a log entry with the data plane packet and the matched rule's attributes. Asa note, the AZFWNATRule table logs only when a DNAT rule match occurs. If there is no match, no log is generated.
92+
- [NAT rule log](/azure/azure-monitor/reference/tables/azfwnatrule) - Contains all DNAT (Destination Network Address Translation) events log data. Each match between data plane and DNAT rule creates a log entry with the data plane packet and the matched rule's attributes. As a note, the AZFWNATRule table logs only when a DNAT rule match occurs. If there's no match, no log is generated.
9193
- [Application rule log](/azure/azure-monitor/reference/tables/azfwapplicationrule) - Contains all Application rule log data. Each match between data plane and Application rule creates a log entry with the data plane packet and the matched rule's attributes.
9294
- [Threat Intelligence log](/azure/azure-monitor/reference/tables/azfwthreatintel) - Contains all Threat Intelligence events.
9395
- [IDPS log](/azure/azure-monitor/reference/tables/azfwidpssignature) - Contains all data plane packets that were matched with one or more IDPS signatures.
@@ -112,7 +114,7 @@ To enable Azure Firewall structured logs, you must first configure a Log Analyti
112114
Once you configure the Log Analytics workspace, you can enable structured logs in Azure Firewall by navigating to the Firewall's **Diagnostic settings** page in the Azure portal. From there, you must select the **Resource specific** destination table and select the type of events you want to log.
113115

114116
> [!NOTE]
115-
> * To enable Azure Firewall Fat Flow Log (Top flow log) you need to configure it through Azure PowerShell. For more information, see [Top flows log](monitor-firewall-reference.md#top-flows).
117+
> * To enable Azure Firewall Fat Flow Log (Top flow log), you need to configure it through Azure PowerShell. For more information, see [Top flows log](monitor-firewall-reference.md#top-flows).
116118
117119
:::image type="content" source="media/firewall-structured-logs/diagnostics-setting-resource-specific.png" alt-text="Screenshot of Diagnostics settings page.":::
118120

0 commit comments

Comments
 (0)