
AI 에이전트에게 모든 Kotlin/Java 라이브러리의 실제 소스 제공하기
요약
AI 코딩 에이전트가 존재하지 않는 메서드를 생성하는 문제를 해결하기 위해, 실제 Kotlin/Java 라이브러리의 소스 코드를 직접 분석하여 답변하는 기술을 소개합니다. MCP를 통해 sources jar를 다운로드하고 Kotlin Analysis API로 파싱하여 정확한 타입과 구현체를 제공합니다.
핵심 포인트
- 실제 소스 코드를 기반으로 하여 '그럴듯하지만 틀린' 코드 생성 방지
- Kotlin Analysis API를 활용해 타입이 해결된(type-resolved) 정확한 시그니처 제공
- Ktor 등 라이브러리의 소스 jar를 다운로드하고 인덱싱하여 오프라인 활용 가능
- API 목록, KDoc, 의존성 트리 등 10가지 도구를 에이전트에게 제공
당신의 AI 코딩 어시스턴트는 존재하지 않는 Kotlin 메서드 시그니처(method signature)를 자신 있게 건네줄 것입니다. 강력한 타입 시스템(strongly-typed ecosystem)을 가진 생태계에서 "그럴듯하지만 틀린" 방식은 최악의 실패 모드입니다. 머릿속에서는 컴파일되지만 빌드 시에는 깨지기 때문입니다.
대신 실제 소스를 읽는 방식은 다음과 같습니다:
단 하나의 프롬프트로, kotlin-lib-mcp가 Ktor의 sources jar를 다운로드하고, 이를 Kotlin Analysis API(IDE를 구동하는 것과 동일한 K2/FIR 프론트엔드)로 파싱하여 실제 코드를 바탕으로 답변합니다.
하나의 좌표, 열 개의 도구
fetch_library("io.ktor:ktor-client-core:3.5.1")
이것이 설정의 전부입니다. 서버는 sources jar를 다운로드하고, 압축을 풀고, 한 번 분석한 뒤 파싱된 인덱스를 디스크에 캐싱합니다. 그러면 당신의 에이전트는 이를 활용해 10가지 도구를 사용할 수 있습니다:
list_packages/list_declarations— 공개 API 표면(public API surface)get_api_signature— 타입이 해결된(type-resolved) 시그니처 (제네릭, Nullability, 수신 객체(receiver))get_kdoc— HTML 페이지가 아닌 구조화된 데이터로서의 KDocget_source/search_source— 실제 구현체 + 제한된 검색get_dependencies—.pom/.module으로부터 추출한 의존성 트리list_versions/get_latest_version— Maven 메타데이터로부터 "최신 안정 버전"을 확인
당신이 의존하고 있는 정확한 버전에 고정되며, 첫 번째 가져오기 이후에는 오프라인으로 작동합니다. "문서"와 빌드에 사용 중인 버전 사이의 괴리가 발생하지 않습니다.
왜 "해결(resolved)"이 핵심인가
소스에 대한 정규 표현식(Regex)은 시그니처 형태의 _문자열(string)_을 제공할 뿐입니다. Analysis API는 실제로 컴파일러 프론트엔드를 실행하므로, 추측이 아닌 해결된 타입을 얻을 수 있습니다. 전이 의존성(transitive dependency)이 누락된 경우, 실패하는 대신 최선의 노력으로 PSI 시그니처를 생성하고 bestEffort: true로 표시하여 성능을 저하시킵니다. 빈 답변보다는 우아한 성능 저하(Graceful degradation)를 선택한 것입니다.
두 가지 Kotlin 특화 기능이 이를 단순한 "jar 압축 해제" 이상의 것으로 만들었습니다:
- KMP sources jars는 타겟별로 제공됩니다. 멀티플랫폼 (Multiplatform) 라이브러리는
-jvm-sources.jar와 같은 공통 jar 및 기타 타겟용 jar를 게시하며, 이는 모든 심볼(symbol)이 타겟별로 태깅된.moduleGradle 메타데이터를 통해 해결됩니다. - Analysis API는 버전에 민감합니다. 스탠드얼론 (Standalone) 모드는 정확한 Kotlin 릴리스 버전에 맞춰 버전을 고정(version-locked)해야 하므로, 하나의
SourceAnalyzer인터페이스 뒤에 격리되어 있습니다.
~60초 안에 시도해보기
빌드가 필요 없는 Docker 방식:
claude mcp add kotlin-lib -- docker run -i --rm -v kotlin-lib-mcp-cache:/home/mcp/.cache ghcr.io/aoreshkov/kotlin-lib-mcp
또는 릴리스 zip 파일(Java 21 이상)을 받거나, **공식 MCP 레지스트리 (official MCP registry)**에서 io.github.aoreshkov/kotlin-lib-mcp로 설치하세요. 그런 다음 에이전트에게 라이브러리를 가져와서 API를 설명해 달라고 요청하면, 에이전트가 코드를 바탕으로 답변합니다.
이 프로젝트는 또한 깔끔한 참조용 빌드이기도 합니다: 세 가지 MCP 프리미티브 (도구 (tools), 캐시된 라이브러리별 리소스 (resources) + 리소스 템플릿, 그리고 프롬프트 (prompt))를 모두 포함하며, 도구별 동작 어노테이션 (annotations), 타입화된 outputSchema, 진행 상황 알림 (progress notifications), 그리고 서버→클라이언트 로그 전달 (log forwarding) 기능을 갖추고 있습니다. 현재 안정적인 MCP 스펙 (2025-11-25)을 기반으로 구축되었습니다. 2026년 로드맵의 상태 비저장 코어 (stateless core) 및 Tasks/Apps 확장 기능은 자연스러운 다음 단계가 될 것입니다.
GitHub: https://github.com/aoreshkov/kotlin-lib-mcp — Apache-2.0 라이선스. 특히 Analysis-API의 엣지 케이스 (edge cases) 제보를 환영합니다.
이 글이 도움이 되었나요? 저는 한 번의 대화로 전체 Kotlin Multiplatform 앱을 생성하는 방법에 대해서도 글을 썼습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기