AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

모델 컨텍스트 프로토콜(MCP)을 활용한 C# 기반 서버 및 클라이언트 구현

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

개발 툴

대상자

C# 개발자, AI 시스템 통합 담당자 (중급~고급 수준)

핵심 요약

  • MCP의 핵심 개념:

- 일관된 접근(Consistent Access): 모든 리소스에 대한 통합 인터페이스 제공

- 최신 정보 보장(Always Up to Date): 실시간 데이터 동기화

- 복잡성 추상화(Abstracted Complexity): 데이터 소스별 맞춤 코드 제거

  • 구조:

- 클라이언트-서버 모델 기반 설계 (McpClient, McpServer 클래스 활용)

- .NET 8.0 기반의 C# SDK 제공 (GitHub: petersaktor/mcp)

  • 구현 키 포인트:

- McpServerPromptType, McpServerToolType 어트리뷰트를 사용한 리소스/프롬프트/도구 정의

- StdioClientTransport를 통한 서버-클라이언트 통신

섹션별 세부 요약

1. MCP 개요

  • 정의: AI 시스템이 파일 시스템, 데이터베이스, API 등 외부 리소스와 상호작용하는 표준화된 프로토콜
  • 기능:

- AI 에이전트가 데이터 탐색, 가져오기, 작업 수행 가능

- 모듈화된 아키텍처를 통해 개발자 생산성 향상

2. MCP의 핵심 구성 요소

  • 리소스(Resource):

- 문서, 이미지, 데이터베이스 등 외부 데이터를 접근할 수 있는 정적 자원

- 예: GetBingEndpoint() 메서드로 Bing 엔드포인트 URL 제공

  • 도구(Tool):

- 데이터 가져오기, 파일 수정, 작업 트리거 등 동작 중심 기능

- 예: GetCurrentTime() 메서드로 시간대별 현재 시간 반환

  • 프롬프트(Prompt):

- AI 에이전트와 도구/리소스 간 상호작용 템플릿

- 예: Summarize() 메서드로 입력 콘텐츠 요약

3. 클라이언트-서버 구현

  • 서버 구성:

- AddMcpServer()를 통해 STDIO 통신 설정

- WithToolsFromAssembly()로 도구 정의, WithResourcesFromAssembly()로 리소스 정의

  • 클라이언트 구성:

- StdioClientTransport를 사용해 서버 실행 명령 지정

- McpClientFactory로 클라이언트 생성 후 프롬프트/도구/리소스 요청 처리

4. 코드 예시

  • 서버 프로그램:

```csharp

var builder = Host.CreateApplicationBuilder(args);

builder.Services.AddMcpServer()

.WithStdioServerTransport()

.WithToolsFromAssembly();

await builder.Build().RunAsync();

```

  • 프롬프트 정의:

```csharp

[McpServerPromptType]

public static class SimplePrompt

[McpServerPrompt]

public static ChatMessage Summarize(string content) =>

new(ChatRole.User, $"Please summarize this content into a single sentence: {content}");

```

결론

  • 실무 적용 팁:

- GitHub 저장소의 petersaktor/mcp 예제를 기반으로 MCP 서버/클라이언트 구현

- McpServerPromptType, McpServerToolType 어트리뷰트를 활용한 모듈화 설계 중요

- .NET 8.0 기반 SDK 활용 시 serialization, context 관리 자동화 가능