vue-i18n-mcp-server

uhjee/vue-i18n-mcp-server

3.1

If you are the rightful owner of vue-i18n-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

Vue I18n MCP Server is a tool designed to automate the conversion of Korean text in Vue.js files to i18n keys, fully compatible with GitHub Copilot Agent Mode.

πŸš€ Vue I18n MCP Server

GitHub Copilot Agent Mode와 μ™„μ „ ν˜Έν™˜λ˜λŠ” Vue.js λ‹€κ΅­μ–΄ μžλ™ν™” λ„κ΅¬μž…λ‹ˆλ‹€.

πŸ“– 이 도ꡬ가 ν•˜λŠ” 일

Vue νŒŒμΌμ—μ„œ ν•œκΈ€ ν…μŠ€νŠΈλ₯Ό μžλ™μœΌλ‘œ μ°Ύμ•„μ„œ i18n ν‚€λ‘œ λ³€ν™˜ν•΄μ£ΌλŠ” MCP μ„œλ²„μž…λ‹ˆλ‹€.

Before (λ³€ν™˜ μ „):

<template>
  <h1>μ‚¬μš©μž ν”„λ‘œν•„</h1>
  <button>μ €μž₯</button>
</template>

After (λ³€ν™˜ ν›„):

<template>
  <h1>{{ $localeMessage('WATCHALL.WORD.USER_PROFILE') }}</h1>
  <button>{{ $localeMessage('WATCHALL.WORD.SAVE') }}</button>
</template>

πŸš€ λΉ λ₯Έ μ‹œμž‘

1. μ„€μΉ˜ 및 λΉŒλ“œ

# μ˜μ‘΄μ„± μ„€μΉ˜
npm install

# TypeScript λΉŒλ“œ
npm run build

2. VS Code MCP μ„€μ • (μ΅œμ‹  방식)

방법 1: μ›Œν¬μŠ€νŽ˜μ΄μŠ€ μ„€μ • (ꢌμž₯)

Vue ν”„λ‘œμ νŠΈ λ£¨νŠΈμ— .vscode/mcp.json νŒŒμΌμ„ μƒμ„±ν•˜κ³  λ‹€μŒ λ‚΄μš©μ„ μΆ”κ°€ν•˜μ„Έμš”:

{
  // πŸ’‘ μž…λ ₯값듀은 μ„œλ²„ 첫 μ‹œμž‘ μ‹œ ν”„λ‘¬ν”„νŠΈλ˜λ©°, VS Code에 μ•ˆμ „ν•˜κ²Œ μ €μž₯λ©λ‹ˆλ‹€.
  "inputs": [
    {
      "type": "promptString",
      "id": "project-root",
      "description": "ν”„λ‘œμ νŠΈ 루트 경둜",
      "password": false
    },
    {
      "type": "promptString", 
      "id": "locales-path",
      "description": "λ²ˆμ—­ 파일 디렉토리 경둜 (ν”„λ‘œμ νŠΈ 루트 κΈ°μ€€ μƒλŒ€κ²½λ‘œ)",
      "password": false
    }
  ],
  "servers": {
    "vueI18nAutomation": {
      "type": "stdio",
      "command": "node",
      "args": [
        "/μ ˆλŒ€κ²½λ‘œ/vue-i18n-mcp-server/dist/src/index.js"
      ],
      "env": {
        "PROJECT_ROOT": "${input:project-root}",
        "LOCALES_PATH": "${input:locales-path}",
        "I18N_FUNCTION_TYPE": "VUE_I18N_WATCHALL"
      }
    }
  }
}

μ€‘μš”: /μ ˆλŒ€κ²½λ‘œ/vue-i18n-mcp-server/dist/src/index.jsλ₯Ό μ‹€μ œ 경둜둜 λ³€κ²½ν•˜μ„Έμš”.

방법 2: μ‚¬μš©μž μ„€μ •

VS Code μ„€μ •(settings.json)에 μΆ”κ°€:

{
  "mcp": {
    "servers": {
      "vueI18nAutomation": {
        "type": "stdio",
        "command": "node",
        "args": ["/μ ˆλŒ€κ²½λ‘œ/vue-i18n-mcp-server/dist/src/index.js"],
        "env": {
          "PROJECT_ROOT": "/your/project/path",
          "LOCALES_PATH": "src/locales",
          "I18N_FUNCTION_TYPE": "VUE_I18N_WATCHALL"
        }
      }
    }
  }
}

3. VS Codeμ—μ„œ MCP ν™œμ„±ν™”

  1. MCP κΈ°λŠ₯ ν™œμ„±ν™”: VS Code μ„€μ •μ—μ„œ chat.mcp.enabledλ₯Ό true둜 μ„€μ •
  2. μ„œλ²„ μ‹œμž‘: .vscode/mcp.json νŒŒμΌμ—μ„œ Start λ²„νŠΌ 클릭
  3. μ„œλ²„ μƒνƒœ 확인: Command Paletteμ—μ„œ MCP: List Servers μ‹€ν–‰

