Skip to content

Commit d582e49

Browse files
committed
Mattchenderson review comments
1 parent adef564 commit d582e49

File tree

3 files changed

+35
-18
lines changed

3 files changed

+35
-18
lines changed

articles/azure-functions/TOC.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1015,14 +1015,14 @@
10151015
- name: Output
10161016
href: functions-bindings-kafka-output.md
10171017
displayName: Kafka
1018-
- name: MCP server
1018+
- name: MCP tool
10191019
items:
10201020
- name: Overview
10211021
href: functions-bindings-mcp.md
1022-
displayName: MCP server
1022+
displayName: MCP tool
10231023
- name: Trigger
10241024
href: functions-bindings-mcp-trigger.md
1025-
displayName: MCP server
1025+
displayName: MCP tool
10261026
- name: Mobile Apps
10271027
href: functions-bindings-mobile-apps.md
10281028
- name: Notification Hubs

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

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ For information on setup and configuration details, see the [overview](functions
2222
## Example
2323

2424
::: zone pivot="programming-language-csharp"
25-
>[!TIP]
25+
>[!NOTE]
2626
>The Azure Functions MCP extension supports only the [isolated worker model](dotnet-isolated-process-guide.md).
2727
2828
This code creates an endpoint to expose a tool named `GetSnippet` that tries to retrieve a code snippet by name from blob storage.
@@ -47,7 +47,7 @@ This code creates an endpoint to expose a tool named `SaveSnippets` that tries t
4747
For the complete code example, see [Snippets.java](https://github.com/Azure-Samples/remote-mcp-functions-java/blob/main/src/main/java/com/function/Snippets.java).
4848
::: zone-end
4949
::: zone pivot="programming-language-javascript"
50-
Example code for JavaScript isn't currently available.
50+
Example code for JavaScript isn't currently available. See the TypeScript examples for general guidance using Node.js.
5151
::: zone-end
5252
::: zone pivot="programming-language-typescript"
5353
This code creates an endpoint to expose a tool named `getsnippet` that tries to retrieve a code snippet by name from blob storage.
@@ -99,7 +99,7 @@ See [Usage](#usage) to learn how to define properties of the endpoint as input p
9999

100100
## Annotations
101101

102-
The `McpTrigger` annotation creates a function that exposes a tool endpoint in your MCP server.
102+
The `McpTrigger` annotation creates a function that exposes a tool endpoint in your remote MCP server.
103103

104104
The annotation supports the following configuration options:
105105

@@ -151,7 +151,11 @@ See the [Example section](#example) for complete examples.
151151

152152
::: zone pivot="programming-language-csharp"
153153

154-
The MCP protocol enables an MCP server to make known to clients other properties of a tool endpoint. In C#, you can define one or more tool properties by applying the `McpToolProperty` attribute to input binding-style parameters in your function.
154+
The MCP protocol enables an MCP server to make known to clients other properties of a tool endpoint. In C#, you can define properties of your tools as either input parameters using the `McpToolProperty` attribute to your trigger function code or by using the `FunctionsApplicationBuilder` when the app starts.
155+
156+
### [`McpToolPropertyAttribute`](#tab\attribute)
157+
158+
You can define one or more tool properties by applying the `McpToolProperty` attribute to input binding-style parameters in your function.
155159

156160
The `McpToolPropertyAttribute` type supports these properties:
157161

@@ -161,9 +165,21 @@ The `McpToolPropertyAttribute` type supports these properties:
161165
| **PropertyType** | The data type of the tool property, such as `string`. |
162166
| **Description** | (Optional) Description of what the tool property does. |
163167

168+
You can see these attributes used in the `SaveSnippet` tool in the [Examples](#example).
169+
170+
### [`FunctionsApplicationBuilder`](#tab\builder)
171+
172+
You can define tool properties in your entry point (program.cs) file by using the `McpToolBuilder` returned by the `ConfigureMcpTool` method on `FunctionsApplicationBuilder`. This examples calls the `WithProperty` method on the builder for the `GetSnippet` tool to set the properties of the tool:
173+
174+
:::code language="csharp" source="~/remote-mcp-functions-dotnet/src/Program.cs" range="5-15" :::
175+
176+
For the complete example, see the [program.cs file](https://github.com/Azure-Samples/remote-mcp-functions-dotnet/blob/main/src/Program.cs).
177+
178+
---
179+
164180
::: zone-end
165181
::: zone pivot="programming-language-java,programming-language-python"
166-
Properties of a tool exposed by your MCP server are defined using tool properties. These properties are returned by the `toolProperties` field, which is a string representation of an array of `ToolProperty` objects.
182+
Properties of a tool exposed by your remote MCP server are defined using tool properties. These properties are returned by the `toolProperties` field, which is a string representation of an array of `ToolProperty` objects.
167183

168184
A `ToolProperty` object has this structure:
169185

@@ -176,7 +192,7 @@ A `ToolProperty` object has this structure:
176192
```
177193
::: zone-end
178194
::: zone pivot="programming-language-javascript,programming-language-typescript"
179-
Properties of a tool exposed by your MCP server are defined using tool properties. These properties are returned by the `toolProperties` field, which is a string representation of an array of `ToolProperty` objects.
195+
Properties of a tool exposed by your remote MCP server are defined using tool properties. These properties are returned by the `toolProperties` field, which is a string representation of an array of `ToolProperty` objects.
180196

181197
A `ToolProperty` object has this structure:
182198

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

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
2-
title: MCP bindings for Azure Functions
3-
description: Learn how you can expose your functions as a model content protocol (MCP) server using bindings in Azure Functions.
2+
title: MCP tool bindings for Azure Functions
3+
description: Learn how you can expose your functions as model content protocol (MCP) tools using bindings in Azure Functions.
44
ms.topic: reference
55
ms.date: 05/03/2025
66
ms.custom:
@@ -12,18 +12,19 @@ zone_pivot_groups: programming-languages-set-functions
1212
---
1313

1414

15-
# MCP bindings for Azure Functions overview
15+
# MCP tool bindings for Azure Functions overview
1616

1717
The [Model Content 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

1919
[!INCLUDE [functions-mcp-extension-preview-note](../../includes/functions-mcp-extension-preview-note.md)]
2020

21-
The Azure Functions MCP extension allows you to use Azure Functions to create custom MCP servers. Your function app implements an MCP server by defining a set of MCP tool endpoints that are MCP trigger functions. MCP clients, such as language models and agents, can query and access these tools to do specific tasks, such as storing or accessing code snippets. MCP clients can also subscribe to your app to receive notifications about changes to the exposed tools.
21+
The Azure Functions MCP extension allows you to use Azure Functions to create remote MCP servers. Your function app implements a remote MCP server by exposing a set of endpoints that are implemented as MCP tool trigger functions. MCP clients, such as language models and agents, can query and access these tools to do specific tasks, such as storing or accessing code snippets. MCP clients can also subscribe to your app to receive notifications about changes to the exposed tools.
2222

2323
[!INCLUDE [functions-mcp-extension-powershell-note](../../includes/functions-mcp-extension-powershell-note.md)]
24-
::: zone pivot="programming-language-csharp"
2524
## Prerequisites
2625

26+
+ The MCP tool trigger relies on Azure Queue storage provided by the [default host storage account](./storage-considerations.md) (`AzureWebJobsStorage`). When using managed identities, 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).
27+
::: zone pivot="programming-language-csharp"
2728
+ Requires version 2.0.2 or later of the `Microsoft.Azure.Functions.Worker.Sdk` package.
2829

2930
## Install extension
@@ -72,14 +73,14 @@ To use this experimental bundle in your app, replace the existing `extensionBund
7273

7374
| Property | Description |
7475
| ----- | ----- |
75-
| **instructions** | Describes to clients how to access the server. |
76-
| **serverName** | A friendly name for the server. |
77-
| **serverVersion** | Current version of the server. |
76+
| **instructions** | Describes to clients how to access the remote MCP server. |
77+
| **serverName** | A friendly name for the remote MCP server. |
78+
| **serverVersion** | Current version of the remote MCP server. |
7879

7980

8081
## Related articles
8182

82-
[Create a tool endpoint in your MCP server](./functions-bindings-mcp-trigger.md)
83+
[Create a tool endpoint in your remote MCP server](./functions-bindings-mcp-trigger.md)
8384

8485

8586
[extension bundle]: ./functions-bindings-register.md#extension-bundles

0 commit comments

Comments
 (0)