Skip to content

Commit 52a25ed

Browse files
committed
Merge branch 'update-cli-include-files' of https://github.com/meaghanlewis/docs into update-cli-include-files
2 parents 9ec90e9 + 135316c commit 52a25ed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+566
-250
lines changed

.github/copilot-instructions.md

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ For snippets >6 lines:
4444
1. All code should use the latest stable versions/features.
4545
1. Create examples in both C# and Visual Basic unless the article referencing the snippet resides in the in the `csharp`, `fsharp`, and `visual-basic` language folders.
4646
1. When you add code, use code comments sparingly because they don't get localized. You can use them to briefly clarify code-specific details (such as logic, parameters, or edge cases). Put any critical information and context in the markdown text of the referencing article.
47+
1. IMPORTANT: For created code, always try to encapsulate it in an standalone executable (e.g. `dotnet fsi myFile.fsx` or `dotnet run myFile.cs`, add the necessary boilerplate/imports/usings where needed, and execute it.). Run it, and for every code snippet, include a PR commentary checking each code sample and proving what it has produced - this can be diagnostics, standard output, or a result value. That standalone file is just for the purpose of verification within copilot's execution environment, the published docs snippet should remain a subset as you would normally write to maximize clarity.
4748

4849
## File Naming
4950

@@ -57,6 +58,30 @@ Examples:
5758
- ❌ Bad: `configure_logging.md`
5859
- ❌ Bad: `DependencyInjectionGuidelines.md`
5960

