TSDoc 기반 LLM 문서 제공을 위한 MCP 서버 구축

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

개발 툴

대상자

- 타겟: TypeScript 및 LLM(대규모 언어 모델)과 협업하는 개발자

- 난이도: 중간~고급 (TSDoc, MCP 프로토콜, Rspack 구성 등 기술적 지식 필요)

핵심 요약

  • LLM의 한계: @praha/byethrow 같은 새로운 라이브러리에 대한 지식 부족으로 오류 발생
  • MCP 서버 역할: TSDoc 문서를 기반으로 LLM에 최신 정보 제공 (@modelcontextprotocol/sdk 활용)
  • 구현 핵심: TypeDoc으로 Markdown 생성, Rspack으로 ESM 패키징, ModuleReference/FunctionReference 도구 정의

섹션별 세부 요약

1. 문제 정의: LLM의 라이브러리 이해 한계

  • LLM의 학습 데이터 한계: 최신 오픈소스 라이브러리(@praha/byethrow)에 대한 지식 부족
  • 예시: byethrow 사용 시 Result 타입의 pipe, andThen 등 핵심 API 오인식
  • 결과: 잘못된 함수 생성, 예제 코드 오류 발생

2. MCP 서버 개요 및 작동 방식

  • MCP 프로토콜: LLM이 외부 도구(TSDoc) 사용 가능
  • 작동 흐름:
  1. LLM → MCP 서버 요청
  2. MCP 서버 → TSDoc Markdown 문서 반환
  3. LLM → 정확한 코드 생성 및 설명
  • 주요 기술: @modelcontextprotocol/sdk, Rslib, TypeDoc

3. 구현 단계 및 구성 요소

  • TSDoc 문서 생성:

```bash

npm install --save-dev typedoc typedoc-plugin-markdown

```

  • Markdown 정제: FunctionName 링크 제거
  • Rspack 구성:

```ts

// rsbuild.config.ts

import { defineConfig } from '@rslib/core';

export default defineConfig({

tools: {

rspack: {

module: {

rules: [

{ test: /\.md$/, type: 'asset/source' }

]

}

}

}

});

```

  • MCP 서버 설정:

```ts

import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';

const server = new McpServer({

name: '@praha/byethrow',

version: packageJson.version,

instructions: 'Use this server to retrieve up-to-date documentation...'

});

```

  • 도구 정의: ModuleReference, FunctionReference, TypeReference 등 생성

4. VSCode 설정 및 검증

  • 설정 파일:

```json

{

"mcp": {

"servers": {

"my-mcp-server": {

"type": "stdio",

"command": "node",

"args": ["{path-to-mcp}/dist/index.js"]

}

}

}

}

```

  • 검증 로그:

```

[info] Discovered 3 tools

```

결론

  • 핵심 팁: TSDoc 기반 MCP 서버 구축을 통해 LLM의 문서 이해 정확도 향상
  • 구현 예시: @praha/byethrow-mcp 라이브러리 사용, TypeDoc + Rspack 구성
  • 소스 코드: