Skip to content

Commit 6c0bb32

Browse files
committed
fix: move ai best practice into best practice namespace
1 parent 51ee74f commit 6c0bb32

File tree

23 files changed

+145
-260
lines changed

23 files changed

+145
-260
lines changed

.github/CODEOWNERS

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -65,17 +65,12 @@
6565
# ServiceLabel: %tools-AppService
6666
# ServiceOwners: @ArthurMa1978 @weidongxu-microsoft
6767

68-
# PRLabel: %tools-AIBestPractices
69-
/tools/Azure.Mcp.Tools.AzureAIBestPractices/ @XiaofuHuang @microsoft/azure-mcp
70-
71-
# ServiceLabel: %tools-AIBestPractices
72-
# ServiceOwners: @XiaofuHuang
7368

7469
# PRLabel: %tools-BestPractices
75-
/tools/Azure.Mcp.Tools.AzureBestPractices/ @g2vinay @conniey @fanyang-mono @microsoft/azure-mcp
70+
/tools/Azure.Mcp.Tools.AzureBestPractices/ @g2vinay @conniey @fanyang-mono @XiaofuHuang @microsoft/azure-mcp
7671

7772
# ServiceLabel: %tools-BestPractices
78-
# ServiceOwners: @g2vinay @conniey @fanyang-mono
73+
# ServiceOwners: @g2vinay @conniey @fanyang-mono @XiaofuHuang
7974

8075
# PRLabel: %tools-CloudArchitect
8176
/tools/Azure.Mcp.Tools.CloudArchitect/ @msalaman @microsoft/azure-mcp

AzureMcp.sln

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -549,15 +549,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Fabric.Mcp.Tools.PublicApi.
549549
EndProject
550550
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Mcp.Tools.Postgres.LiveTests", "tools\Azure.Mcp.Tools.Postgres\tests\Azure.Mcp.Tools.Postgres.LiveTests\Azure.Mcp.Tools.Postgres.LiveTests.csproj", "{BF0354AE-3748-A8DC-F79D-B21FDDEDDFAE}"
551551
EndProject
552-
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Azure.Mcp.Tools.AzureAIBestPractices", "Azure.Mcp.Tools.AzureAIBestPractices", "{156D9C17-61FD-98D6-32C0-065B406D0434}"
553-
EndProject
554-
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{5D760DD8-DBA3-B865-9021-FDE8FD3497A8}"
555-
EndProject
556-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Mcp.Tools.AzureAIBestPractices", "tools\Azure.Mcp.Tools.AzureAIBestPractices\src\Azure.Mcp.Tools.AzureAIBestPractices.csproj", "{87C51120-6A0A-4D14-B644-1787DB6C6D6E}"
557-
EndProject
558-
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{50124EEC-97B0-320E-80D4-8464D7692B22}"
559-
EndProject
560-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Mcp.Tools.AzureAIBestPractices.UnitTests", "tools\Azure.Mcp.Tools.AzureAIBestPractices\tests\Azure.Mcp.Tools.AzureAIBestPractices.UnitTests\Azure.Mcp.Tools.AzureAIBestPractices.UnitTests.csproj", "{BE8CFF4C-E536-43DB-9D01-001E9A052D37}"
561552
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{319B94CD-694C-16E8-9E3A-9577B99158DD}"
562553
EndProject
563554
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Mcp.Server.UnitTests", "servers\Azure.Mcp.Server\tests\Azure.Mcp.Server.UnitTests\Azure.Mcp.Server.UnitTests.csproj", "{ADF14627-FCB5-4BD3-B65F-DDCC3A3F727C}"
@@ -2096,30 +2087,6 @@ Global
20962087
{BF0354AE-3748-A8DC-F79D-B21FDDEDDFAE}.Release|x64.Build.0 = Release|Any CPU
20972088
{BF0354AE-3748-A8DC-F79D-B21FDDEDDFAE}.Release|x86.ActiveCfg = Release|Any CPU
20982089
{BF0354AE-3748-A8DC-F79D-B21FDDEDDFAE}.Release|x86.Build.0 = Release|Any CPU
2099-
{87C51120-6A0A-4D14-B644-1787DB6C6D6E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
2100-
{87C51120-6A0A-4D14-B644-1787DB6C6D6E}.Debug|Any CPU.Build.0 = Debug|Any CPU
2101-
{87C51120-6A0A-4D14-B644-1787DB6C6D6E}.Debug|x64.ActiveCfg = Debug|Any CPU
2102-
{87C51120-6A0A-4D14-B644-1787DB6C6D6E}.Debug|x64.Build.0 = Debug|Any CPU
2103-
{87C51120-6A0A-4D14-B644-1787DB6C6D6E}.Debug|x86.ActiveCfg = Debug|Any CPU
2104-
{87C51120-6A0A-4D14-B644-1787DB6C6D6E}.Debug|x86.Build.0 = Debug|Any CPU
2105-
{87C51120-6A0A-4D14-B644-1787DB6C6D6E}.Release|Any CPU.ActiveCfg = Release|Any CPU
2106-
{87C51120-6A0A-4D14-B644-1787DB6C6D6E}.Release|Any CPU.Build.0 = Release|Any CPU
2107-
{87C51120-6A0A-4D14-B644-1787DB6C6D6E}.Release|x64.ActiveCfg = Release|Any CPU
2108-
{87C51120-6A0A-4D14-B644-1787DB6C6D6E}.Release|x64.Build.0 = Release|Any CPU
2109-
{87C51120-6A0A-4D14-B644-1787DB6C6D6E}.Release|x86.ActiveCfg = Release|Any CPU
2110-
{87C51120-6A0A-4D14-B644-1787DB6C6D6E}.Release|x86.Build.0 = Release|Any CPU
2111-
{BE8CFF4C-E536-43DB-9D01-001E9A052D37}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
2112-
{BE8CFF4C-E536-43DB-9D01-001E9A052D37}.Debug|Any CPU.Build.0 = Debug|Any CPU
2113-
{BE8CFF4C-E536-43DB-9D01-001E9A052D37}.Debug|x64.ActiveCfg = Debug|Any CPU
2114-
{BE8CFF4C-E536-43DB-9D01-001E9A052D37}.Debug|x64.Build.0 = Debug|Any CPU
2115-
{BE8CFF4C-E536-43DB-9D01-001E9A052D37}.Debug|x86.ActiveCfg = Debug|Any CPU
2116-
{BE8CFF4C-E536-43DB-9D01-001E9A052D37}.Debug|x86.Build.0 = Debug|Any CPU
2117-
{BE8CFF4C-E536-43DB-9D01-001E9A052D37}.Release|Any CPU.ActiveCfg = Release|Any CPU
2118-
{BE8CFF4C-E536-43DB-9D01-001E9A052D37}.Release|Any CPU.Build.0 = Release|Any CPU
2119-
{BE8CFF4C-E536-43DB-9D01-001E9A052D37}.Release|x64.ActiveCfg = Release|Any CPU
2120-
{BE8CFF4C-E536-43DB-9D01-001E9A052D37}.Release|x64.Build.0 = Release|Any CPU
2121-
{BE8CFF4C-E536-43DB-9D01-001E9A052D37}.Release|x86.ActiveCfg = Release|Any CPU
2122-
{BE8CFF4C-E536-43DB-9D01-001E9A052D37}.Release|x86.Build.0 = Release|Any CPU
21232090
{ADF14627-FCB5-4BD3-B65F-DDCC3A3F727C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
21242091
{ADF14627-FCB5-4BD3-B65F-DDCC3A3F727C}.Debug|Any CPU.Build.0 = Debug|Any CPU
21252092
{ADF14627-FCB5-4BD3-B65F-DDCC3A3F727C}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -2406,11 +2373,6 @@ Global
24062373
{294AC723-70DA-F50A-2C7A-AC6C0AEA0A62} = {9072C7AF-9EB2-E481-3974-77957587AC76}
24072374
{D3F46C2D-3AFD-FD9C-9C6A-180B1514DD2F} = {294AC723-70DA-F50A-2C7A-AC6C0AEA0A62}
24082375
{BF0354AE-3748-A8DC-F79D-B21FDDEDDFAE} = {37B0CE47-14C8-F5BF-BDDD-13EEBE580A88}
2409-
{156D9C17-61FD-98D6-32C0-065B406D0434} = {07C2787E-EAC7-C090-1BA3-A61EC2A24D84}
2410-
{5D760DD8-DBA3-B865-9021-FDE8FD3497A8} = {156D9C17-61FD-98D6-32C0-065B406D0434}
2411-
{87C51120-6A0A-4D14-B644-1787DB6C6D6E} = {5D760DD8-DBA3-B865-9021-FDE8FD3497A8}
2412-
{50124EEC-97B0-320E-80D4-8464D7692B22} = {156D9C17-61FD-98D6-32C0-065B406D0434}
2413-
{BE8CFF4C-E536-43DB-9D01-001E9A052D37} = {50124EEC-97B0-320E-80D4-8464D7692B22}
24142376
{319B94CD-694C-16E8-9E3A-9577B99158DD} = {F7E192D1-DE6C-42A2-B52F-02849D482450}
24152377
{ADF14627-FCB5-4BD3-B65F-DDCC3A3F727C} = {319B94CD-694C-16E8-9E3A-9577B99158DD}
24162378
EndGlobalSection

core/Azure.Mcp.Core/src/Areas/Server/Resources/azure-rules.txt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@ sure the user is discussing Azure Functions; do not call it otherwise.
1212
- Use Azure Functions Deployment Best Practices: When deploying Azure Functions apps to Azure or preparing for
1313
the deployment, invoke your `bestpractices` tool if available. Only call this tool when you are sure the user
1414
is discussing Azure; do not call it otherwise.
15-
- Use Azure AI Code Generation Best Practices: When generating code for AI applications, AI agents, workflows,
16-
or chatbots in Azure, invoke your `azureaibestpractices` tool if available. Only call this tool when you are sure
17-
the user is discussing Azure and code generation; do not call it for Azure resource operations.
15+
- Use Azure AI App Code Generation Best Practices: When generating code for AI applications, AI agents, workflows,
16+
or chatbots, invoke your `get_bestpractices_ai_app` command (under `get_bestpractices` tool) if tool available
17+
Call this tool first before creating any plans, todos or code.
18+
Only call this tool when you are sure the user is discussing Microsoft Foundry or AI feature code generation; do not call it for Azure resource operations.
1819
- Use Azure SWA Best Practices: When working with static web apps, invoke your `bestpractices` tool if available.
1920
Only call this tool when you are sure the user is discussing Azure; do not call it otherwise.
2021
- Plan before editing files for Azure web apps: When generating code for Azure Functions and Azure Static Web App,

core/Azure.Mcp.Core/src/Areas/Server/Resources/consolidated-tools.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1010,9 +1010,9 @@
10101010
}
10111011
},
10121012
"mappedToolList": [
1013-
"azureaibestpractices_get",
10141013
"azureterraformbestpractices_get",
10151014
"bicepschema_get",
1015+
"get_bestpractices_ai_app",
10161016
"get_bestpractices_get",
10171017
"foundry_agents_get-sdk-sample"
10181018
]

