Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 4 additions & 0 deletions .vscode/cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,7 @@
"codesign",
"codespace",
"cognitiveservices",
"configfile",
"containerapp",
"containerapps",
"contentazurefileconnectionstring",
Expand Down Expand Up @@ -538,6 +539,7 @@
"ragzrs",
"rainfly",
"redisearch",
"remotemcp",
"requesturl",
"resourcegroup",
"resourcegroups",
Expand All @@ -557,6 +559,7 @@
"skillset",
"skillsets",
"skiptoken",
"slnx",
"southafricanorth",
"southcentralus",
"southeastasia",
Expand Down Expand Up @@ -595,6 +598,7 @@
"ukwest",
"uncompress",
"unhex",
"uniqueprefix",
"upns",
"usersession",
"vectorizable",
Expand Down
15 changes: 9 additions & 6 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ After cloning and building the repo, check out the [GitHub project](https://gith
>[!IMPORTANT]
If you are contributing significant changes, or if the issue is already assigned to a specific milestone, please discuss with the assignee of the issue first before starting to work on the issue.

>[!TIP]
> New to the project? Start with the [Onboarding Guide](https://github.com/microsoft/mcp/blob/main/docs/Onboarding.md) for a guided walkthrough of prerequisites, adding a new namespace or tool, and integrating an external MCP server.

## Table of Contents

- [Contributing to Azure MCP](#contributing-to-azure-mcp)
Expand Down Expand Up @@ -162,10 +165,10 @@ Do not assume the Pull Request pipeline will always ingest a missing package aut

```txt
Execute in Copilot Chat:
"create [namespace] [resource] [operation] command using /skills/add-azure-mcp-tools as a reference"
"create [namespace] [resource] [operation] command using servers/Azure.Mcp.Server/docs/new-command.md as a reference"
```

4. **Follow implementation guidelines** in [.github/skills/add-azure-mcp-tools/SKILL.md](https://github.com/microsoft/mcp/blob/main/.github/skills/add-azure-mcp-tools/SKILL.md)
4. **Follow the implementation guidelines** in [servers/Azure.Mcp.Server/docs/new-command.md](https://github.com/microsoft/mcp/blob/main/servers/Azure.Mcp.Server/docs/new-command.md)

5. **Update documentation**:
- Add the new command to [/servers/Azure.Mcp.Server/docs/azmcp-commands.md](https://github.com/microsoft/mcp/blob/main/servers/Azure.Mcp.Server/docs/azmcp-commands.md)
Expand Down Expand Up @@ -240,7 +243,7 @@ Requirements:

To ensure the product code and unit tests can be cancelled quickly, contributors are required to write async methods (any returning `Task`, `ValueTask`, generic variants of those, etc.) to accept and invoke async methods with a `System.Threading.CancellationToken` parameter. The latter is enforced with the [CA2016 analyzer](https://learn.microsoft.com/dotnet/fundamentals/code-analysis/quality-rules/ca2016).

Mocks created with `NSubstitute.Substitue.For<T>()` and have [methods set up](https://nsubstitute.github.io/help/set-return-value/#for-methods) should be passed `NSubstitute.Arg.Any<CancellationToken>()` for required `System.Threading.CancellationToken` parameters. The same should be used when [checking for received calls on a mocked object](https://nsubstitute.github.io/help/received-calls/index.html). If the product code is expected to do something interesting with a supplied `System.Threading.CancellationToken` parameter, such as linking with other `System.Threading.CancellationToken`s with [`System.Threading.CancellationTokenSource.CreateLinkedTokenSource`](https://learn.microsoft.com/dotnet/api/system.threading.cancellationtokensource.createlinkedtokensource), then consider testing for that behavior.
Mocks created with `NSubstitute.Substitute.For<T>()` and have [methods set up](https://nsubstitute.github.io/help/set-return-value/#for-methods) should be passed `NSubstitute.Arg.Any<CancellationToken>()` for required `System.Threading.CancellationToken` parameters. The same should be used when [checking for received calls on a mocked object](https://nsubstitute.github.io/help/received-calls/index.html). If the product code is expected to do something interesting with a supplied `System.Threading.CancellationToken` parameter, such as linking with other `System.Threading.CancellationToken`s with [`System.Threading.CancellationTokenSource.CreateLinkedTokenSource`](https://learn.microsoft.com/dotnet/api/system.threading.cancellationtokensource.createlinkedtokensource), then consider testing for that behavior.

Real product code under unit testing must be passed `Xunit.TestContext.Current.CancellationToken` when async methods are invoked. This is to ensure the tests can end to avoid possible issues with the parent process waiting indefinitely for the test runner executable to exit.

Expand Down Expand Up @@ -700,7 +703,7 @@ The Azure MCP Server implements the [Model Context Protocol specification](https

### Package README

A single package README.md could be used to generate context specific content for different package types (npm, nuget, vsix) using html comment annotations to mark sections for removal or insertion whem processed with script at `.\eng\scripts\Process-PackageReadMe.ps1`
A single package README.md could be used to generate context specific content for different package types (npm, nuget, vsix) using html comment annotations to mark sections for removal or insertion when processed with script at `.\eng\scripts\Process-PackageReadMe.ps1`

Supported comment annotations:

Expand Down Expand Up @@ -780,7 +783,7 @@ The registry structure follows this format:
- Use the `url` property to specify the endpoint
- Supports HTTP-based communication with automatic transport mode detection
- Best for web-based MCP servers and remote endpoints
- Use `title` as the dislay name for the namespace tool (optional)
- Use `title` as the display name for the namespace tool (optional)
- Use `description` as the description of the namespace tool for the MCP server
- Use `toolPrefix` to assign unique prefix to tools of the MCP server
- If the MCP server requires authentication, use `oauthScopes` to specify the Entra client registration representing the MCP server
Expand Down Expand Up @@ -887,7 +890,7 @@ We're building this in the open. Your feedback is much appreciated, and will he
### Additional Resources

- [Azure MCP Documentation](https://github.com/microsoft/mcp/blob/main/README.md)
- [Command Implementation Guide](https://github.com/microsoft/mcp/blob/main/.github/skills/add-azure-mcp-tools/SKILL.md)
- [Command implementation guide](https://github.com/microsoft/mcp/blob/main/servers/Azure.Mcp.Server/docs/new-command.md)
- [VS Code Insiders Download](https://code.visualstudio.com/insiders/)
- [GitHub Copilot Documentation](https://docs.github.com/en/copilot)

Expand Down
Loading