DevMountain AI 프로젝트 연계 MCP + RAG 총정리

박화랑·2025년 6월 23일
1

Spring_6기

목록 보기
26/32

튜터님에게 MVP 시연 후 피드백 들은 사항에 대해 정리한 뒤 내가 맡을 분야는 MCP 클라이언트 구축 후(MCP 서버는 추가), 유튜브 같은 영상 플랫폼(mcp 서버를 활용해 강의 데이터를 가져오기) 였다. MCP에 대한 개념을 확실히 알아둬야 하는 것도 좋고 요즘 핫한 ai 기능에 대한 경험이 있다는 것은 분명 신입 개발자로서 취업 전 해보기 좋은 프로젝트 과제라고 생각했다.

1. 사전 지식 공부

시작하기 전 참고 자료들을 사용하기 위해서
https://www.youtube.com/watch?v=7oQYAcza3f8
https://www.youtube.com/watch?v=w5YVHG1j3Co\&t=784s
https://www.youtube.com/watch?v=kXuRJXEzrE0
위 자료들을 참고 했다.

2. 개념 정리

우선은 사전 지식 및 작업들을 진행하고 mcp client에 대한 간단한 지식들을 정리했다. MCP(Model Context Protocal) 에 대한 정보는 다른 사이트에서도 많이 정리했지만 여기서 한 번 더 정리하자면 AI 모델과 외부 데이터(유튜브, 트위터, 노션 등등 다양한 데이터)를 표준화된 방식으로 연결하는 프로토콜이라고 한다. 즉, ai가 사용하기 쉬운 툴이라고 생각하면 되는 것이다.

3. 공식자료 및 강의 자료를 참고하여 작성

https://docs.spring.io/spring-ai/reference/api/mcp/mcp-client-boot-starter-docs.html
위 공식 자료를 참고하여 구현하려고 했는데 

implementation 'org.springframework.ai:spring-ai-mcp-client’

이런 의존성을 설치했는데  
import org.springframework.ai 에서 가져올 수 있는 라이브러리가 없다는 것이었다. 확인해보니
https://repo.spring.io/ui/native/milestone/org/springframework/ai/spring-ai-starter-mcp-client/
위 사이트에 내용이 전부 없는 깡통 의존성 패키지였다. 찾아보니 1.0.0 버전 별로 라이브러리 불러오는 것도 이름이 달라서 조심해야 한다.
https://repo.spring.io/ui/native/milestone/org/springframework/ 위 링크를 참고하고 milestone에서 있는 지 없는 지 무조건 확인한 다음에 넣어야 한다!

✅ 옳은 의존성 설치 (M6 버전)

implementation 'org.springframework.ai:spring-ai-mcp-client-spring-boot-starter'

  • 위 캡쳐본을 확인하면 성공적으로 됐다.
    또한 이전 버전은 M4 버전 이었으므로 build 할 때 이전 pgvector 및 openai 라이브러리 import도 수정해야 한다.

4-1 M4에서 M6로 버전 이동

1. Spring AI 배포 버전 해결 (M4 vs M6 추가 문제)

  • 문제 상황: Gradle에서 spring-ai-mcp-client 버전을 M4에선 tool 설정으로 client 기능을 사용할 수 없다고 함.
  • 결정: 따라서 이전에 쓰던 M4 세팅을 M6으로 변경함. 이에 맞춰 빌드도 ./gradlew clean build --refresh-dependencies 이걸로 계속 빌드를 진행했다. (의존성 및 여러 오류가 많이 날 수도 있으니 그냥 의존성 원본을 올리자면...)
ext {
	    springAiVersion = "1.0.0-M6"
	}
dependencyManagement {
    imports {
        mavenBom "org.springframework.ai:spring-ai-bom:${springAiVersion}"
    }
}
dependencies {
    implementation 'org.springframework.ai:spring-ai-openai-spring-boot-starter'
    implementation 'org.springframework.ai:spring-ai-pgvector-store-spring-boot-starter'
    implementation 'org.springframework.ai:spring-ai-mcp-client-spring-boot-starter'
  }
  • 결론: 공식문서에서도 꼼꼼한 체크와 다른 블로그에서 어떤 방식으로 구현했는지 참고했다면 빠르게 진행이 가능했을 것 같다. (여기서 너무 시간을 잡아먹음)

4-2 잘못된 자료 참고를 하고 실패한 내용들

OpenAIChatClient 클래스 인식 불가

  • import org.springframework.ai.chat.client.OpenAIChatClient 시 심볼을 인식 못 함
  • → 원인: 최신 spring-ai 버전에서 ChatClient.create(...) 방식으로만 생성 가능

ChatRequest / ChatResponse 클래스가 없다는 오류

  • ChatClient는 .prompt().user().call() 등 DSL 방식으로만 사용해야 함
  • 직접 객체 생성 방식은 Spring AI 구조에 맞지 않음

5. 사용하는 MCP 서버(zubeid-youtube-mcp-server)

✅ 현재 사용하는 YouTube MCP 구조

  • MCP 서버: npx zubeid-youtube-mcp-server로 실행되는 Node.js 애플리케이션
npx -y zubeid-youtube-mcp-server # 위 커맨드로 실행 자세한 사용법은 링크 참고!
  • Spring 통합 방식: spring.ai.mcp.client.stdio.connections.youtube 설정으로 STDIO 연결
spring:
  ai:
    mcp:
      client:
        type: SYNC
        stdio:
          root-change-notification: true
          connections:
            youtube:
              command: npx
              args:
                - -y
                - zubeid-youtube-mcp-server
              env:
                YOUTUBE_API_KEY: 실제 API키 발급하기
                YOUTUBE_TRANSCRIPT_LANG: ko

Youtube API 키 발급 방법

  1. console.cloud.google.com 에 방문하기 -> 프로젝트 생성 후 youtube 검색

  • 지금은 만들어서 관리지만 저기 버튼을 누르면 생성 가능!

  • 우측 하단에 키를 확인할 수 있으니 여기서 발급 받을 것!

이제 구현을 위해 youtube MCP server에 접근한다.

git clone https://github.com/hugecookie/youtube-mcp-server.git

이후에 폴더에 들어가서

npm install
npm run dev

가져온 프로젝트는 내가 사용하기 위해 커스텀한 프로젝트 이므로 용도에 따라 server.ts 파일을 확인하여 수정이 가능하다. 이를 확인할 것!

이후 여러 과정들은 youtube mcp server 설정 관련 정보 여기서 확인하면 될 것이다!

의사결정에 고민한 점

  1. 버전에 대한 고민 M4가 지금까지 사용하던 버전이었지만 tools에 대한 기능을 ai가 직접 판단하여 사용할 지 설정하는 것은 M6의 mcp client 설정이 생기고 난 뒤부터 가능하다는 것을 고려하고 구현할 기능에 대한 요구사항을 다시 한 번 확인하고 결정했다.
  2. Spring AI에 대한 mcp 서버 설정은 많이 나와있지만 node.js 파일의 형태는 해석하는 것에 많은 시간이 들었다. 확실히 최근에 핫한 내용은 오류 상황이나 설정들이 많고 자료가 충분하지 않아 구현하는 것에 어려움이 많았다.
profile
개발자 희망생

0개의 댓글