eng/tools/ToolDescriptionEvaluator/prompts/prompts.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,4 @@
11
{
2-
"azureaibestpractices_get": [
3-
"Get best practices for building AI applications in Azure",
4-
"Show me the best practices for Microsoft Foundry agents code generation",
5-
"Get guidance for building agents with Microsoft Foundry",
6-
"Create an AI app that helps me to manage travel queries.",
7-
"Create an AI app that helps me to manage travel queries in Microsoft Foundry"
8-
],
92
"foundry_agents_connect": [
103
"Query an agent in my Microsoft Foundry resource"
114
],
@@ -560,6 +553,13 @@
560553
"Search for Microsoft products in the marketplace",
561554
"Show me marketplace products from publisher <publisher_name>"
562555
],
556+
"get_bestpractices_ai_app": [
557+
"Get best practices for building AI applications in Azure",
558+
"Show me the best practices for Microsoft Foundry agents code generation",
559+
"Get guidance for building agents with Microsoft Foundry",
560+
"Create an AI app that helps me to manage travel queries.",
561+
"Create an AI app that helps me to manage travel queries in Microsoft Foundry"
562+
],
563563
"get_bestpractices_get": [
564564
"Get the latest Azure code generation best practices",
565565
"Get the latest Azure deployment best practices",

servers/Azure.Mcp.Server/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ The Azure MCP Server updates automatically by default whenever a new release com
1717
### Other Changes
1818

1919
- Switched to the new `Azure.Monitor.Query.Logs` package to query logs from Azure Monitor. [[#1309](https://github.com/microsoft/mcp/pull/1309)]
20+
- Move Azure AI Best Practices tool into Best Practice namespace [[#1323](https://github.com/microsoft/mcp/pull/1323)]
2021

2122
## 2.0.0-beta.7 (2025-11-25)
2223

servers/Azure.Mcp.Server/README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -539,7 +539,6 @@ The Azure MCP Server provides tools for interacting with **40+ Azure service are
539539
- 🧮 **Microsoft Foundry** - AI model management, AI model deployment, and knowledge index management
540540
- 🔎 **Azure AI Search** - Search engine/vector database operations
541541
- 🎤 **Azure AI Services Speech** - Speech-to-text recognition and text-to-speech synthesis
542-
- 🤖 **Azure AI Best Practices** - AI app development guidance for Microsoft Foundry and Microsoft Agent Framework
543542
- ⚙️ **Azure App Configuration** - Configuration management
544543
- 🕸️ **Azure App Service** - Web app hosting
545544
- 🛡️ **Azure Best Practices** - Secure, production-grade guidance

servers/Azure.Mcp.Server/docs/azmcp-commands.md

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -204,22 +204,6 @@ The `azmcp server start` command supports the following options:
204204
azmcp server info
205205
```
206206
207-
208-
### Azure AI Best Practices
209-
210-
```bash
211-
# Get best practices for building AI applications, workflows and agents in Azure
212-
# Call this before generating code for any AI application, building with Microsoft Foundry models,
213-
# working with Microsoft Agent Framework, or implementing AI solutions in Azure.
214-
# ❌ Destructive | ✅ Idempotent | ❌ OpenWorld | ✅ ReadOnly | ❌ Secret | ❌ LocalRequired
215-
azmcp azureaibestpractices get
216-
217-
# Includes guidance on:
218-
# - Microsoft Agent Framework usage and patterns
219-
# - Microsoft Foundry model selection
220-
# - Best practices for ai app / agent development in Azure
221-
```
222-
223207
### Azure AI Search Operations
224208

225209
```bash
@@ -1286,6 +1270,16 @@ azmcp get bestpractices get --resource <resource> --action <action>
12861270
# code-generation - Best practices for code generation (for general and azurefunctions)
12871271
# deployment - Best practices for deployment (for general and azurefunctions)
12881272

1273+
# Get best practices for building AI applications, workflows and agents in Azure
1274+
# Call this before generating code for any AI application, building with Microsoft Foundry models,
1275+
# working with Microsoft Agent Framework, or implementing AI solutions in Azure.
1276+
azmcp get bestpractices ai_app
1277+
1278+
# AI App Development:
1279+
# ai_app - Comprehensive guidance for AI applications including:
1280+
# • Microsoft Agent Framework usage and patterns
1281+
# • Microsoft Foundry model selection
1282+
# • Best practices for AI app/agent development in Azure
12891283
```
12901284

12911285
### Azure MCP Tools

servers/Azure.Mcp.Server/docs/e2eTestPrompts.md

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,6 @@
22

33
This file contains prompts used for end-to-end testing to ensure each tool is invoked properly by MCP clients. The tables are organized by Azure MCP Server areas in alphabetical order, with Tool Names sorted alphabetically within each table.
44

5-
## Azure AI Best Practices
6-
7-
| Tool Name | Test Prompt |
8-
|:----------|:----------|
9-
| azureaibestpractices_get | Get best practices for building AI applications in Azure |
10-
| azureaibestpractices_get | Show me the best practices for Microsoft Foundry agents code generation |
11-
| azureaibestpractices_get | Get guidance for building agents with Microsoft Foundry |
12-
| azureaibestpractices_get | Create an AI app that helps me to manage travel queries. |
13-
| azureaibestpractices_get | Create an AI app that helps me to manage travel queries in Microsoft Foundry |
14-
155
## Azure AI Search
166

177
| Tool Name | Test Prompt |
@@ -435,7 +425,11 @@ This file contains prompts used for end-to-end testing to ensure each tool is in
435425
| get_bestpractices_get | Get the latest Azure Static Web Apps best practices |
436426
| get_bestpractices_get | What are azure function best practices? |
437427
| get_bestpractices_get | configure azure mcp in coding agent for my repo |
438-
428+
| get_bestpractices_ai_app | Get best practices for building AI applications in Azure |
429+
| get_bestpractices_ai_app | Show me the best practices for Microsoft Foundry agents code generation |
430+
| get_bestpractices_ai_app | Get guidance for building agents with Microsoft Foundry |
431+
| get_bestpractices_ai_app | Create an AI app that helps me to manage travel queries. |
432+
| get_bestpractices_ai_app | Create an AI app that helps me to manage travel queries in Microsoft Foundry |
439433
## Azure Monitor
440434

441435
| Tool Name | Test Prompt |

servers/Azure.Mcp.Server/src/Program.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ private static IAreaSetup[] RegisterAreas()
7474

7575
return [
7676
// Register core areas
77-
new Azure.Mcp.Tools.AzureAIBestPractices.AzureAIBestPracticesSetup(),
7877
new Azure.Mcp.Tools.AzureBestPractices.AzureBestPracticesSetup(),
7978
new Azure.Mcp.Tools.Extension.ExtensionSetup(),
8079
new Azure.Mcp.Core.Areas.Group.GroupSetup(),

0 commit comments

Comments
 (0)