Skip to content
This repository was archived by the owner on Sep 4, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 35 commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
295823e
Add custom words for function app to cspell configuration
colbytimm Jul 31, 2025
a60d467
Scaffold and setup Function app with list command
colbytimm Aug 4, 2025
d7c2329
Add test setup bicep
colbytimm Aug 4, 2025
5175ce1
Add unit tests for list command
colbytimm Aug 4, 2025
d79871d
Add live tests
colbytimm Aug 4, 2025
f190073
Add Azure Function App operations and test prompts
colbytimm Aug 4, 2025
1bb7753
Add "azurewebsites" to cspell dictionary and update README with Funct…
colbytimm Aug 5, 2025
46ef11f
Fix formatting
colbytimm Aug 5, 2025
e11e809
Remove unnecessary comments
colbytimm Aug 5, 2025
66c07bb
Update FunctionAppListCommandTests to include ResourceGroupName in ex…
colbytimm Aug 5, 2025
3fd3c12
Update codeowners
colbytimm Aug 5, 2025
5ddf883
Add additional test prompt for azmcp-aks-functionapp-list in e2eTestP…
colbytimm Aug 5, 2025
62d780d
Fix typo for function app e2e tests
colbytimm Aug 5, 2025
0a2a2a1
Add additional words to cspell configuration for content connection s…
colbytimm Aug 5, 2025
ff21840
Merge branch 'main' into feat/function-app-list
colbytimm Aug 5, 2025
a21429b
Update FunctionAppListCommand to inherit BaseFunctionAppCommand. Over…
colbytimm Aug 5, 2025
dc9c17f
Update subscription parameter name. Update cacheKey to remove unneces…
colbytimm Aug 7, 2025
8e67d70
Merge branch 'main' into feat/function-app-list
colbytimm Aug 7, 2025
8f00c34
Update changelog to include function app list command
colbytimm Aug 7, 2025
fc2ad62
Merge branch 'main' into feat/function-app-list
colbytimm Aug 8, 2025
214a26e
Rename areas directory to `functionapp`
colbytimm Aug 8, 2025
bf5d253
Remove duplicate
colbytimm Aug 8, 2025
7048bdd
Fix casing in function app directory paths in solution file
colbytimm Aug 8, 2025
1f1228d
Update .github/CODEOWNERS
jongio Aug 8, 2025
f9e51c5
Update .github/CODEOWNERS
jongio Aug 8, 2025
2ac753b
Update .github/CODEOWNERS
jongio Aug 8, 2025
0d5c94d
Update .github/CODEOWNERS
jongio Aug 8, 2025
bcc1032
Remove base function app options since they are not necessary and ext…
colbytimm Aug 12, 2025
17c4eb7
Remove option definition as it's not necessary for the list command.
colbytimm Aug 12, 2025
3efb30a
Update command group description to align with other areas.
colbytimm Aug 12, 2025
facc849
Refactor BaseFunctionAppCommand to use SubscriptionOptions and update…
colbytimm Aug 12, 2025
fd1493d
Update FunctionApp to be record and update references and unit tests.
colbytimm Aug 12, 2025
09d6a8a
Remove SubscriptionId from FunctionAppInfo and update related tests
colbytimm Aug 12, 2025
6295ae7
Refactor FunctionAppInfo to include JsonPropertyName attributes for s…
colbytimm Aug 12, 2025
3efe5f1
Update Azure.ResourceManager.AppService package version to 1.4.1
colbytimm Aug 12, 2025
1565b61
Merge branch 'main' into feat/function-app-list
colbytimm Aug 13, 2025
c0f9d76
Remove telemetry tag based on consolidation change in #935
colbytimm Aug 13, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,12 @@
# ServiceLabel: %area-Foundry
# ServiceOwners: @jayzzh @xiangyan99

# PRLabel: %area-FunctionApp
/areas/functionapp/ @jongio @Azure/azure-mcp

# ServiceLabel: %area-FunctionApp
# ServiceOwners: @jongio

# PRLabel: %area-Grafana
/src/Areas/Grafana/ @weng5e @xiangyan99 @Azure/azure-mcp