4. Copilot Chatμ—μ„œ μ‚¬μš©

  1. Copilot Chat μ—΄κΈ°: Ctrl+Alt+I (Windows/Linux) λ˜λŠ” βŒƒβŒ˜I (Mac)
  2. Agent λͺ¨λ“œ 선택: μ±„νŒ… λ°•μŠ€μ—μ„œ Agent 선택
  3. 도ꡬ 확인: Tools λ²„νŠΌμ„ ν΄λ¦­ν•˜μ—¬ Vue i18n 도ꡬ가 ν™œμ„±ν™”λ˜μ–΄ μžˆλŠ”μ§€ 확인
  4. μ‚¬μš© μ˜ˆμ‹œ:
Vue νŒŒμΌμ—μ„œ ν•œκΈ€ ν…μŠ€νŠΈλ₯Ό μ°Ύμ•„μ„œ i18n으둜 λ³€ν™˜ν•΄μ€˜

Windows μ‚¬μš©μž μ£Όμ˜μ‚¬ν•­:

  • PowerShell λ˜λŠ” Command Promptμ—μ„œ μ‹€ν–‰ν•˜μ„Έμš”
  • κ²½λ‘œμ— ν•œκΈ€μ΄ ν¬ν•¨λœ 경우 λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆμœΌλ‹ˆ 영문 경둜λ₯Ό μ‚¬μš©ν•˜μ„Έμš”
  • Git Bash μ‚¬μš© μ‹œ 경둜 κ΅¬λΆ„μž λ¬Έμ œκ°€ μžˆμ„ 수 μžˆμœΌλ‹ˆ PowerShell μ‚¬μš©μ„ ꢌμž₯ν•©λ‹ˆλ‹€

🎯 μ‹€μ œ μ‚¬μš© μ˜ˆμ‹œ

μž…λ ₯ (Vue 파일)

<template>
  <div>
    <h1>둜그인</h1>
    <input placeholder="아이디" />
    <button>λΉ„λ°€λ²ˆν˜Έ μ°ΎκΈ°</button>
  </div>
</template>

좜λ ₯ (Copilot 뢄석 κ²°κ³Ό)

πŸ“Š 뢄석 κ²°κ³Ό
- 발견된 ν•œκΈ€: 3개
- 맀칭된 λ²ˆμ—­: 3개 (100%)

βœ… 맀칭된 λ²ˆμ—­:
1. "둜그인" β†’ WATCHALL.WORD.LOGIN
2. "아이디" β†’ WATCHALL.WORD.ID  
3. "λΉ„λ°€λ²ˆν˜Έ μ°ΎκΈ°" β†’ [WATCHALL.WORD.PASSWORD, WATCHALL.WORD.FIND]

πŸ“ λ³€ν™˜ μ˜ˆμ‹œ:
- {{ $localeMessage('WATCHALL.WORD.LOGIN') }}
- {{ $localeMessage('WATCHALL.WORD.ID') }}
- {{ $localeMessage(['WATCHALL.WORD.PASSWORD', 'WATCHALL.WORD.FIND']) }}

πŸ“ ν•„μˆ˜ 파일 ꡬ쑰

MCP μ„œλ²„κ°€ μž‘λ™ν•˜λ €λ©΄ Vue ν”„λ‘œμ νŠΈμ— μ–Έμ–΄ 파일이 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€:

your-vue-project/
β”œβ”€β”€ src/
β”‚   └── locales/          πŸ‘ˆ LOCALES_PATHμ—μ„œ μ§€μ •ν•œ 폴더
β”‚       β”œβ”€β”€ ko.js         πŸ‘ˆ ν•œκΈ€ λ²ˆμ—­ 파일
β”‚       └── en.js         πŸ‘ˆ 영문 λ²ˆμ—­ 파일
└── .vscode/
    └── mcp.json          πŸ‘ˆ MCP μ„€μ • 파일 (μƒˆλ‘œμš΄ 방식)

ko.js μ˜ˆμ‹œ:

export default {
  WATCHALL: {
    WORD: {
      LOGIN: '둜그인',
      ID: '아이디',
      PASSWORD: 'λΉ„λ°€λ²ˆν˜Έ',
      FIND: 'μ°ΎκΈ°'
    }
  }
};

en.js μ˜ˆμ‹œ:

export default {
  WATCHALL: {
    WORD: {
      LOGIN: 'Login',
      ID: 'ID',
      PASSWORD: 'Password',
      FIND: 'Find'
    }
  }
};

βš™οΈ κ³ κΈ‰ μ„€μ •

i18n ν•¨μˆ˜ μ»€μŠ€ν„°λ§ˆμ΄μ§•

I18N_FUNCTION_TYPE ν™˜κ²½λ³€μˆ˜λ‘œ μ‚¬μš©ν•  ν•¨μˆ˜λ₯Ό λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

μ„€μ •κ°’TemplateScriptJavaScript
VUE_I18N_WATCHALL$localeMessagethis.$localeMessagei18n.localeMessage
DEFAULT$tthis.$ti18n.t
VUE_I18N_COMPOSABLEtti18n.global.t

μž…λ ₯ λ³€μˆ˜ ν™œμš©

μ΅œμ‹  MCP μ„€μ •μ—μ„œλŠ” inputs μ„Ήμ…˜μ„ 톡해 μ•ˆμ „ν•˜κ²Œ 섀정값을 관리할 수 μžˆμŠ΅λ‹ˆλ‹€:

  • ν”„λ‘œμ νŠΈ 루트: μ„œλ²„ 첫 μ‹œμž‘ μ‹œ ν”„λ‘¬ν”„νŠΈλ‘œ μž…λ ₯λ°›μ•„ VS Code에 μ•ˆμ „ν•˜κ²Œ μ €μž₯
  • λ²ˆμ—­ 파일 경둜: ν”„λ‘œμ νŠΈλ³„λ‘œ λ‹€λ₯Έ 경둜 μ„€μ • κ°€λŠ₯
  • λ³΄μ•ˆ: λ―Όκ°ν•œ μ •λ³΄λŠ” "password": true μ˜΅μ…˜μœΌλ‘œ μˆ¨κΉ€ 처리 κ°€λŠ₯

μžλ™ 탐지 κΈ°λŠ₯

MCP μ„œλ²„λŠ” λ‹€μŒκ³Ό 같은 μžλ™ 탐지 κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€:

  • Claude Desktop μ„€μ • μžλ™ 발견: chat.mcp.discovery.enabled μ„€μ •μœΌλ‘œ κΈ°μ‘΄ Claude μ„€μ • μž¬μ‚¬μš©
  • μ›Œν¬μŠ€νŽ˜μ΄μŠ€ 폴더 μžλ™ 전달: VS Codeκ°€ ν˜„μž¬ μ›Œν¬μŠ€νŽ˜μ΄μŠ€ 정보λ₯Ό μ„œλ²„μ— μžλ™ 전달
  • 파일 μˆ˜μ •μ‹œκ°„ 기반 캐싱: λ²ˆμ—­ 파일이 λ³€κ²½λœ κ²½μš°μ—λ§Œ λ‹€μ‹œ λ‘œλ“œ

πŸ§ͺ ν…ŒμŠ€νŠΈ

πŸ“ ν…ŒμŠ€νŠΈ ꡬ쑰

🎯 핡심 ν…ŒμŠ€νŠΈ
  • test-namespace-fix.js - ν‚€ λ„€μž„μŠ€νŽ˜μ΄μŠ€ μžλ™ μ •κ·œν™” ν…ŒμŠ€νŠΈ
    • AIκ°€ 잘λͺ»λœ 접두사 생성 μ‹œ μžλ™ μˆ˜μ • 확인
    • LOGIN.SIGNUP β†’ WATCHALL.WORD.SIGNUP λ³€ν™˜
πŸ“‹ μ’…ν•© ν…ŒμŠ€νŠΈ
  • tests/test-comprehensive-i18n.js - 전체 μ‹œμŠ€ν…œ 톡합 ν…ŒμŠ€νŠΈ
    • λŒ€μš©λŸ‰ μ‹€μ œ λ²ˆμ—­ 파일 ν…ŒμŠ€νŠΈ
    • 91.7% λ§€μΉ­ 성곡λ₯  달성
πŸ“‚ ν…ŒμŠ€νŠΈ 데이터
  • tests/sample-files/ - ν…ŒμŠ€νŠΈμš© λ²ˆμ—­ 파일
    • ko.js - ν•œκ΅­μ–΄ λ²ˆμ—­ 데이터
    • en.js - μ˜μ–΄ λ²ˆμ—­ 데이터

πŸš€ ν…ŒμŠ€νŠΈ μ‹€ν–‰

# 핡심 ν…ŒμŠ€νŠΈ μ‹€ν–‰
node test-namespace-fix.js

# μ’…ν•© ν…ŒμŠ€νŠΈ μ‹€ν–‰  
node tests/test-comprehensive-i18n.js

# ν”„λ‘œμ νŠΈ λΉŒλ“œ (ν…ŒμŠ€νŠΈ μ „ ν•„μˆ˜)
npm run build

βœ… ν…ŒμŠ€νŠΈ μ„±κ³Ό

  • λ¬Έμž₯ 필터링: 100% 정확도
  • ν‚€ λ„€μž„μŠ€νŽ˜μ΄μŠ€ μ •κ·œν™”: 100% 성곡λ₯ 
  • 파일 μ—…λ°μ΄νŠΈ: WATCHALL.WORD μ„Ήμ…˜ μ •ν™•ν•œ μ‚½μž…
  • λ²ˆμ—­ λ§€μΉ­: 91.7% 성곡λ₯  (λŒ€μš©λŸ‰ μ‹€μ œ 데이터)

πŸ›  개발

πŸ“ λΌμ΄μ„ μŠ€

MIT License

🀝 κΈ°μ—¬

이슈 λ¦¬ν¬νŠΈλ‚˜ ν’€ λ¦¬ν€˜μŠ€νŠΈλ₯Ό ν™˜μ˜ν•©λ‹ˆλ‹€!