{"_id":"@alexiatv666/td-trans-mcp","_rev":"2-ac78598b2a318f8f0e572d7ee017ece1","name":"@alexiatv666/td-trans-mcp","dist-tags":{"latest":"1.3.0"},"versions":{"1.2.0":{"name":"@alexiatv666/td-trans-mcp","version":"1.2.0","keywords":["mcp","thinkingdata","localization","glossary","translation"],"author":{"name":"ThinkingData Korea"},"license":"MIT","_id":"@alexiatv666/td-trans-mcp@1.2.0","maintainers":[{"name":"alexiatv666","email":"alexiatv666@gmail.com"}],"bin":{"td-trans-mcp":"bin/td-trans-mcp.js"},"dist":{"shasum":"4659b1da81dbaba190457a66c82f3831b7e7ceaf","tarball":"https://registry.npmjs.org/@alexiatv666/td-trans-mcp/-/td-trans-mcp-1.2.0.tgz","fileCount":14,"integrity":"sha512-RgeRiDoExMfEbpue35yKp/99LCddydJK7/0ecPwyiwJ9nYZRl2tC1SIZSjS3F3h/Mn2D/1IVRCiJq+9JlcHQrw==","signatures":[{"sig":"MEUCIEvVZ6stQYoKz9bC7b/tj4c2p3Yj9LTdtBVZbOQnhDS+AiEAwBqenm0iWIMqEvXGja74fFhMsWny6usAUQ+f07Hz9/o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30002},"main":"./src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"5281fe1a5242c50f1e5e5efe32cd6cbef5452775","scripts":{"test":"node --test \"test/*.test.js\"","start":"node bin/td-trans-mcp.js","start:sse":"node src/sse.js"},"_npmUser":{"name":"alexiatv666","email":"alexiatv666@gmail.com"},"_npmVersion":"11.8.0","description":"zh-CN ↔ ko-KR localization glossary MCP — Feishu Sheet 백엔드(언어별 분리 시트 key-join). lookup/search/list/add_term + glossary 프롬프트.","directories":{},"_nodeVersion":"25.5.0","dependencies":{"@modelcontextprotocol/sdk":"^1.25.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/td-trans-mcp_1.2.0_1780373685010_0.1446352689848922","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@alexiatv666/td-trans-mcp","version":"1.3.0","description":"zh-CN ↔ ko-KR/en-US/ja-JP localization glossary MCP — Feishu Sheet 백엔드(언어별 분리 시트 key-join). lookup/search/list/add_term + glossary 프롬프트.","type":"module","bin":{"td-trans-mcp":"bin/td-trans-mcp.js"},"publishConfig":{"access":"public"},"main":"./src/index.js","keywords":["mcp","thinkingdata","localization","glossary","translation"],"author":{"name":"ThinkingData Korea"},"license":"MIT","dependencies":{"@modelcontextprotocol/sdk":"^1.25.1"},"scripts":{"start":"node bin/td-trans-mcp.js","start:sse":"node src/sse.js","test":"node --test \"test/*.test.js\""},"engines":{"node":">=18.0.0"},"gitHead":"1353ab249aeb3cfcd551214968314f8b5c92cee6","_id":"@alexiatv666/td-trans-mcp@1.3.0","_nodeVersion":"25.5.0","_npmVersion":"11.8.0","dist":{"integrity":"sha512-3EmJyHwJtMEnjaCt2CN9JX1BsEV9Y6xEqb66FT6zChZ9TgEcCJe0eGeTad/dI9GQPVYU878ztCiJtjEfnjvCUQ==","shasum":"0ea52cfddc3297a1b7db023656a80dac914ab5a2","tarball":"https://registry.npmjs.org/@alexiatv666/td-trans-mcp/-/td-trans-mcp-1.3.0.tgz","fileCount":15,"unpackedSize":37911,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDvDVT1gL3yVTv4hn4I+tv6/M+xVh/PufjVvHTPfRrGTAIhANGpVQz+xxIwobyIOUuCX3AfOJFvq5m/26Rfjb0gZiho"}]},"_npmUser":{"name":"alexiatv666","email":"alexiatv666@gmail.com"},"directories":{},"maintainers":[{"name":"alexiatv666","email":"alexiatv666@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/td-trans-mcp_1.3.0_1781364728593_0.8572311817261937"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-02T04:14:44.855Z","modified":"2026-06-13T15:32:08.862Z","1.2.0":"2026-06-02T04:14:45.164Z","1.3.0":"2026-06-13T15:32:08.750Z"},"author":{"name":"ThinkingData Korea"},"license":"MIT","keywords":["mcp","thinkingdata","localization","glossary","translation"],"description":"zh-CN ↔ ko-KR/en-US/ja-JP localization glossary MCP — Feishu Sheet 백엔드(언어별 분리 시트 key-join). lookup/search/list/add_term + glossary 프롬프트.","maintainers":[{"name":"alexiatv666","email":"alexiatv666@gmail.com"}],"readme":"# td-trans-mcp\n\nThinkingData 현지화(localization) 용어집 MCP 서버 — **zh-CN ↔ ko-KR / en-US / ja-JP** 용어 조회/검색/추가.\n백엔드는 Feishu Sheet이며, 번역 작업 시 용어 일관성을 보장한다.\n\n## 데이터 구조 (중요)\n\n용어집은 **언어별로 분리된 시트**로 저장된다. 하나의 스프레드시트 안에 시트 4개:\n\n| 시트 title | 내용 |\n|---|---|\n| `zh` | 중국어 용어 (필수) |\n| `ko` | 한국어 용어 (필수) |\n| `en` | 영어 (선택 — 있으면 join/upsert, 없으면 skip) |\n| `ja` | 일본어 (선택 — 있으면 join/upsert, 없으면 skip) |\n\n각 시트 헤더(컬럼 위치 무관, 이름으로 인식):\n\n```\nkey | term | context | definition | related\n```\n\n- `key` — 언어 공통 식별자(영문 슬러그, 예: `event-analysis`). **시트 간 join 기준.**\n- `term` — 해당 언어의 용어 표기\n- `context` — 짧은 사용 맥락\n- `definition` — 긴 정의/설명\n\n용어집은 **`zh`/`ko`/`en`/`ja` 시트를 `key`로 join**하여 만든다.\n`zh_CN` = zh 시트의 term, `ko_KR` = ko, `en_US` = en, `ja_JP` = ja 시트의 term.\n맥락/정의는 번역 기준 언어인 ko 시트를 우선한다(없으면 zh 폴백). en/ja 시트가 없거나 매칭이 없으면 해당 언어만 빈 값.\n\n> `added_by` / `added_at` 은 시트에 해당 컬럼이 있을 때만 기록된다(없으면 무시).\n\n## 환경변수\n\n| 변수 | 필수 | 설명 |\n|---|---|---|\n| `FEISHU_APP_ID` | ✅ | Feishu 앱 ID |\n| `FEISHU_APP_SECRET` | ✅ | Feishu 앱 시크릿 (셸 env 경유, 하드코딩 금지) |\n| `FEISHU_SHEET_TOKEN` | ✅ | 스프레드시트 token (URL의 `/sheets/{TOKEN}` 부분) |\n\n> `FEISHU_SHEET_ID` 는 **불필요** — 시트는 title(`zh`/`ko`/`en`/`ja`)로 자동 발견한다.\n\n## 도구\n\n| 도구 | 설명 |\n|---|---|\n| `lookup_term` | 중국어 용어(zh_CN)로 번역 단건 조회 (ko/en/ja 함께 표시) |\n| `search_terms` | 키워드로 검색(zh_CN/ko_KR/en_US/ja_JP/맥락 부분 일치) |\n| `list_terms` | 전체 용어 목록 (4개 언어 컬럼) |\n| `add_term` | 용어 추가/수정 — `key` 기준으로 zh·ko·en·ja 시트에 동시 upsert. 표기(`ko_KR`/`en_US`/`ja_JP`)와 언어별 정의(`notes_zh`/`notes_ko`/`notes_en`/`notes_ja`)는 호출 어시스턴트가 zh_CN 기반으로 채움. `context`/`related` 는 언어 무관 공통값으로 4개 시트에 동일 기록 |\n\n### 프롬프트\n\n- `glossary` — 전체 용어집을 컨텍스트에 주입(번역 세션 시작 시 1회 권장)\n\n## 테스트\n\n```bash\nnpm test                    # 순수 변환 로직 단위 테스트\n# 쓰기 e2e (실제 Feishu 시트 — 테스트 행 추가 후 자동 삭제):\nFEISHU_APP_ID=.. FEISHU_SHEET_TOKEN=.. node test/e2e-write.mjs\n```\n\n## 외부 사용자용 설치 (npx)\n\n이 패키지는 **Feishu Sheet를 백엔드로 쓰는 범용 zh↔ko/en/ja 용어집 도구**입니다.\n직접 쓰려면 **본인 소유의 Feishu 앱·시트**와 시크릿이 필요합니다(내부 용어집 데이터는 포함되지 않음).\n\nClaude Code MCP 설정(`.mcp.json` 또는 `claude mcp add`) 예시:\n\n```json\n{\n  \"mcpServers\": {\n    \"trans\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@alexiatv666/td-trans-mcp\"],\n      \"env\": {\n        \"FEISHU_APP_ID\": \"cli_...\",\n        \"FEISHU_APP_SECRET\": \"${FEISHU_APP_SECRET}\",\n        \"FEISHU_SHEET_TOKEN\": \"...\"\n      }\n    }\n  }\n}\n```\n\n> 본인 Feishu 스프레드시트에 title이 `zh`/`ko`(필수) 및 `en`/`ja`(선택)인 시트를 만들고, 각 시트 헤더를\n> `key, term, context, definition, related` 로 구성하면 됩니다.\n\n> ThinkingData 내부 용어집(554개)을 바로 쓰려면 npx 대신 SSE 커넥터를 사용하세요:\n> `https://mcp.apps.thinkingai.io/api/trans-mcp/sse`\n\n## 실행 (로컬 개발)\n\n```bash\nnpm start                   # stdio MCP 서버\n```\n","readmeFilename":"README.md"}