Expand Down
6 changes: 6 additions & 0 deletions .vscode/cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,7 @@
"azureterraformbestpractices",
"azuresdk",
"azuretools",
"azurewebsites",
"codegen",
"codeium",
"Codespace",
Expand All @@ -212,6 +213,8 @@
"codesign",
"CODEOWNERS",
"containerapps",
"CONTENTAZUREFILECONNECTIONSTRING",
"CONTENTSHARE",
"contoso",
"Cosell",
"cvzf",
Expand All @@ -233,6 +236,8 @@
"exfiltration",
"filefilters",
"fnames",
"functionapp",
"functionapps",
"gethealth",
"grpcio",
"Gsaascend",
Expand Down Expand Up @@ -302,6 +307,7 @@
"resourcegroups",
"Runtimes",
"searchdocs",
"serverfarms",
"servicebus",
"sessionhost",
"setparam",
Expand Down
54 changes: 54 additions & 0 deletions AzureMcp.sln
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,18 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AzureMcp.Core.UnitTests", "
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AzureMcp.Tests", "core\tests\AzureMcp.Tests\AzureMcp.Tests.csproj", "{527FE0F6-40AE-4E71-A483-0F0A2368F2A7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AzureMcp.FunctionApp", "areas\functionapp\src\AzureMcp.FunctionApp\AzureMcp.FunctionApp.csproj", "{E6E10688-A3CD-4C33-8E13-E0E905329272}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "functionapp", "functionapp", "{3310D97C-93BE-4434-BED7-81EB639B3141}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{4A85B59D-2802-46D2-B9D1-CDFE11A37945}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{C1C50B06-1175-49A1-81C6-59842EEFC51B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AzureMcp.FunctionApp.LiveTests", "areas\functionapp\tests\AzureMcp.FunctionApp.LiveTests\AzureMcp.FunctionApp.LiveTests.csproj", "{59A3843F-39AD-45C9-90A6-EBD40D644451}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AzureMcp.FunctionApp.UnitTests", "areas\functionapp\tests\AzureMcp.FunctionApp.UnitTests\AzureMcp.FunctionApp.UnitTests.csproj", "{5918EA72-9701-4223-B7BB-C64EB81B6351}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AzureMcp.AppConfig.UnitTests", "areas\appconfig\tests\AzureMcp.AppConfig.UnitTests\AzureMcp.AppConfig.UnitTests.csproj", "{A3ADC1CC-6020-7233-DCFA-106CA917B0CD}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "virtualdesktop", "virtualdesktop", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}"
Expand Down Expand Up @@ -1111,6 +1123,42 @@ Global
{527FE0F6-40AE-4E71-A483-0F0A2368F2A7}.Release|x64.Build.0 = Release|Any CPU
{527FE0F6-40AE-4E71-A483-0F0A2368F2A7}.Release|x86.ActiveCfg = Release|Any CPU
{527FE0F6-40AE-4E71-A483-0F0A2368F2A7}.Release|x86.Build.0 = Release|Any CPU
{E6E10688-A3CD-4C33-8E13-E0E905329272}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E6E10688-A3CD-4C33-8E13-E0E905329272}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E6E10688-A3CD-4C33-8E13-E0E905329272}.Debug|x64.ActiveCfg = Debug|Any CPU
{E6E10688-A3CD-4C33-8E13-E0E905329272}.Debug|x64.Build.0 = Debug|Any CPU
{E6E10688-A3CD-4C33-8E13-E0E905329272}.Debug|x86.ActiveCfg = Debug|Any CPU
{E6E10688-A3CD-4C33-8E13-E0E905329272}.Debug|x86.Build.0 = Debug|Any CPU
{E6E10688-A3CD-4C33-8E13-E0E905329272}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E6E10688-A3CD-4C33-8E13-E0E905329272}.Release|Any CPU.Build.0 = Release|Any CPU
{E6E10688-A3CD-4C33-8E13-E0E905329272}.Release|x64.ActiveCfg = Release|Any CPU
{E6E10688-A3CD-4C33-8E13-E0E905329272}.Release|x64.Build.0 = Release|Any CPU
{E6E10688-A3CD-4C33-8E13-E0E905329272}.Release|x86.ActiveCfg = Release|Any CPU
{E6E10688-A3CD-4C33-8E13-E0E905329272}.Release|x86.Build.0 = Release|Any CPU
{59A3843F-39AD-45C9-90A6-EBD40D644451}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{59A3843F-39AD-45C9-90A6-EBD40D644451}.Debug|Any CPU.Build.0 = Debug|Any CPU
{59A3843F-39AD-45C9-90A6-EBD40D644451}.Debug|x64.ActiveCfg = Debug|Any CPU
{59A3843F-39AD-45C9-90A6-EBD40D644451}.Debug|x64.Build.0 = Debug|Any CPU
{59A3843F-39AD-45C9-90A6-EBD40D644451}.Debug|x86.ActiveCfg = Debug|Any CPU
{59A3843F-39AD-45C9-90A6-EBD40D644451}.Debug|x86.Build.0 = Debug|Any CPU
{59A3843F-39AD-45C9-90A6-EBD40D644451}.Release|Any CPU.ActiveCfg = Release|Any CPU
{59A3843F-39AD-45C9-90A6-EBD40D644451}.Release|Any CPU.Build.0 = Release|Any CPU
{59A3843F-39AD-45C9-90A6-EBD40D644451}.Release|x64.ActiveCfg = Release|Any CPU
{59A3843F-39AD-45C9-90A6-EBD40D644451}.Release|x64.Build.0 = Release|Any CPU
{59A3843F-39AD-45C9-90A6-EBD40D644451}.Release|x86.ActiveCfg = Release|Any CPU
{59A3843F-39AD-45C9-90A6-EBD40D644451}.Release|x86.Build.0 = Release|Any CPU
{5918EA72-9701-4223-B7BB-C64EB81B6351}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5918EA72-9701-4223-B7BB-C64EB81B6351}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5918EA72-9701-4223-B7BB-C64EB81B6351}.Debug|x64.ActiveCfg = Debug|Any CPU
{5918EA72-9701-4223-B7BB-C64EB81B6351}.Debug|x64.Build.0 = Debug|Any CPU
{5918EA72-9701-4223-B7BB-C64EB81B6351}.Debug|x86.ActiveCfg = Debug|Any CPU
{5918EA72-9701-4223-B7BB-C64EB81B6351}.Debug|x86.Build.0 = Debug|Any CPU
{5918EA72-9701-4223-B7BB-C64EB81B6351}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5918EA72-9701-4223-B7BB-C64EB81B6351}.Release|Any CPU.Build.0 = Release|Any CPU
{5918EA72-9701-4223-B7BB-C64EB81B6351}.Release|x64.ActiveCfg = Release|Any CPU
{5918EA72-9701-4223-B7BB-C64EB81B6351}.Release|x64.Build.0 = Release|Any CPU
{5918EA72-9701-4223-B7BB-C64EB81B6351}.Release|x86.ActiveCfg = Release|Any CPU
{5918EA72-9701-4223-B7BB-C64EB81B6351}.Release|x86.Build.0 = Release|Any CPU
{A3ADC1CC-6020-7233-DCFA-106CA917B0CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A3ADC1CC-6020-7233-DCFA-106CA917B0CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A3ADC1CC-6020-7233-DCFA-106CA917B0CD}.Debug|x64.ActiveCfg = Debug|Any CPU
Expand Down Expand Up @@ -1302,6 +1350,12 @@ Global
{2A3CD1B4-38A3-46A1-AEDC-2C2AC47CB8F1} = {8783C0BC-EE27-8E0C-7452-5882FB8E96CA}
{1AE3FC50-8E8C-4637-AAB1-A871D5FB4535} = {8783C0BC-EE27-8E0C-7452-5882FB8E96CA}
{527FE0F6-40AE-4E71-A483-0F0A2368F2A7} = {8783C0BC-EE27-8E0C-7452-5882FB8E96CA}
{3310D97C-93BE-4434-BED7-81EB639B3141} = {87783708-79E3-AD60-C783-1D52BE7DE4BB}
{4A85B59D-2802-46D2-B9D1-CDFE11A37945} = {3310D97C-93BE-4434-BED7-81EB639B3141}
{C1C50B06-1175-49A1-81C6-59842EEFC51B} = {3310D97C-93BE-4434-BED7-81EB639B3141}
{E6E10688-A3CD-4C33-8E13-E0E905329272} = {4A85B59D-2802-46D2-B9D1-CDFE11A37945}
{59A3843F-39AD-45C9-90A6-EBD40D644451} = {C1C50B06-1175-49A1-81C6-59842EEFC51B}
{5918EA72-9701-4223-B7BB-C64EB81B6351} = {C1C50B06-1175-49A1-81C6-59842EEFC51B}
{A3ADC1CC-6020-7233-DCFA-106CA917B0CD} = {7ECA6DB2-F8EF-407B-F2FD-DEF81B86CC73}
{02EA681E-C7D8-13C7-8484-4AC65E1B71E8} = {87783708-79E3-AD60-C783-1D52BE7DE4BB}
{3F159DE4-1438-4821-AA38-9BC3441661F0} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
Expand Down
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,18 @@

