From 15d648ce36671577ac1f2fae3ba9bc2330b27a0a Mon Sep 17 00:00:00 2001 From: Alex Wolf Date: Wed, 21 May 2025 12:56:28 -0400 Subject: [PATCH 1/8] New MCP server quickstart --- docs/ai/media/mcp/available-tools.png | Bin 0 -> 120889 bytes docs/ai/quickstarts/mcp-server-quickstart.md | 124 ++++++++++++++++++ .../MinimalMcpServer/MinimalMcpServer.csproj | 15 +++ .../mcp-server/MinimalMcpServer/Program.cs | 29 ++++ 4 files changed, 168 insertions(+) create mode 100644 docs/ai/media/mcp/available-tools.png create mode 100644 docs/ai/quickstarts/mcp-server-quickstart.md create mode 100644 docs/ai/quickstarts/snippets/mcp-server/MinimalMcpServer/MinimalMcpServer.csproj create mode 100644 docs/ai/quickstarts/snippets/mcp-server/MinimalMcpServer/Program.cs diff --git a/docs/ai/media/mcp/available-tools.png b/docs/ai/media/mcp/available-tools.png new file mode 100644 index 0000000000000000000000000000000000000000..ecabf19100176691c14cb27194473ebb32ea2170 GIT binary patch literal 120889 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%0D^B*!Zi14sg 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 UTFUk +{ + // Log to stderr for better integration with MCP clients + consoleLogOptions.LogToStandardErrorThreshold = LogLevel.Trace; +}); + +builder.Services + .AddMcpServer() + .WithStdioServerTransport() + .WithToolsFromAssembly(); + +await builder.Build().RunAsync(); + +[McpServerToolType] +public static class EchoTool +{ + [McpServerTool, Description("Echoes the message back to the client.")] + public static string Echo(string message) => $"Hello from C#: {message}"; + + [McpServerTool, Description("Echoes in reverse the message sent by the client.")] + public static string ReverseEcho(string message) => new string(message.Reverse().ToArray()); +} +``` + +## Configure the MCP server in Visual Studio Code + +1. Open your project folder in Visual Studio Code. +1. Create a `.vscode` folder if it doesn't exist. +1. Add an `mcp.json` file in the `.vscode` folder with the following content: + + ```json + { + "inputs": [], + "servers": { + "MinimalMcpServer": { + "type": "stdio", + "command": "dotnet", + "args": [ + "run", + "--project", + "${workspaceFolder}/MinimalMcpServer.csproj" + ] + } + } + } + ``` + +1. Save the file. + +## Test the MCP server + +1. Open GitHub Copilot in Visual Studio Code and switch to agent mode. +1. Select the **Select tools...** icon to verify your **MinimalMcpServer** is available with both tools listed. + + :::image type="content" source="../media/mcp/available-tools.png" alt-text="A screenshot showing the available MCP tools."::: + +1. Enter a prompt to run the **ReverseEcho** tool, such as *Reverse the following: "Hello, minimal MCP server!"* +1. GitHub Copilot prompts you for a confirmation to run the selected **ReverseEcho** tool. Select **Continue**. +1. Verify that the server responds with the echoed message: + +```output +!revres PCM laminim ,olleH +``` + +## Related content + +[Get started with .NET AI and the Model Context Protocol](../get-started-mcp.md) diff --git a/docs/ai/quickstarts/snippets/mcp-server/MinimalMcpServer/MinimalMcpServer.csproj b/docs/ai/quickstarts/snippets/mcp-server/MinimalMcpServer/MinimalMcpServer.csproj new file mode 100644 index 0000000000000..a17b49055f598 --- /dev/null +++ b/docs/ai/quickstarts/snippets/mcp-server/MinimalMcpServer/MinimalMcpServer.csproj @@ -0,0 +1,15 @@ + + + + Exe + net9.0 + enable + enable + + + + + + + + diff --git a/docs/ai/quickstarts/snippets/mcp-server/MinimalMcpServer/Program.cs b/docs/ai/quickstarts/snippets/mcp-server/MinimalMcpServer/Program.cs new file mode 100644 index 0000000000000..205afbc2cbacb --- /dev/null +++ b/docs/ai/quickstarts/snippets/mcp-server/MinimalMcpServer/Program.cs @@ -0,0 +1,29 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; +using ModelContextProtocol.Server; +using System.ComponentModel; + +var builder = Host.CreateApplicationBuilder(args); +builder.Logging.AddConsole(consoleLogOptions => +{ + // Log to stderr for better integration with MCP clients + consoleLogOptions.LogToStandardErrorThreshold = LogLevel.Trace; +}); + +builder.Services + .AddMcpServer() + .WithStdioServerTransport() + .WithToolsFromAssembly(); + +await builder.Build().RunAsync(); + +[McpServerToolType] +public static class EchoTool +{ + [McpServerTool, Description("Echoes the message back to the client.")] + public static string Echo(string message) => $"Hello from C#: {message}"; + + [McpServerTool, Description("Echoes in reverse the message sent by the client.")] + public static string ReverseEcho(string message) => new string(message.Reverse().ToArray()) + "blah"; +} \ No newline at end of file From a475974c7fe980a71c90b86a4cd8e6b9bb9ab943 Mon Sep 17 00:00:00 2001 From: Alex Wolf Date: Wed, 21 May 2025 16:26:18 -0400 Subject: [PATCH 2/8] edits --- docs/ai/quickstarts/mcp-server-quickstart.md | 41 +++++++++++++------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/docs/ai/quickstarts/mcp-server-quickstart.md b/docs/ai/quickstarts/mcp-server-quickstart.md index 59daf8d4f4d2b..3c44e8e8ec218 100644 --- a/docs/ai/quickstarts/mcp-server-quickstart.md +++ b/docs/ai/quickstarts/mcp-server-quickstart.md @@ -6,34 +6,33 @@ ms.topic: quickstart ms.custom: devx-track-dotnet, devx-track-dotnet-ai author: alexwolfmsft ms.author: alexwolf -zone_pivot_groups: openai-library --- # Create and connect to a minimal MCP server using .NET -MCP servers are services that expose capabilities to clients through the Model Context Protocol (MCP). In this quickstart, you create a minimal Model Context Protocol (MCP) server using the [C# SDK for MCP](https://github.com/modelcontextprotocol/csharp-sdk) and connect to it using GitHub Copilot. +In this quickstart, you create a minimal Model Context Protocol (MCP) server using the [C# SDK for MCP](https://github.com/modelcontextprotocol/csharp-sdk) and connect to it using GitHub Copilot. MCP servers are services that expose capabilities to clients through the Model Context Protocol (MCP). ## Prerequisites -- [.NET 9.0](https://dotnet.microsoft.com/download) +- [.NET 8.0 SDK or higher](https://dotnet.microsoft.com/download) - [Visual Studio Code](https://code.visualstudio.com/) - [GitHub Copilot extension](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot) for Visual Studio Code ## Create the project -1. Open a terminal and run the following command to create a new console app: +1. In a terminal window, navigate to the directory where you want to create your app, and create a new console app with the `dotnet new` command: ```bash dotnet new console -n MinimalMcpServer ``` -1. Change to the project directory: +1. Navigate to the `MinimalMcpServer` directory: ```bash cd MinimalMcpServer ``` -1. Add the following NuGet packages: +1. Add the following NuGet packages to your app: ```bash dotnet add package ModelContextProtocol --prerelease @@ -45,7 +44,7 @@ MCP servers are services that expose capabilities to clients through the Model C ## Add the app code -Replace the contents of `Program.cs` with the following code to implement a minimal MCP server that exposes a simple echo tool: +Replace the contents of `Program.cs` with the following code to implement a minimal MCP server that exposes simple echo tools. The AI model invokes these tools as necessary to generate responses to user prompts. ```csharp using Microsoft.Extensions.DependencyInjection; @@ -54,26 +53,33 @@ using Microsoft.Extensions.Logging; using ModelContextProtocol.Server; using System.ComponentModel; +// Create a generic host builder for dependency injection, logging, and configuration. var builder = Host.CreateApplicationBuilder(args); + +// Configure logging to write all logs to standard error for better integration with MCP clients. builder.Logging.AddConsole(consoleLogOptions => { - // Log to stderr for better integration with MCP clients consoleLogOptions.LogToStandardErrorThreshold = LogLevel.Trace; }); +// Register the MCP server, configure it to use stdio transport, and scan the assembly for tool definitions. builder.Services .AddMcpServer() .WithStdioServerTransport() .WithToolsFromAssembly(); +// Build and run the host. This starts the MCP server. await builder.Build().RunAsync(); +// Define a static class to hold MCP tools. [McpServerToolType] public static class EchoTool { + // Expose a tool that echoes the input message back to the client. [McpServerTool, Description("Echoes the message back to the client.")] public static string Echo(string message) => $"Hello from C#: {message}"; + // Expose a tool that returns the input message in reverse. [McpServerTool, Description("Echoes in reverse the message sent by the client.")] public static string ReverseEcho(string message) => new string(message.Reverse().ToArray()); } @@ -81,8 +87,10 @@ public static class EchoTool ## Configure the MCP server in Visual Studio Code -1. Open your project folder in Visual Studio Code. -1. Create a `.vscode` folder if it doesn't exist. +Configure GitHub Copilot for Visual Studio Code to use your custom MCP server: + +1. If you haven't already, open your project folder in Visual Studio Code. +1. Create a `.vscode` folder at the root of your project. 1. Add an `mcp.json` file in the `.vscode` folder with the following content: ```json @@ -112,12 +120,17 @@ public static class EchoTool :::image type="content" source="../media/mcp/available-tools.png" alt-text="A screenshot showing the available MCP tools."::: 1. Enter a prompt to run the **ReverseEcho** tool, such as *Reverse the following: "Hello, minimal MCP server!"* -1. GitHub Copilot prompts you for a confirmation to run the selected **ReverseEcho** tool. Select **Continue**. +1. GitHub Copilot requests permission to run the **ReverseEcho** tool for your prompt. Select **Continue** or use the arrow to select a more specific behavior: + + - **Current session** always runs the operation in the current GitHub Copilot Agent Mode session. + - **Current workspace** always runs the command for current Visual Studio Code workspace. + - **Always allow** sets the operation to always run for any GitHub Copilot Agent Mode session or any Visual Studio Code workspace. + 1. Verify that the server responds with the echoed message: -```output -!revres PCM laminim ,olleH -``` + ```output + !revres PCM laminim ,olleH + ``` ## Related content From e676c4a24ce8de7231a1fdb3108f295df4bca213 Mon Sep 17 00:00:00 2001 From: Alex Wolf Date: Wed, 21 May 2025 16:46:29 -0400 Subject: [PATCH 3/8] rename file --- .../{mcp-server-quickstart.md => build-mcp-server.md} | 0 docs/ai/toc.yml | 2 ++ 2 files changed, 2 insertions(+) rename docs/ai/quickstarts/{mcp-server-quickstart.md => build-mcp-server.md} (100%) diff --git a/docs/ai/quickstarts/mcp-server-quickstart.md b/docs/ai/quickstarts/build-mcp-server.md similarity index 100% rename from docs/ai/quickstarts/mcp-server-quickstart.md rename to docs/ai/quickstarts/build-mcp-server.md diff --git a/docs/ai/toc.yml b/docs/ai/toc.yml index 752adc8a2887b..11ba9d16ec9dd 100644 --- a/docs/ai/toc.yml +++ b/docs/ai/toc.yml @@ -33,6 +33,8 @@ items: href: quickstarts/create-assistant.md - name: Get started using the AI app templates href: quickstarts/ai-templates.md + - name: Build a minimal MCP server + href: quickstarts/build-mcp-server.md - name: Concepts items: - name: How generative AI and LLMs work From b1f5977ef5899c7f9ef2eef88b628475a5a98740 Mon Sep 17 00:00:00 2001 From: Alex Wolf Date: Wed, 21 May 2025 17:12:52 -0400 Subject: [PATCH 4/8] PR fixes --- docs/ai/quickstarts/build-mcp-server.md | 43 ++----------------- .../MinimalMcpServer.csproj | 0 .../{MinimalMcpServer => }/Program.cs | 0 3 files changed, 3 insertions(+), 40 deletions(-) rename docs/ai/quickstarts/snippets/mcp-server/{MinimalMcpServer => }/MinimalMcpServer.csproj (100%) rename docs/ai/quickstarts/snippets/mcp-server/{MinimalMcpServer => }/Program.cs (100%) diff --git a/docs/ai/quickstarts/build-mcp-server.md b/docs/ai/quickstarts/build-mcp-server.md index 3c44e8e8ec218..a6eac079e490e 100644 --- a/docs/ai/quickstarts/build-mcp-server.md +++ b/docs/ai/quickstarts/build-mcp-server.md @@ -46,44 +46,7 @@ In this quickstart, you create a minimal Model Context Protocol (MCP) server usi Replace the contents of `Program.cs` with the following code to implement a minimal MCP server that exposes simple echo tools. The AI model invokes these tools as necessary to generate responses to user prompts. -```csharp -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Hosting; -using Microsoft.Extensions.Logging; -using ModelContextProtocol.Server; -using System.ComponentModel; - -// Create a generic host builder for dependency injection, logging, and configuration. -var builder = Host.CreateApplicationBuilder(args); - -// Configure logging to write all logs to standard error for better integration with MCP clients. -builder.Logging.AddConsole(consoleLogOptions => -{ - consoleLogOptions.LogToStandardErrorThreshold = LogLevel.Trace; -}); - -// Register the MCP server, configure it to use stdio transport, and scan the assembly for tool definitions. -builder.Services - .AddMcpServer() - .WithStdioServerTransport() - .WithToolsFromAssembly(); - -// Build and run the host. This starts the MCP server. -await builder.Build().RunAsync(); - -// Define a static class to hold MCP tools. -[McpServerToolType] -public static class EchoTool -{ - // Expose a tool that echoes the input message back to the client. - [McpServerTool, Description("Echoes the message back to the client.")] - public static string Echo(string message) => $"Hello from C#: {message}"; - - // Expose a tool that returns the input message in reverse. - [McpServerTool, Description("Echoes in reverse the message sent by the client.")] - public static string ReverseEcho(string message) => new string(message.Reverse().ToArray()); -} -``` + :::code language="csharp" source="snippets/mcp-server/program.cs" ::: ## Configure the MCP server in Visual Studio Code @@ -115,7 +78,7 @@ Configure GitHub Copilot for Visual Studio Code to use your custom MCP server: ## Test the MCP server 1. Open GitHub Copilot in Visual Studio Code and switch to agent mode. -1. Select the **Select tools...** icon to verify your **MinimalMcpServer** is available with both tools listed. +1. Select the **Select tools** icon to verify your **MinimalMcpServer** is available with both tools listed. :::image type="content" source="../media/mcp/available-tools.png" alt-text="A screenshot showing the available MCP tools."::: @@ -123,7 +86,7 @@ Configure GitHub Copilot for Visual Studio Code to use your custom MCP server: 1. GitHub Copilot requests permission to run the **ReverseEcho** tool for your prompt. Select **Continue** or use the arrow to select a more specific behavior: - **Current session** always runs the operation in the current GitHub Copilot Agent Mode session. - - **Current workspace** always runs the command for current Visual Studio Code workspace. + - **Current workspace** always runs the command for the current Visual Studio Code workspace. - **Always allow** sets the operation to always run for any GitHub Copilot Agent Mode session or any Visual Studio Code workspace. 1. Verify that the server responds with the echoed message: diff --git a/docs/ai/quickstarts/snippets/mcp-server/MinimalMcpServer/MinimalMcpServer.csproj b/docs/ai/quickstarts/snippets/mcp-server/MinimalMcpServer.csproj similarity index 100% rename from docs/ai/quickstarts/snippets/mcp-server/MinimalMcpServer/MinimalMcpServer.csproj rename to docs/ai/quickstarts/snippets/mcp-server/MinimalMcpServer.csproj diff --git a/docs/ai/quickstarts/snippets/mcp-server/MinimalMcpServer/Program.cs b/docs/ai/quickstarts/snippets/mcp-server/Program.cs similarity index 100% rename from docs/ai/quickstarts/snippets/mcp-server/MinimalMcpServer/Program.cs rename to docs/ai/quickstarts/snippets/mcp-server/Program.cs From 100120353ae151781cab4f1a81dc57b90a814619 Mon Sep 17 00:00:00 2001 From: Alex Wolf Date: Wed, 21 May 2025 17:13:35 -0400 Subject: [PATCH 5/8] fix formatting --- docs/ai/quickstarts/build-mcp-server.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ai/quickstarts/build-mcp-server.md b/docs/ai/quickstarts/build-mcp-server.md index a6eac079e490e..24a27dd447dfc 100644 --- a/docs/ai/quickstarts/build-mcp-server.md +++ b/docs/ai/quickstarts/build-mcp-server.md @@ -46,7 +46,7 @@ In this quickstart, you create a minimal Model Context Protocol (MCP) server usi Replace the contents of `Program.cs` with the following code to implement a minimal MCP server that exposes simple echo tools. The AI model invokes these tools as necessary to generate responses to user prompts. - :::code language="csharp" source="snippets/mcp-server/program.cs" ::: +:::code language="csharp" source="snippets/mcp-server/program.cs" ::: ## Configure the MCP server in Visual Studio Code From 0f1a15c2f8067714e886cff6140c5e3f34980f13 Mon Sep 17 00:00:00 2001 From: Alex Wolf Date: Wed, 21 May 2025 17:24:49 -0400 Subject: [PATCH 6/8] update code --- docs/ai/quickstarts/snippets/mcp-server/Program.cs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/docs/ai/quickstarts/snippets/mcp-server/Program.cs b/docs/ai/quickstarts/snippets/mcp-server/Program.cs index 205afbc2cbacb..ec3c97e641841 100644 --- a/docs/ai/quickstarts/snippets/mcp-server/Program.cs +++ b/docs/ai/quickstarts/snippets/mcp-server/Program.cs @@ -4,26 +4,33 @@ using ModelContextProtocol.Server; using System.ComponentModel; +// Create a generic host builder for dependency injection, logging, and configuration. var builder = Host.CreateApplicationBuilder(args); + +// Configure logging to write all logs to standard error for better integration with MCP clients. builder.Logging.AddConsole(consoleLogOptions => { - // Log to stderr for better integration with MCP clients consoleLogOptions.LogToStandardErrorThreshold = LogLevel.Trace; }); +// Register the MCP server, configure it to use stdio transport, and scan the assembly for tool definitions. builder.Services .AddMcpServer() .WithStdioServerTransport() .WithToolsFromAssembly(); +// Build and run the host. This starts the MCP server. await builder.Build().RunAsync(); +// Define a static class to hold MCP tools. [McpServerToolType] public static class EchoTool { + // Expose a tool that echoes the input message back to the client. [McpServerTool, Description("Echoes the message back to the client.")] public static string Echo(string message) => $"Hello from C#: {message}"; + // Expose a tool that returns the input message in reverse. [McpServerTool, Description("Echoes in reverse the message sent by the client.")] - public static string ReverseEcho(string message) => new string(message.Reverse().ToArray()) + "blah"; + public static string ReverseEcho(string message) => new string(message.Reverse().ToArray()); } \ No newline at end of file From e66a85eae7daa63606509b1defae6e5d0631f6c2 Mon Sep 17 00:00:00 2001 From: Alex Wolf Date: Thu, 22 May 2025 09:43:25 -0400 Subject: [PATCH 7/8] PR fixes --- docs/ai/quickstarts/build-mcp-server.md | 15 ++++++++++++++- .../ai/quickstarts/snippets/mcp-server/Program.cs | 10 ++++++---- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/docs/ai/quickstarts/build-mcp-server.md b/docs/ai/quickstarts/build-mcp-server.md index 24a27dd447dfc..1257986976b33 100644 --- a/docs/ai/quickstarts/build-mcp-server.md +++ b/docs/ai/quickstarts/build-mcp-server.md @@ -48,6 +48,14 @@ Replace the contents of `Program.cs` with the following code to implement a mini :::code language="csharp" source="snippets/mcp-server/program.cs" ::: +The preceding code: + +- Creates a generic host builder for dependency injection, logging, and configuration. +- Configures logging for better integration with MCP clients. +- Registers the MCP server, configures it to use stdio transport, and scans the assembly for tool definitions. +- Builds and runs the host, which starts the MCP server. +- Defines a static class to hold two MCP tools that echo values back to the client. + ## Configure the MCP server in Visual Studio Code Configure GitHub Copilot for Visual Studio Code to use your custom MCP server: @@ -82,7 +90,12 @@ Configure GitHub Copilot for Visual Studio Code to use your custom MCP server: :::image type="content" source="../media/mcp/available-tools.png" alt-text="A screenshot showing the available MCP tools."::: -1. Enter a prompt to run the **ReverseEcho** tool, such as *Reverse the following: "Hello, minimal MCP server!"* +1. Enter a prompt to run the **ReverseEcho** tool: + + ``` + Reverse the following: "Hello, minimal MCP server!" + ``` + 1. GitHub Copilot requests permission to run the **ReverseEcho** tool for your prompt. Select **Continue** or use the arrow to select a more specific behavior: - **Current session** always runs the operation in the current GitHub Copilot Agent Mode session. diff --git a/docs/ai/quickstarts/snippets/mcp-server/Program.cs b/docs/ai/quickstarts/snippets/mcp-server/Program.cs index ec3c97e641841..dabca53227169 100644 --- a/docs/ai/quickstarts/snippets/mcp-server/Program.cs +++ b/docs/ai/quickstarts/snippets/mcp-server/Program.cs @@ -4,16 +4,18 @@ using ModelContextProtocol.Server; using System.ComponentModel; -// Create a generic host builder for dependency injection, logging, and configuration. +// Create a generic host builder for +// dependency injection, logging, and configuration. var builder = Host.CreateApplicationBuilder(args); -// Configure logging to write all logs to standard error for better integration with MCP clients. +// Configure logging for better integration with MCP clients. builder.Logging.AddConsole(consoleLogOptions => { - consoleLogOptions.LogToStandardErrorThreshold = LogLevel.Trace; +consoleLogOptions.LogToStandardErrorThreshold = LogLevel.Trace; }); -// Register the MCP server, configure it to use stdio transport, and scan the assembly for tool definitions. +// Register the MCP server and configure it to use stdio transport. +// Scan the assembly for tool definitions. builder.Services .AddMcpServer() .WithStdioServerTransport() From 3cd6aca0710a9ed64f979fba2ac776ff690ee5ae Mon Sep 17 00:00:00 2001 From: Alex Wolf Date: Thu, 22 May 2025 10:00:57 -0400 Subject: [PATCH 8/8] fix fence --- docs/ai/quickstarts/build-mcp-server.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ai/quickstarts/build-mcp-server.md b/docs/ai/quickstarts/build-mcp-server.md index 1257986976b33..8deb5b01bd07a 100644 --- a/docs/ai/quickstarts/build-mcp-server.md +++ b/docs/ai/quickstarts/build-mcp-server.md @@ -92,7 +92,7 @@ Configure GitHub Copilot for Visual Studio Code to use your custom MCP server: 1. Enter a prompt to run the **ReverseEcho** tool: - ``` + ```console Reverse the following: "Hello, minimal MCP server!" ```