이 빠른 시작에서는 MCP용 C# SDK를 사용하여 최소 MCP(모델 컨텍스트 프로토콜) 클라이언트를 빌드합니다. 또한 최소 MCP 서버 빌드 빠른 시작에서 만든 것과 같이 MCP 서버에 연결하도록 클라이언트를 구성하는 방법도 알아봅니다.
필수 조건
비고
앞서 섹션에서 빌드하는 MCP 클라이언트는 최소 MCP 서버 빌드 빠른 시작에서 샘플 MCP 서버에 연결합니다. 고유한 연결 구성을 제공하는 경우 자체 MCP 서버를 사용할 수도 있습니다.
.NET 호스트 앱 만들기
다음 단계를 완료하여 .NET 콘솔 앱을 만듭니다. 앱은 MCP 서버에 연결하는 MCP 클라이언트의 호스트 역할을 합니다.
프로젝트를 만듭니다.
터미널 창에서 앱을 만들 디렉터리로 이동하고 다음 명령을 사용하여 새 콘솔 앱을
dotnet new
만듭니다.dotnet new console -n MCPHostApp
새로 만든 프로젝트 폴더로 이동합니다.
cd MCPHostApp
다음 명령을 실행하여 필요한 NuGet 패키지를 추가합니다.
dotnet add package Azure.AI.OpenAI --prerelease dotnet add package Azure.Identity dotnet add package Microsoft.Extensions.AI dotnet add package Microsoft.Extensions.AI.OpenAI --prerelease dotnet add package ModelContextProtocol --prerelease
Visual Studio Code와 같이 선택한 편집기에서 프로젝트 폴더를 엽니다.
code .
앱 코드 추가
Program.cs
의 내용을 다음 코드로 바꿉니다.
using Azure.AI.OpenAI;
using Azure.Identity;
using Microsoft.Extensions.AI;
using ModelContextProtocol.Client;
// Create an IChatClient using Azure OpenAI.
IChatClient client =
new ChatClientBuilder(
new AzureOpenAIClient(new Uri("<your-azure-openai-endpoint>"),
new DefaultAzureCredential())
.GetChatClient("gpt-4o").AsIChatClient())
.UseFunctionInvocation()
.Build();
// Create the MCP client
// Configure it to start and connect to your MCP server.
IMcpClient mcpClient = await McpClientFactory.CreateAsync(
new StdioClientTransport(new()
{
Command = "dotnet run",
Arguments = ["--project", "<path-to-your-mcp-server-project>"],
Name = "Minimal MCP Server",
}));
// List all available tools from the MCP server.
Console.WriteLine("Available tools:");
IList<McpClientTool> tools = await mcpClient.ListToolsAsync();
foreach (McpClientTool tool in tools)
{
Console.WriteLine($"{tool}");
}
Console.WriteLine();
// Conversational loop that can utilize the tools via prompts.
List<ChatMessage> messages = [];
while (true)
{
Console.Write("Prompt: ");
messages.Add(new(ChatRole.User, Console.ReadLine()));
List<ChatResponseUpdate> updates = [];
await foreach (ChatResponseUpdate update in client
.GetStreamingResponseAsync(messages, new() { Tools = [.. tools] }))
{
Console.Write(update);
updates.Add(update);
}
Console.WriteLine();
messages.AddMessages(updates);
}
위의 코드는 다음 작업을 수행합니다.
-
IChatClient
추상화를Microsoft.Extensions.AI
라이브러리를 사용하여 초기화합니다. - MCP 클라이언트를 만들고 MCP 서버에 연결하도록 구성합니다.
- 표준 MCP 함수인 MCP 서버에서 사용 가능한 도구 목록을 검색하고 표시합니다.
- 사용자 프롬프트를 처리하고 응답에 대한 도구를 활용하는 대화형 루프를 구현합니다.
앱 실행 및 테스트
다음 단계를 완료하여 .NET 호스트 앱을 테스트합니다.
프로젝트의 루트에 열려 있는 터미널 창에서 다음 명령을 실행하여 앱을 시작합니다.
dotnet run
앱이 실행되면 ReverseEcho 도구를 실행하라는 프롬프트를 입력합니다.
Reverse the following: "Hello, minimal MCP server!"
서버가 반복된 메시지로 응답했는지 확인합니다.
!revres PCM laminim ,olleH
관련 콘텐츠
.NET