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

How I Created a Handy MCP Server in C# to Retrieve NuGet Package Information

카테고리

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

서브카테고리

DevOps

대상자

  • C# 개발자, AI 코딩 어시스턴트 사용자, NuGet 패키지 사용자
  • 중급~고급 난이도: MCP 프로토콜 이해, NuGet 패키지 분석, C# 서버 개발 기술 필요

핵심 요약

  • MCP(Model Context Protocol)는 AI가 외부 도구(예: NuGet API)와 상호작용할 수 있도록 JSON 기반 표준 프로토콜 제공
  • DimonSmart.NugetMcpServerNuGet 패키지의 실제 API 정의를 가져와 LLM 홀루세이션(허위 정보 생성)을 줄임
  • 서버는 [McpServerTool] 어트리뷰트를 사용해 C# 메서드를 MCP 도구로 자동 등록하고, STDIO를 통해 JSON 요청/응답 처리

섹션별 세부 요약

1. MCP 프로토콜의 필요성

  • LLM의 한계: 외부 도구 없이 시간, 파일 읽기, API 호출 등 정확한 정보를 제공할 수 없음
  • MCP의 역할: AI가 표준화된 JSON 형식으로 외부 도구(예: GetCurrentTime, GetTime)를 호출하고 결과를 받음
  • 예시:
  • 요청: {"name":"GetCurrentTime","parameters":{}}
  • 응답: {"result":"2025-06-03T14:42:41Z"}

2. NuGet MCP 서버의 문제점 해결

  • LLM 홀루세이션의 원인:
  • 구식 메서드 추천, 존재하지 않는 API 호출, 버전 차이 혼동, 불완전한 정보 제공
  • NugetMcpServer의 기능:
  • NuGet 패키지의 인터페이스 정의, 열거형 정의, 버전별 정보 제공
  • 패키지 다운로드 후 .dll 분석을 통해 실제 API 정의 추출

3. 서버 구현 방법

  • C# 라이브러리 사용: ModelContextProtocol.Server (v0.2.0)
  • 도구 등록:
  • [McpServerToolType] 어트리뷰트로 도구 컨테이너 클래스 정의
  • [McpServerTool] 어트리뷰트로 메서드를 MCP 도구로 노출
  • 예시 코드:

```csharp

[McpServerToolType]

public static class TimeTool

[McpServerTool, Description("Returns the current server time in ISO 8601 format (YYYY-MM-DDThh:mm:ssZ).")]

public static string GetCurrentTime()

return DateTime.UtcNow.ToString("o");

```

4. NuGet MCP 서버의 주요 기능

  • ListInterfaces(packageId, version?) – 특정 패키지의 모든 공개 인터페이스 목록 제공
  • GetInterfaceDefinition(packageId, interfaceName, version?)인터페이스의 C# 정의 코드 반환
  • GetEnumDefinition(packageId, enumName, version?)열거형의 정의 반환
  • STDIO 통신: JSON 프로토콜 기반, VS Code 등 MCP 클라이언트와 호환

결론

  • NuGet MCP 서버 사용 권장: AI 코딩 어시스턴트의 정확성 향상, NuGet 패키지의 실시간 API 정의 제공
  • 설치 방법: winget install DimonSmart.NugetMcpServer 명령어로 간단히 설치 가능
  • 핵심 가치: LLM 홀루세이션 줄이고, NuGet 패키지의 정확한 API 정보를 실시간으로 제공하는 AI 개발 도구