Microsoft Learn 문서 MCP용 AI 어시스턴트 구축하기 | Microsoft Community Hub


요약

Microsoft Learn 문서를 위한 AI 어시스턴트를 구축하는 프로젝트로, Model Context Protocol(MCP) 서버와 Azure OpenAI를 활용한 “검색 및 합성(Retrieve and Synthesize)” 패턴을 구현한 사례를 다룹니다.

Microsoft Learn Docs MCP 서버 Microsoft Docs MCP 서버는 GitHub Copilot이나 Cursor 같은 MCP 호스트가 Microsoft 공식 문서에서 정확한 정보를 직접 검색하고 검색할 수 있게 해주는 클라우드 호스팅 서비스입니다. 표준화된 Model Context Protocol을 구현하여 호환 가능한 AI 시스템이 권위 있는 Microsoft 콘텐츠를 기반으로 응답할 수 있도록 합니다.

초기 도전과제 처음 목표는 사용자가 질문하면 MCP 서버를 쿼리하여 답변을 얻는 채팅 인터페이스 구축이었습니다. 하지만 MCP 서버는 AI 에이전트용으로 설계되어 단일 답변이 아닌 문서에서 최대 10개의 고품질 콘텐츠 청크를 포함한 풍부한 페이로드를 반환했습니다. 포괄적인 컨텍스트 제공에는 훌륭하지만 직접적인 채팅 응답에는 압도적이었고, 사용자는 수천 단어를 걸러내어 답을 찾아야 하는 어려움이 있었습니다.

2단계 솔루션: RAG 패턴 Retrieval-Augmented Generation(RAG) 패턴을 중심으로 애플리케이션을 설계했습니다:

  1. 검색(Retrieve): 전문 데이터 소스(MCP 서버)에 연결하여 관련되고 사실적인 컨텍스트를 가져옵니다.
  2. 합성(Synthesize): 그 컨텍스트를 범용 대규모 언어 모델(LLM)에 제공하여 간결하고 인간이 읽기 쉬운 답변을 생성합니다.

1단계: MCP 서버 연결 가장 어려운 부분이었으며, 여러 번의 시행착오를 통해 정확한 요청 형식을 찾아야 했습니다. 엔드포인트는 https://learn.microsoft.com/api/mcp 였지만 정확한 요청 형식은 서버의 오류 메시지를 신중히 분석하여 해결해야 하는 미스터리였습니다.

최종 작동 코드:

const mcpPayload = {
    "jsonrpc": "2.0",
    "id": `chat-${Date.now()}`,
    "method": "tools/call",
    "params": {
        "name": "microsoft_docs_search",
        "arguments": {
            "question": userQuery
        }
    }
};

2단계: Azure OpenAI를 통한 데이터 합성 10개의 문서 청크를 얻은 후 Azure OpenAI 모델을 사용하여 “뇌” 역할을 추가했습니다:

  1. MCP 서버가 반환한 검색 결과에서 모든 텍스트 추출
  2. 이 텍스트를 하나의 큰 컨텍스트 블록으로 결합
  3. AI 어시스턴트 모델이 Microsoft 전문가 역할을 하도록 지시하는 신중히 설계된 프롬프트 생성
  4. 사용자의 원래 질문과 검색된 컨텍스트를 Azure OpenAI API로 전송

핵심 프롬프트 구조:

messages: [
    { role: 'system', content: 'You are an expert assistant. Generate answers based on the provided context.' },
    { role: 'user', content: `Context:\n${retrievedText}\n\nQuestion:\n${message}` }
]

최종 결과 완성된 애플리케이션은 Next.js와 React로 구축된 깔끔하고 간단한 채팅 인터페이스를 제공합니다. 사용자가 질문하면:

  1. Next.js 백엔드가 MS Learn MCP 서버를 조용히 쿼리
  2. 최대 10개 기사의 컨텍스트 수신
  3. 백엔드가 해당 컨텍스트와 원래 질문을 Azure OpenAI API로 전달
  4. 간결하고 요약된 답변 수신
  5. 최종 답변이 채팅 창에 표시

결론 이 프로젝트는 현대 AI 애플리케이션 개발의 훌륭한 교훈이었습니다. 전문화된 데이터 검색 도구를 대규모 범용 언어 모델과 함께 사용하는 강력한 패턴을 보여줍니다. API 디버깅의 끈기와 완벽한 프롬프트 작성 기술의 중요성을 강조하며, 서로 다른 서비스의 강점을 결합하여 부분의 합보다 훨씬 더 능력 있는 애플리케이션을 구축할 수 있음을 입증했습니다.