{"_id":"@camscanner/mcp-language-server","_rev":"8-173b44a1125bf93d6d124e64de8340bf","name":"@camscanner/mcp-language-server","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@camscanner/mcp-language-server","version":"1.0.0","keywords":[],"author":"","license":"ISC","_id":"@camscanner/mcp-language-server@1.0.0","maintainers":[{"name":"camscanner-share","email":"yujie_wu@intsig.net"}],"bin":{"mcp-language-server":"dist/index.js"},"dist":{"shasum":"1a380f482dce04d7fe4d04c71ae36573fe439d6f","tarball":"https://registry.npmjs.org/@camscanner/mcp-language-server/-/mcp-language-server-1.0.0.tgz","fileCount":27,"integrity":"sha512-TXCZI0NlNIYkLnKeasWd3T8lnitJgQDuliEMOYXPZf5+sitcXxmHLp++1cshX9/8jgmTqeYbjQ4ntXOru4/66g==","signatures":[{"sig":"MEUCIQDKpl3i7L7880jiLl1fHHhA6Fc3YmZtRnz/FQuK9MFcJQIgZS+1T37nUcEG+oOoIo9rbBAqwe9k2P/27M6esJRIjlA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":117758},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"e0d9fef2fb7aa56f17cd1d5d5abdca203c187918","scripts":{"test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest"},"_npmUser":{"name":"camscanner-share","email":"yujie_wu@intsig.net"},"_npmVersion":"10.9.4","description":"MCP Server for multi-language string management","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.3.6","playwright-core":"^1.59.1","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.4","typescript":"^5.3.0","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-language-server_1.0.0_1776071436902_0.45578163754190193","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@camscanner/mcp-language-server","version":"1.1.0","keywords":[],"author":"","license":"ISC","_id":"@camscanner/mcp-language-server@1.1.0","maintainers":[{"name":"camscanner-share","email":"yujie_wu@intsig.net"}],"bin":{"mcp-language-server":"dist/index.js"},"dist":{"shasum":"c1e67e63bd96772f8c772a6ec543df8b58df6370","tarball":"https://registry.npmjs.org/@camscanner/mcp-language-server/-/mcp-language-server-1.1.0.tgz","fileCount":27,"integrity":"sha512-WB+EGfHEC4YlR14TCNWYufYhX4HGCvZ/51MSoj/UDcUjkJk91YJdqVCAt5Uoiqxcv6fELaKXXueBTWCvWjzW4g==","signatures":[{"sig":"MEQCIEx7m+BfwrUJTgV01QCDFeCMpYdC77bIOtHcB2g85/2wAiA/mJiKU7hTwkdPZNnlJTeuHM1OZA+fnPK/Q9EttMaQCA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130234},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"9a5438b4f4168930d0578a65eacedb25f9292a2b","scripts":{"test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest"},"_npmUser":{"name":"camscanner-share","email":"yujie_wu@intsig.net"},"_npmVersion":"10.9.4","description":"MCP Server for multi-language string management","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.3.6","playwright-core":"^1.59.1","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.4","typescript":"^5.3.0","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-language-server_1.1.0_1776148745256_0.22075433779963993","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@camscanner/mcp-language-server","version":"1.2.0","keywords":[],"author":"","license":"ISC","_id":"@camscanner/mcp-language-server@1.2.0","maintainers":[{"name":"camscanner-share","email":"yujie_wu@intsig.net"}],"bin":{"mcp-language-server":"dist/index.js"},"dist":{"shasum":"fc8a6638e1ee613aaad87a26b58155826c964bd5","tarball":"https://registry.npmjs.org/@camscanner/mcp-language-server/-/mcp-language-server-1.2.0.tgz","fileCount":27,"integrity":"sha512-edk84W5X+neQgOlukf4q519JJczbeL1nmoQfXost4HroitjsnVgK3qvjDtLgZFJlE6j7bjU4eLBg74E/624bOw==","signatures":[{"sig":"MEYCIQCFIOrHXfg41+J3KFcdzOzKfB3KCX6/eEwUTpGX1kfmTgIhAPsKfwbacKcW/V/8ca2CfDMYtZCr3pSMiCeDctrNsuS6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":133220},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"9a5438b4f4168930d0578a65eacedb25f9292a2b","scripts":{"test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest"},"_npmUser":{"name":"camscanner-share","email":"yujie_wu@intsig.net"},"_npmVersion":"10.9.4","description":"MCP Server for multi-language string management","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.3.6","playwright-core":"^1.59.1","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.4","typescript":"^5.3.0","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-language-server_1.2.0_1776221742578_0.47334154776918225","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@camscanner/mcp-language-server","version":"1.2.1","keywords":[],"author":"","license":"ISC","_id":"@camscanner/mcp-language-server@1.2.1","maintainers":[{"name":"camscanner-share","email":"yujie_wu@intsig.net"}],"bin":{"mcp-language-server":"dist/index.js"},"dist":{"shasum":"15530cdf7c52e14702d3a1ec60735df26bd7b629","tarball":"https://registry.npmjs.org/@camscanner/mcp-language-server/-/mcp-language-server-1.2.1.tgz","fileCount":27,"integrity":"sha512-+F3ChorNmOZIQgEgouRdaKhGt2TQtiiwA5lnGO3fb8+imzM85GZ8nBRDeJL8n8R1/81JuwjtUzrF44Gxr4U+qw==","signatures":[{"sig":"MEQCIBrqr7bj3UFIyhfkhuBtHDHVEXDkerYqwhUOyFcQLaFXAiBQKEkdzLlXQY8CRI0q/COcGVAgYtMh5JKlrAGJGYPxLw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137661},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"47a84fd9558f836632b9d190119dae6522b63e86","scripts":{"test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest"},"_npmUser":{"name":"camscanner-share","email":"yujie_wu@intsig.net"},"_npmVersion":"10.9.4","description":"MCP Server for multi-language string management","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.3.6","playwright-core":"^1.59.1","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.4","typescript":"^5.3.0","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-language-server_1.2.1_1776335548747_0.9262621280197576","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@camscanner/mcp-language-server","version":"1.3.0","keywords":[],"author":"","license":"ISC","_id":"@camscanner/mcp-language-server@1.3.0","maintainers":[{"name":"camscanner-share","email":"yujie_wu@intsig.net"}],"bin":{"mcp-language-server":"dist/index.js"},"dist":{"shasum":"180c32f15c8e1da9223bf732e80577b9cbb2fe94","tarball":"https://registry.npmjs.org/@camscanner/mcp-language-server/-/mcp-language-server-1.3.0.tgz","fileCount":27,"integrity":"sha512-ysaj4zR4cYZYVxcMcKdHhVz2yVmJneXtPv8inBUS6OxhBNVaOb12wrI+lYEOd0+FdAqsrCe7m9xO/CkuGhxYFQ==","signatures":[{"sig":"MEQCID2Y4QFhOx646fIlW/pRy+clPHy+GLF1yIQOo9XPSqFgAiAcNqA5l2/S8LHEstPStSGGD6gr/SlEYrUlWLRRnNWA4g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":142401},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"47a84fd9558f836632b9d190119dae6522b63e86","scripts":{"test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest"},"_npmUser":{"name":"camscanner-share","email":"yujie_wu@intsig.net"},"_npmVersion":"10.9.4","description":"MCP Server for multi-language string management","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.3.6","playwright-core":"^1.59.1","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.4","typescript":"^5.3.0","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-language-server_1.3.0_1776571967165_0.23040455478926725","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@camscanner/mcp-language-server","version":"1.3.1","keywords":[],"author":"","license":"ISC","_id":"@camscanner/mcp-language-server@1.3.1","maintainers":[{"name":"camscanner-share","email":"yujie_wu@intsig.net"}],"bin":{"mcp-language-server":"dist/index.js"},"dist":{"shasum":"ddfe6773d7ac8a5301a1df5a586cc53684bd4475","tarball":"https://registry.npmjs.org/@camscanner/mcp-language-server/-/mcp-language-server-1.3.1.tgz","fileCount":27,"integrity":"sha512-EFFpSqkW1mT/mVRhTksNXz/Fjqh8E8OxKlMukRJwLzpUGz+oCNoOV1pUxh9e6Lv5PzsdTx6uY0ZijrV90ka5Ag==","signatures":[{"sig":"MEQCIDYXB0J2vTAqhUCRSQ/L+4ZIO5r6r+MUKQVSVw2gYORwAiBkYftlMyxf4msf4FxXxwtnZgha1MiCv8Xfxlfo2K9bxg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":142896},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"47a84fd9558f836632b9d190119dae6522b63e86","scripts":{"test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest"},"_npmUser":{"name":"camscanner-share","email":"yujie_wu@intsig.net"},"_npmVersion":"10.9.4","description":"MCP Server for multi-language string management","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.3.6","playwright-core":"^1.59.1","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.4","typescript":"^5.3.0","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-language-server_1.3.1_1776572527412_0.1947948644335722","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"@camscanner/mcp-language-server","version":"1.3.2","keywords":[],"author":"","license":"ISC","_id":"@camscanner/mcp-language-server@1.3.2","maintainers":[{"name":"camscanner-share","email":"yujie_wu@intsig.net"}],"bin":{"mcp-language-server":"dist/index.js"},"dist":{"shasum":"9dd635deb609d56dce3f9387f06d149a901030b9","tarball":"https://registry.npmjs.org/@camscanner/mcp-language-server/-/mcp-language-server-1.3.2.tgz","fileCount":27,"integrity":"sha512-UP2BzQDxBnSNjc09GzEQPE8KfQshMs9J6oPN4QnR8CHD6F/A33US39Gw8O4UR4xjZ5PJh/hFKERy0W5iiSpgMg==","signatures":[{"sig":"MEUCIQCZXsr1DJvLn38b9W7Rrk98RhPG6+ZWAE8yoVJwRaMK5QIgeTt/+Fz8gI3ediydKqBQtl9CF8mE/8OpNokKN7xlJHU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143010},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"47a84fd9558f836632b9d190119dae6522b63e86","scripts":{"test":"vitest run","build":"tsc","start":"node dist/index.js","test:watch":"vitest"},"_npmUser":{"name":"camscanner-share","email":"yujie_wu@intsig.net"},"_npmVersion":"10.9.4","description":"MCP Server for multi-language string management","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.3.6","playwright-core":"^1.59.1","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.4","typescript":"^5.3.0","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-language-server_1.3.2_1776576763988_0.996954928405384","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@camscanner/mcp-language-server","version":"1.0.1","description":"MCP Server for multi-language string management","main":"dist/index.js","bin":{"mcp-language-server":"dist/index.js"},"scripts":{"build":"tsc","start":"node dist/index.js","test":"vitest run","test:watch":"vitest"},"keywords":[],"author":"","license":"ISC","dependencies":{"@modelcontextprotocol/sdk":"^1.12.1","playwright-core":"^1.59.1","zod":"^4.3.6"},"devDependencies":{"@types/node":"^20.11.0","typescript":"^5.3.0","vitest":"^4.1.4"},"_id":"@camscanner/mcp-language-server@1.0.1","gitHead":"3b3a0d7cc0abfa943ec35201ae4d971c928aecec","types":"./dist/index.d.ts","_nodeVersion":"22.21.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-hLntPqiZkjMJ/+rH54xiLX9+7nK9fC+u8PSrFfcW5fvu81UT8zcmUQkBfnafzgLaBl73QE80zO5tPWE3IBlj5Q==","shasum":"df79f3c27cc527dfc4e6a3c989e21bd7bc1e9f48","tarball":"https://registry.npmjs.org/@camscanner/mcp-language-server/-/mcp-language-server-1.0.1.tgz","fileCount":27,"unpackedSize":129826,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDr5Kwb/b7tL92seCOWNFaySLlPYRNkWavUzJ21bg2W+QIhAN2KmJGYATz8d2SpIjoxp7izLLGPfw6dp0uuaMvEsule"}]},"_npmUser":{"name":"camscanner-share","email":"yujie_wu@intsig.net"},"directories":{},"maintainers":[{"name":"camscanner-share","email":"yujie_wu@intsig.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-language-server_1.0.1_1776665969697_0.017237899213693897"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-13T09:10:36.777Z","modified":"2026-04-20T06:19:29.953Z","1.0.0":"2026-04-13T09:10:37.061Z","1.1.0":"2026-04-14T06:39:05.403Z","1.2.0":"2026-04-15T02:55:42.712Z","1.2.1":"2026-04-16T10:32:28.891Z","1.3.0":"2026-04-19T04:12:47.306Z","1.3.1":"2026-04-19T04:22:07.560Z","1.3.2":"2026-04-19T05:32:44.133Z","1.0.1":"2026-04-20T06:19:29.838Z"},"license":"ISC","keywords":[],"description":"MCP Server for multi-language string management","maintainers":[{"name":"camscanner-share","email":"yujie_wu@intsig.net"}],"readme":"# CamScanner i18n MCP Language Server\n\n用于 Claude Code 的多语言字符串管理 MCP Server，支持从 CamScanner 运营平台搜索、导出、写入多语言字符串。\n\n## 功能\n\n| 工具 | 说明 |\n|------|------|\n| `authenticate` | 浏览器登录运营平台 |\n| `logout` | 退出登录，清除凭证 |\n| `search-string` | 按关键词搜索多语言字符串 |\n| `export-string` | 导出为 cs-i18n 兼容的 locale JSON |\n| `write-locales` | 将字符串直接写入项目 locales 目录 |\n| `get-version-list` | 获取产品版本列表 |\n\n## 安装\n\n```bash\n# 1. 添加市场（仅首次）\nclaude plugin marketplace add tianmuji/camscanner-plugins\n\n# 2. 安装插件\nclaude plugin install i18n@camscanner-plugins\n```\n\n安装后重启 Claude Code 即可使用。插件会自动注册 MCP Server 和 `/i18n` Skill。\n\n### 前提条件\n\n- Node.js >= 18\n- Playwright Chromium（用于浏览器登录）：`npx playwright install chromium`\n\n## 认证\n\n首次使用时调用 `authenticate` 工具，会打开浏览器进行 SSO 登录（扫码验证 + 密码）。\n\n- 浏览器数据持久化在 `~/.language-mcp/browser-data/`，保存的密码下次自动填充\n- 认证信息保存在 `~/.language-mcp/credentials.json`，有效期 24 小时\n\n## 开发者指南\n\n### 发布新版本\n\n```bash\n# 1. 修改代码并构建\nnpm run build\n\n# 2. 更新版本号并发布到 npm\nnpm version patch   # bug fix: 1.0.0 → 1.0.1\nnpm version minor   # 新功能: 1.0.0 → 1.1.0\nnpm version major   # 破坏性变更: 1.0.0 → 2.0.0\n\nnpm publish --registry https://registry.npmjs.org/ --access public\n\n# 3. 推送 tag 到远端\ngit push && git push --tags\n```\n\n用户下次启动 Claude Code 时，`npx -y @camscanner/mcp-language-server@latest` 会自动拉取新版本。\n\n## 常用产品 ID\n\n| ID | 产品 |\n|----|------|\n| 1 | CamCard |\n| 2 | CamScanner |\n| 44 | CamScanner Lite |\n| 47 | CS PDF |\n| 53 | CS Harmony |\n","readmeFilename":"README.md"}