61+
## Documentation from External Sources (Blog Posts, Announcements)
62+
63+
When adapting content from external sources like blog posts into documentation:
64+
65+
**DO:**
66+
- Work on one version, or topic at a time - never combine multiple versions in a single PR. Some blog posts or source material may include many versions or preview builds. The issue or task should specify which one to focus on.
67+
- Copy working code samples directly from source when available. Follow the rules under ["Code Snippets"](#code-snippets) above.
68+
- Create a checklist TODO for each section of the source document before writing.
69+
- Map each documentation section 1:1 to source content.
70+
- Explicitly state what is copied vs. generated in PR description.
71+
- Add disclaimers about AI usage when applicable.
72+
73+
**DON'T:**
74+
- Invent or elaborate on features not explicitly mentioned in source.
75+
- Create placeholder sections without content.
76+
- Assume feature details or characteristics.
77+
- Combine information from multiple versions/sources.
78+
- Add examples without verifying they demonstrate the stated feature.
79+
80+
**PR Description Must Include:**
81+
- Content source breakdown. In the description, list each section of the source document and indicate whether it was copied verbatim, adapted, or newly generated.
82+
- Note all generated sections requiring expert review.
83+
- Clear warnings about any uncertainties.
84+
6085
## Special Cases
6186

6287
### Breaking Changes
@@ -69,4 +94,4 @@ When assigned an issue or directly given a task in GitHub:
6994
3. Check for build warnings in the OpenPublishing.Build status check
7095
4. If warnings exist:
7196
- Click "View Details" to open the build report
72-
- Resolve any build warnings you introduced
97+
- Resolve any build warnings you introduced

.github/workflows/dependabot-bot.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,9 @@ jobs:
4040
- name: "Print manual run reason"
4141
if: ${{ github.event_name == 'workflow_dispatch' }}
4242
run: |
43-
echo "Reason: ${{ github.event.inputs.reason }}"
43+
echo "Reason: $REASON"
44+
env:
45+
REASON: ${{ github.event.inputs.reason }}
4446
# Run the .NET dependabot-bot tool
4547
- name: dependabot-bot
4648
id: dependabot-bot

.github/workflows/markdownlint.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ jobs:
2727
egress-policy: audit
2828

2929
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
30-
- uses: DavidAnson/markdownlint-cli2-action@992badcdf24e3b8eb7e87ff9287fe931bcb00c6e # v20.0.0
30+
- uses: DavidAnson/markdownlint-cli2-action@30a0e04f1870d58f8d717450cc6134995f993c63 # v21.0.0
3131
with:
3232
config: ".markdownlint-cli2.jsonc"
3333
globs: "**/*.md"

.github/workflows/quest-bulk.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@ jobs:
3535
- name: "Print manual bulk import run reason"
3636
if: ${{ github.event_name == 'workflow_dispatch' }}
3737
run: |
38-
echo "Reason: ${{ github.event.inputs.reason }}"
38+
echo "Reason: $REASON"
39+
env:
40+
REASON: ${{ github.event.inputs.reason }}
3941

4042
- name: Azure OpenID Connect
4143
id: azure-oidc-auth

.github/workflows/quest.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,11 @@ jobs:
3636
- name: "Print manual run reason"
3737
if: ${{ github.event_name == 'workflow_dispatch' }}
3838
run: |
39-
echo "Reason: ${{ github.event.inputs.reason }}"
40-
echo "Issue number: ${{ github.event.inputs.issue }}"
39+
echo "Reason: $REASON"
40+
echo "Issue number: $ISSUENUMBER"
41+
env:
42+
REASON: ${{ github.event.inputs.reason }}
43+
ISSUENUMBER: ${{ github.event.inputs.issue }}
4144

4245
- name: Azure OpenID Connect
4346
id: azure-oidc-auth

.markdownlint-cli2.jsonc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@
5959
"MD050": {
6060
"style": "asterisk"
6161
},
62-
"MD051": false
62+
"MD051": false,
63+
"MD060": false
6364
},
6465
"ignores": [
6566
".github/",

docs/ai/get-started-mcp.md

Lines changed: 24 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
---
22
title: Get started with .NET AI and MCP
33
description: Learn about .NET AI and MCP key concepts and development resources to get started building MCP clients and servers
4-
ms.date: 04/29/2025
4+
ms.date: 11/20/2025
55
ms.topic: overview
66
author: alexwolfmsft
77
ms.author: alexwolf
8-
# CustomerIntent: As a .NET developer new to OpenAI, I want deploy and use sample code to interact to learn from the sample code to summarize text.
98
---
109

1110
# Get started with .NET AI and the Model Context Protocol
1211

13-
The Model Context Protocol (MCP) is an open protocol designed to standardize integrations between AI apps and external tools and data sources. By using MCP, developers can enhance the capabilities of AI models, enabling them to produce more accurate, relevant, and context-aware responses.
12+
Model Context Protocol (MCP) is an open protocol designed to standardize integrations between AI apps and external tools and data sources. By using MCP, developers can enhance the capabilities of AI models, enabling them to produce more accurate, relevant, and context-aware responses.
1413

1514
For example, using MCP, you can connect your LLM to resources such as:
1615

@@ -22,36 +21,36 @@ Many Microsoft products already support MCP, including:
2221

2322
- [Copilot Studio](https://www.microsoft.com/microsoft-copilot/blog/copilot-studio/introducing-model-context-protocol-mcp-in-copilot-studio-simplified-integration-with-ai-apps-and-agents/)
2423
- [Visual Studio Code GitHub Copilot agent mode](https://code.visualstudio.com/blogs/2025/02/24/introducing-copilot-agent-mode)
25-
- [Semantic Kernel](https://devblogs.microsoft.com/semantic-kernel/integrating-model-context-protocol-tools-with-semantic-kernel-a-step-by-step-guide/).
24+
- [Agent Framework](/agent-framework/user-guide/model-context-protocol/using-mcp-tools)
2625

2726
You can use the [MCP C# SDK](#develop-with-the-mcp-c-sdk) to quickly create your own MCP integrations and switch between different AI models without significant code changes.
2827

29-
### MCP client-server architecture
28+
## MCP client-server architecture
3029

3130
MCP uses a client-server architecture that enables an AI-powered app (the host) to connect to multiple MCP servers through MCP clients:
3231

33-
- **MCP Hosts**: AI tools, code editors, or other software that enhance their AI models using contextual resources through MCP. For example, GitHub Copilot in Visual Studio Code can act as an MCP host and use MCP clients and servers to expand its capabilities.
34-
- **MCP Clients**: Clients used by the host application to connect to MCP servers to retrieve contextual data.
35-
- **MCP Servers**: Services that expose capabilities to clients through MCP. For example, an MCP server might provide an abstraction over a REST API or local data source to provide business data to the AI model.
32+
- **MCP hosts**: AI tools, code editors, or other software that enhance their AI models using contextual resources through MCP. For example, GitHub Copilot in Visual Studio Code can act as an MCP host and use MCP clients and servers to expand its capabilities.
33+
- **MCP clients**: Clients used by the host application to connect to MCP servers to retrieve contextual data.
34+
- **MCP servers**: Services that expose capabilities to clients through MCP. For example, an MCP server might provide an abstraction over a REST API or local data source to provide business data to the AI model.
3635

3736
The following diagram illustrates this architecture:
3837

3938
:::image type="content" source="media/mcp/model-context-protocol-architecture-diagram.png" alt-text="A diagram showing the architecture pattern of MCP, including hosts, clients, and servers.":::
4039

4140
MCP client and server can exchange a set of standard messages:
4241

43-
| Message | Description |
44-
|---------------------|-------------|
42+
| Message | Description |
43+
|---------------------|---------------------------------------------------------------|
4544
| `InitializeRequest` | This request is sent by the client to the server when it first connects, asking it to begin initialization. |
46-
|`ListToolsRequest` | Sent by the client to request a list of tools the server has. |
47-
|`CallToolRequest` | Used by the client to invoke a tool provided by the server. |
48-
|`ListResourcesRequest` | Sent by the client to request a list of available server resources. |
49-
|`ReadResourceRequest` | Sent by the client to the server to read a specific resource URI. |
50-
|`ListPromptsRequest` | Sent by the client to request a list of available prompts and prompt templates from the server. |
51-
|`GetPromptRequest` | Used by the client to get a prompt provided by the server. |
52-
|`PingRequest` | A ping, issued by either the server or the client, to check that the other party is still alive. |
53-
|`CreateMessageRequest` | A request by the server to sample an LLM via the client. The client has full discretion over which model to select. The client should also inform the user before beginning sampling, to allow them to inspect the request (human in the loop) and decide whether to approve it. |
54-
|`SetLevelRequest` | A request by the client to the server, to enable or adjust logging. |
45+
| `ListToolsRequest` | Sent by the client to request a list of tools the server has. |
46+
| `CallToolRequest` | Used by the client to invoke a tool provided by the server. |
47+
| `ListResourcesRequest` | Sent by the client to request a list of available server resources. |
48+
| `ReadResourceRequest` | Sent by the client to the server to read a specific resource URI. |
49+
| `ListPromptsRequest` | Sent by the client to request a list of available prompts and prompt templates from the server. |
50+
| `GetPromptRequest` | Used by the client to get a prompt provided by the server. |
51+
| `PingRequest` | A ping, issued by either the server or the client, to check that the other party is still alive. |
52+
| `CreateMessageRequest` | A request by the server to sample an LLM via the client. The client has full discretion over which model to select. The client should also inform the user before beginning sampling, to allow them to inspect the request (human in the loop) and decide whether to approve it. |
53+
| `SetLevelRequest` | A request by the client to the server, to enable or adjust logging. |
5554

5655
## Develop with the MCP C# SDK
5756

@@ -74,25 +73,22 @@ Instead of building unique connectors for each integration point, you can often
7473

7574
The MCP C# SDK depends on the [Microsoft.Extensions.AI libraries](/dotnet/ai/ai-extensions) to handle various AI interactions and tasks. These extension libraries provides core types and abstractions for working with AI services, so developers can focus on coding against conceptual AI capabilities rather than specific platforms or provider implementations.
7675

77-
View the MCP C# SDK dependencies on the [NuGet package page](https://www.nuget.org/packages/ModelContextProtocol/0.1.0-preview.11).
76+
View the MCP C# SDK dependencies on the [NuGet package page](https://www.nuget.org/packages/ModelContextProtocol).
7877

7978
## More .NET MCP development resources
8079

8180
Various tools, services, and learning resources are available in the .NET and Azure ecosystems to help you build MCP clients and servers or integrate with existing MCP servers.
8281

8382
Get started with the following development tools:
8483

85-
- [Semantic Kernel](/semantic-kernel/concepts/plugins/adding-mcp-plugins) allows you to add plugins for MCP servers. Semantic Kernel supports both local MCP servers through standard I/O and remote servers that connect through SSE over HTTPS.
84+
- [Agent Framework](/agent-framework/user-guide/model-context-protocol/using-mcp-tools) supports integration with MCP servers, allowing your agents to access external tools and services. Agent Framework works with the official MCP C# SDK to enable agents to connect to MCP servers, retrieve available tools, and use them through function calling to extend agent capabilities with external data sources and services.
8685
- [Azure Functions remote MCP servers](https://devblogs.microsoft.com/dotnet/build-mcp-remote-servers-with-azure-functions/) combine MCP standards with the flexible architecture of Azure Functions. Visit the [Remote MCP functions sample repository](https://aka.ms/cadotnet/mcp/functions/remote-sample) for code examples.
8786
- [Azure MCP Server](https://github.com/Azure/azure-mcp) implements the MCP specification to seamlessly connect AI agents with key Azure services like Azure Storage, Cosmos DB, and more.
8887

89-
Learn more about .NET and MCP using these resources:
88+
## See also
9089

90+
- [MCP C# SDK documentation](https://modelcontextprotocol.github.io/csharp-sdk/index.html)
91+
- [MCP C# SDK API documentation](https://modelcontextprotocol.github.io/csharp-sdk/api/ModelContextProtocol.html)
92+
- [MCP C# SDK README](https://github.com/modelcontextprotocol/csharp-sdk/blob/main/README.md)
9193
- [Microsoft partners with Anthropic to create official C# SDK for Model Context Protocol](https://devblogs.microsoft.com/blog/microsoft-partners-with-anthropic-to-create-official-c-sdk-for-model-context-protocol)
9294
- [Build a Model Context Protocol (MCP) server in C#](https://devblogs.microsoft.com/dotnet/build-a-model-context-protocol-mcp-server-in-csharp/)
93-
- [MCP C# SDK README](https://github.com/modelcontextprotocol/csharp-sdk/blob/main/README.md)
94-
95-
## Related content
96-
97-
- [Overview of the .NET + AI ecosystem](dotnet-ai-ecosystem.md)
98-
- [Microsoft.Extensions.AI](/dotnet/ai/ai-extensions)

0 commit comments

Comments
 (0)