The Azure MCP Server updates automatically by default whenever a new release comes out 🚀. We ship updates twice a week on Tuesdays and Thursdays 😊

## 0.5.5 (Unreleased)

### Features Added

- Added support for listing Azure Function Apps via the command `azmcp-functionapp-list`. [[#863](https://github.com/Azure/azure-mcp/pull/863)]

### Breaking Changes

### Bugs Fixed

### Other Changes

## 0.5.4 (2025-08-07)

### Bugs Fixed
Expand Down
1 change: 1 addition & 0 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
<PackageVersion Include="Azure.ResourceManager" Version="1.13.2" />
<PackageVersion Include="Azure.ResourceManager.ApplicationInsights" Version="1.1.0-beta.1" />
<PackageVersion Include="Azure.ResourceManager.AppConfiguration" Version="1.4.1" />
<PackageVersion Include="Azure.ResourceManager.AppService" Version="1.4.1" />
<PackageVersion Include="Azure.ResourceManager.Authorization" Version="1.1.5" />
<PackageVersion Include="Azure.ResourceManager.DesktopVirtualization" Version="1.3.1" />
<PackageVersion Include="Azure.ResourceManager.ContainerService" Version="1.2.5" />
Expand Down
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,10 @@ The Azure MCP Server supercharges your agents with Azure context. Here are some
* List Azure Foundry models
* Deploy foundry models
* List foundry model deployments

### ☁️ Azure Function App

* List Azure Function Apps

### 🚀 Azure Managed Grafana

Expand Down
7 changes: 7 additions & 0 deletions areas/functionapp/src/AzureMcp.FunctionApp/AssemblyInfo.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.

using System.Runtime.CompilerServices;

[assembly: InternalsVisibleTo("AzureMcp.FunctionApp.UnitTests")]
[assembly: InternalsVisibleTo("AzureMcp.FunctionApp.LiveTests")]
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<IsAotCompatible>true</IsAotCompatible>
</PropertyGroup>
<ItemGroup>
<EmbeddedResource Include="**\Resources\*.txt" />
<EmbeddedResource Include="**\Resources\*.json" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\core\src\AzureMcp.Core\AzureMcp.Core.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Azure.ResourceManager" />
<PackageReference Include="Azure.ResourceManager.AppService" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" />
<PackageReference Include="ModelContextProtocol" />
<PackageReference Include="System.CommandLine" />
</ItemGroup>
</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.

using System.Diagnostics.CodeAnalysis;
using AzureMcp.Core.Commands;
using AzureMcp.Core.Commands.Subscription;
using AzureMcp.Core.Options;

namespace AzureMcp.FunctionApp.Commands;

public abstract class BaseFunctionAppCommand<
[DynamicallyAccessedMembers(TrimAnnotations.CommandAnnotations)] TOptions>
: SubscriptionCommand<TOptions> where TOptions : SubscriptionOptions, new();
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.

using Azure;
using AzureMcp.Core.Commands;
using AzureMcp.Core.Services.Telemetry;
using AzureMcp.FunctionApp.Models;
using AzureMcp.FunctionApp.Options;
using AzureMcp.FunctionApp.Services;
using Microsoft.Extensions.Logging;

namespace AzureMcp.FunctionApp.Commands.FunctionApp;

public sealed class FunctionAppListCommand(ILogger<FunctionAppListCommand> logger)
: BaseFunctionAppCommand<FunctionAppListOptions>()
{
private const string CommandTitle = "List Azure Function Apps";
private readonly ILogger<FunctionAppListCommand> _logger = logger;

public override string Name => "list";

public override string Description =>
"""
Lists all Azure Function Apps in a subscription.
Returns a list of function app details including name, location, status, and app service plan name.
""";

public override string Title => CommandTitle;

public override ToolMetadata Metadata => new() { Destructive = false, ReadOnly = true };

public override async Task<CommandResponse> ExecuteAsync(CommandContext context, ParseResult parseResult)
{
var options = BindOptions(parseResult);

try
{
if (!Validate(parseResult.CommandResult, context.Response).IsValid)
return context.Response;

context.Activity?.WithSubscriptionTag(options);

var functionAppService = context.GetService<IFunctionAppService>();
var functionApps = await functionAppService.ListFunctionApps(
options.Subscription!,
options.Tenant,
options.RetryPolicy);

context.Response.Results = functionApps?.Count > 0
? ResponseResult.Create(
new FunctionAppListCommandResult(functionApps),
FunctionAppJsonContext.Default.FunctionAppListCommandResult)
: null;
}
catch (Exception ex)
{
_logger.LogError(ex, "Error listing function apps. Subscription: {Subscription}, Options: {@Options}",
options.Subscription, options);
HandleException(context, ex);
}

return context.Response;
}

protected override string GetErrorMessage(Exception ex) => ex switch
{
RequestFailedException reqEx when reqEx.Status == 404 =>
"Subscription not found. Verify the subscription ID and you have access.",
RequestFailedException reqEx when reqEx.Status == 403 =>
$"Authorization failed accessing the function app resources. Details: {reqEx.Message}",
RequestFailedException reqEx => reqEx.Message,
_ => base.GetErrorMessage(ex)
};

protected override int GetStatusCode(Exception ex) => ex switch
{
RequestFailedException reqEx => reqEx.Status,
_ => base.GetStatusCode(ex)
};

internal record FunctionAppListCommandResult(List<FunctionAppInfo> Results);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.

using System.Text.Json.Serialization;
using AzureMcp.FunctionApp.Commands.FunctionApp;
using AzureMcp.FunctionApp.Models;

namespace AzureMcp.FunctionApp.Commands;

[JsonSerializable(typeof(FunctionAppListCommand.FunctionAppListCommandResult))]
[JsonSerializable(typeof(FunctionAppInfo))]
[JsonSourceGenerationOptions(PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase)]
internal partial class FunctionAppJsonContext : JsonSerializerContext;
28 changes: 28 additions & 0 deletions areas/functionapp/src/AzureMcp.FunctionApp/FunctionAppSetup.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.

using AzureMcp.Core.Areas;
using AzureMcp.Core.Commands;
using AzureMcp.FunctionApp.Commands.FunctionApp;
using AzureMcp.FunctionApp.Services;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;

namespace AzureMcp.FunctionApp;

public class FunctionAppSetup : IAreaSetup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IFunctionAppService, FunctionAppService>();
}

public void RegisterCommands(CommandGroup rootGroup, ILoggerFactory loggerFactory)
{
var functionApp = new CommandGroup("functionapp", "Function App operations - Commands for managing and accessing Azure Function App resources.");
rootGroup.AddSubGroup(functionApp);

functionApp.AddCommand("list", new FunctionAppListCommand(
loggerFactory.CreateLogger<FunctionAppListCommand>()));
}
}
5 changes: 5 additions & 0 deletions areas/functionapp/src/AzureMcp.FunctionApp/GlobalUsings.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.

global using System.CommandLine.Parsing;
global using AzureMcp.Core.Models.Command;
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.

using System.Text.Json.Serialization;

namespace AzureMcp.FunctionApp.Models;

public record FunctionAppInfo(
[property: JsonPropertyName("name")] string? Name,
[property: JsonPropertyName("resourceGroupName")] string? ResourceGroupName,
[property: JsonPropertyName("location")] string? Location,
[property: JsonPropertyName("appServicePlanName")] string? AppServicePlanName,
[property: JsonPropertyName("status")] string? Status,
[property: JsonPropertyName("defaultHostName")] string? DefaultHostName,
[property: JsonPropertyName("tags")] IDictionary<string, string>? Tags
);
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.

using AzureMcp.Core.Options;

namespace AzureMcp.FunctionApp.Options;

public class FunctionAppListOptions : SubscriptionOptions;
Loading
Loading