{"_id":"@bearst/lucky-mcp-server","_rev":"4-7002f4c0e67a193bc47db6e0f489084f","name":"@bearst/lucky-mcp-server","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.0":{"name":"@bearst/lucky-mcp-server","version":"0.1.0","keywords":["mcp","model-context-protocol","lucky","reverse-proxy","opentoken"],"author":{"name":"BearstOzawa"},"license":"MIT","_id":"@bearst/lucky-mcp-server@0.1.0","maintainers":[{"name":"bearst","email":"bearstozawa@gmail.com"}],"homepage":"https://github.com/BearstOzawa/lucky-mcp-server#readme","bugs":{"url":"https://github.com/BearstOzawa/lucky-mcp-server/issues"},"bin":{"lucky-mcp-server":"dist/cli.js"},"dist":{"shasum":"5eea237fd9e44374d07cc39ad0b17040d4aa100b","tarball":"https://registry.npmjs.org/@bearst/lucky-mcp-server/-/lucky-mcp-server-0.1.0.tgz","fileCount":102,"integrity":"sha512-I742eH1jN3O2OWgHBnDDghcffRb7usaogXXWOA7iSkllpdM/4xXzERLExIOsprNVzZ+KBKO3x15M2EhRtVy9+g==","signatures":[{"sig":"MEYCIQDzg0OzAikTEFwWuxPIPg/o+I+ZZxZtuHTTvB/wdztp+gIhAMX1L9sea2+zA5mJep8DjmvSH/8Giocb5S9Du8eQz7ny","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":230963},"type":"module","engines":{"node":">=20.0.0"},"scripts":{"dev":"tsx src/cli.ts","lint":"eslint .","test":"vitest run","build":"tsc","start":"node dist/cli.js","prepack":"npm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bearst","email":"bearstozawa@gmail.com"},"repository":{"url":"git+https://github.com/BearstOzawa/lucky-mcp-server.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server for Lucky reverse proxy, TLS, port forwarding, and related modules.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.25.67","undici":"^7.16.0","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","eslint":"^9.29.0","vitest":"^3.2.4","@eslint/js":"^9.29.0","typescript":"^5.8.3","@types/node":"^24.0.3","typescript-eslint":"^8.34.1"},"_npmOperationalInternal":{"tmp":"tmp/lucky-mcp-server_0.1.0_1788243524322_0.2556898070588489","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@bearst/lucky-mcp-server","version":"0.1.1","keywords":["mcp","model-context-protocol","lucky","reverse-proxy","opentoken"],"author":{"name":"BearstOzawa"},"license":"MIT","_id":"@bearst/lucky-mcp-server@0.1.1","maintainers":[{"name":"bearst","email":"bearstozawa@gmail.com"}],"homepage":"https://github.com/BearstOzawa/lucky-mcp-server#readme","bugs":{"url":"https://github.com/BearstOzawa/lucky-mcp-server/issues"},"bin":{"lucky-mcp-server":"dist/cli.js"},"dist":{"shasum":"5d56fe4fed58b9df5c8b68c29bde3fe9f6f5c44c","tarball":"https://registry.npmjs.org/@bearst/lucky-mcp-server/-/lucky-mcp-server-0.1.1.tgz","fileCount":102,"integrity":"sha512-Bq+KPgRQc7aPy6i3O2cyYAjeUSQBU5K7IyyBRyOUIkCfovSkdFEPdHZlqt0TL7TjIBrpUEyKAl36EiKsA9UX+g==","signatures":[{"sig":"MEUCIDFGDYPlgIZWMGlGxIH73lOhQTczEkbLcE5mzUOl0OwkAiEAiuDo1yMzPJIroPXrDTXy1tYgN6AVejG4R+1ukj8NJOo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":236494},"type":"module","engines":{"node":">=20.0.0"},"scripts":{"dev":"tsx src/cli.ts","lint":"eslint .","test":"vitest run","build":"tsc","start":"node dist/cli.js","prepack":"npm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bearst","email":"bearstozawa@gmail.com"},"repository":{"url":"git+https://github.com/BearstOzawa/lucky-mcp-server.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server for Lucky reverse proxy, TLS, port forwarding, and related modules.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.25.67","undici":"^7.16.0","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","eslint":"^9.29.0","vitest":"^3.2.4","@eslint/js":"^9.29.0","typescript":"^5.8.3","@types/node":"^24.0.3","typescript-eslint":"^8.34.1"},"_npmOperationalInternal":{"tmp":"tmp/lucky-mcp-server_0.1.1_1788244705417_0.628370233542378","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@bearst/lucky-mcp-server","version":"0.1.2","keywords":["mcp","model-context-protocol","lucky","reverse-proxy","opentoken"],"author":{"name":"BearstOzawa"},"license":"MIT","_id":"@bearst/lucky-mcp-server@0.1.2","maintainers":[{"name":"bearst","email":"bearstozawa@gmail.com"}],"homepage":"https://github.com/BearstOzawa/lucky-mcp-server#readme","bugs":{"url":"https://github.com/BearstOzawa/lucky-mcp-server/issues"},"bin":{"lucky-mcp-server":"dist/cli.js"},"dist":{"shasum":"209f19405fe6e85eaa029ee7c132afd61c1c2903","tarball":"https://registry.npmjs.org/@bearst/lucky-mcp-server/-/lucky-mcp-server-0.1.2.tgz","fileCount":102,"integrity":"sha512-eFVA8eVVIF7BJ2CIQQUf8znZlHXczvys6/M8dAzXe+aZcB8nYfeVpgVZ0Nl+m4LDHBdU7KYq5PUyYJSCIeyoPQ==","signatures":[{"sig":"MEUCIQCglIMc1ynKvYXWmSWSEIjG4NN8URKMZbnpXlqlP6SwOgIgfu6mdpY7WR6rEBbwONnh8FBK1Zh/7WY5yLAd80v74H8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":246655},"type":"module","engines":{"node":">=20.0.0"},"scripts":{"dev":"tsx src/cli.ts","lint":"eslint .","test":"vitest run","build":"tsc","start":"node dist/cli.js","prepack":"npm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bearst","email":"bearstozawa@gmail.com"},"repository":{"url":"git+https://github.com/BearstOzawa/lucky-mcp-server.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server for Lucky reverse proxy, TLS, port forwarding, and related modules.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.25.67","undici":"^7.16.0","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.5","eslint":"^9.29.0","vitest":"^3.2.4","@eslint/js":"^9.29.0","typescript":"^5.8.3","@types/node":"^24.0.3","typescript-eslint":"^8.34.1"},"_npmOperationalInternal":{"tmp":"tmp/lucky-mcp-server_0.1.2_1788247633235_0.5658182702575041","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@bearst/lucky-mcp-server","version":"0.1.3","description":"MCP server for Lucky reverse proxy, TLS, port forwarding, and related modules.","type":"module","homepage":"https://github.com/BearstOzawa/lucky-mcp-server#readme","repository":{"type":"git","url":"git+https://github.com/BearstOzawa/lucky-mcp-server.git"},"bugs":{"url":"https://github.com/BearstOzawa/lucky-mcp-server/issues"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"bin":{"lucky-mcp-server":"dist/cli.js"},"scripts":{"build":"tsc","dev":"tsx src/cli.ts","start":"node dist/cli.js","typecheck":"tsc --noEmit","test":"vitest run","lint":"eslint .","prepack":"npm run build"},"keywords":["mcp","model-context-protocol","lucky","reverse-proxy","opentoken"],"author":{"name":"BearstOzawa"},"license":"MIT","engines":{"node":">=20.0.0"},"dependencies":{"@modelcontextprotocol/sdk":"^1.30.0","undici":"^7.16.0","zod":"^3.25.67"},"devDependencies":{"@eslint/js":"^9.29.0","@types/node":"^24.0.3","eslint":"^9.29.0","tsx":"^4.20.5","typescript":"^5.8.3","typescript-eslint":"^8.34.1","vitest":"^3.2.4"},"_id":"@bearst/lucky-mcp-server@0.1.3","gitHead":"5fd500bfd73335e7f6ac7b912c7982429498a83e","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-9+WP7Jek2eqIVwg/oM9Mo/zjGrnBybvwwS48896/vjEClB41E2DAgjvEiCGtofCZzTmZcYa9h+yu9aOSYvsmHQ==","shasum":"93e7330daedea6106387e94edd1f039991571065","tarball":"https://registry.npmjs.org/@bearst/lucky-mcp-server/-/lucky-mcp-server-0.1.3.tgz","fileCount":102,"unpackedSize":247252,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@bearst%2flucky-mcp-server@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCQislaFsYtiW1RLog9BICN5miAhmKnx/xg/GR6C4Y1DQIgDIwKn+4VXMs9M1i5PE73gdBbcNl9DzorwrBsVZqq858="}]},"_npmUser":{"name":"bearst","email":"bearstozawa@gmail.com"},"directories":{},"maintainers":[{"name":"bearst","email":"bearstozawa@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/lucky-mcp-server_0.1.3_1788250860747_0.5784689746633409"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-01T06:18:44.134Z","modified":"2026-09-01T08:21:01.337Z","0.1.0":"2026-09-01T06:18:44.464Z","0.1.1":"2026-09-01T06:38:25.540Z","0.1.2":"2026-09-01T07:27:13.379Z","0.1.3":"2026-09-01T08:21:00.933Z"},"bugs":{"url":"https://github.com/BearstOzawa/lucky-mcp-server/issues"},"author":{"name":"BearstOzawa"},"license":"MIT","homepage":"https://github.com/BearstOzawa/lucky-mcp-server#readme","keywords":["mcp","model-context-protocol","lucky","reverse-proxy","opentoken"],"repository":{"type":"git","url":"git+https://github.com/BearstOzawa/lucky-mcp-server.git"},"description":"MCP server for Lucky reverse proxy, TLS, port forwarding, and related modules.","maintainers":[{"name":"bearst","email":"bearstozawa@gmail.com"}],"readme":"# @bearst/lucky-mcp-server\n\n[![CI](https://github.com/BearstOzawa/lucky-mcp-server/actions/workflows/ci.yml/badge.svg)](https://github.com/BearstOzawa/lucky-mcp-server/actions/workflows/ci.yml)\n[![npm](https://img.shields.io/npm/v/@bearst/lucky-mcp-server.svg)](https://www.npmjs.com/package/@bearst/lucky-mcp-server)\n\n中文 | [English](#english)\n\nLucky 的 MCP Server。通过 OpenToken 调用 Lucky 3.0 HTTP API，以 stdio 提供反向代理、证书、端口转发、DDNS 及相关模块的工具。\n\n## 要求\n\n- Node.js 20 或更高\n- 已启用 OpenToken 的 Lucky 实例（管理端口默认 `16601`）\n\n认证请求头为 `openToken`。不使用账号密码，也不维持登录会话。\n\n## 安装\n\n```bash\nnpx -y @bearst/lucky-mcp-server\n```\n\nMCP 客户端配置：\n\n```json\n{\n  \"mcpServers\": {\n    \"lucky\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@bearst/lucky-mcp-server\"],\n      \"env\": {\n        \"LUCKY_BASE_URL\": \"http://127.0.0.1:16601\",\n        \"LUCKY_OPEN_TOKEN\": \"<open-token>\"\n      }\n    }\n  }\n}\n```\n\n从本地构建运行时，将 `command` 设为 `node`，`args` 设为 `[\"/path/to/lucky-mcp-server/dist/cli.js\"]`。\n\n## 环境变量\n\n| 变量 | 必填 | 默认值 | 说明 |\n|---|---|---|---|\n| `LUCKY_BASE_URL` | 是 | — | Lucky 管理端根 URL |\n| `LUCKY_OPEN_TOKEN` | 是 | — | OpenToken |\n| `LUCKY_TLS_VERIFY` | 否 | `true` | 校验 Lucky HTTPS 证书。自签证书设为 `false` |\n| `LUCKY_TIMEOUT_MS` | 否 | `15000` | 请求超时（毫秒） |\n| `LUCKY_DEFAULT_RULE_KEY` | 否 | — | `lucky_expose_service` 默认使用的 Web 监听 key |\n| `LUCKY_DEFAULT_LISTEN_PORT` | 否 | — | `lucky_expose_service` 默认使用的监听端口 |\n| `LUCKY_ALLOWED_DOMAIN_SUFFIX` | 否 | — | 允许写入的域名后缀，逗号分隔 |\n| `LUCKY_DEBUG` | 否 | — | 向 stderr 输出请求路径，不输出 token |\n\nOpenToken 在 Lucky 设置中签发。请遵守 Lucky 对 OpenToken 的使用条款。\n\n## 工具\n\n列表类工具返回压缩后的字段，不返回 Lucky 原生完整对象。密钥类字段在响应中脱敏。\n\n### 反向代理\n\n| 工具 | 说明 |\n|---|---|\n| `lucky_status` | 连通性、版本、模块与当前 MCP 配置 |\n| `lucky_list_web_rules` | Web 监听及其子规则（端口、TLS、域名、后端） |\n| `lucky_get_web_rule` | 按 key 读取一条监听 |\n| `lucky_expose_service` | 按域名将后端挂到已有监听；已存在则更新后端 |\n| `lucky_unexpose_service` | 按域名删除子规则，不删除监听 |\n| `lucky_set_route_enabled` | 启用或停用指定域名的子规则 |\n| `lucky_web_logs` | 反代访问日志 |\n\n`lucky_expose_service` 选择监听的顺序：`rule_key` → `listen_port` → `LUCKY_DEFAULT_RULE_KEY` → `LUCKY_DEFAULT_LISTEN_PORT` → 已启用的 TLS 监听（优先端口 443）。不会创建新的监听端口。\n\n新增子规则时复制同一监听上已有的反向代理规则，并改写域名与后端。目标监听没有任何反向代理子规则时，提交 PascalCase 最小对象。\n\n### 证书\n\n| 工具 | 说明 |\n|---|---|\n| `lucky_list_certs` | 证书元数据（不含私钥与 PEM） |\n| `lucky_get_cert` | 按 key 读取证书元数据 |\n| `lucky_bind_cert` | 将已有证书绑定到 Web 监听并启用 TLS |\n| `lucky_add_custom_cert` | 上传自定义 PEM |\n| `lucky_sync_cert` | 触发指定证书的 ACME / 手动同步 |\n\n### 端口转发\n\n| 工具 | 说明 |\n|---|---|\n| `lucky_list_port_forwards` | 端口转发列表 |\n| `lucky_upsert_port_forward` | 按监听端口与协议创建或更新 |\n| `lucky_delete_port_forward` | 按 key 删除 |\n| `lucky_set_port_forward_enabled` | 启用或停用 |\n| `lucky_port_forward_logs` | 日志 |\n\n### DDNS\n\n| 工具 | 说明 |\n|---|---|\n| `lucky_list_ddns` | 任务列表（提供商、域名、最近 IP） |\n| `lucky_get_ddns` | 按 key 读取任务 |\n| `lucky_set_ddns_enabled` | 启用或停用 |\n| `lucky_sync_ddns` | 立即同步 |\n| `lucky_ddns_logs` | 日志 |\n\n创建新任务需要提供商专用字段，请使用 `lucky_api_call`。\n\n### STUN / WOL / 设置\n\n| 工具 | 说明 |\n|---|---|\n| `lucky_list_stun_rules` | STUN 规则 |\n| `lucky_set_stun_enabled` | 启用或停用 STUN 规则 |\n| `lucky_stun_logs` | STUN 日志 |\n| `lucky_list_wol_devices` | WOL 设备 |\n| `lucky_wake` | 按 key、名称或 MAC 发送魔术包 |\n| `lucky_add_wol_device` | 添加设备 |\n| `lucky_get_settings` | 读取基础设置（密钥脱敏） |\n\n### 计划任务\n\n| 工具 | 说明 |\n|---|---|\n| `lucky_list_cron_jobs` | 任务列表 |\n| `lucky_upsert_cron_job` | 按名称（或 key）创建或更新 |\n| `lucky_delete_cron_job` | 按 key 删除 |\n| `lucky_set_cron_enabled` | 启用或停用 |\n| `lucky_run_cron_job` | 立即执行 |\n| `lucky_cron_logs` | 日志 |\n\n### FTP / WebDAV\n\n| 工具 | 说明 |\n|---|---|\n| `lucky_get_ftp` / `lucky_get_webdav` | 配置与运行状态 |\n| `lucky_update_ftp` / `lucky_update_webdav` | 合并写入配置 |\n| `lucky_ftp_logs` / `lucky_webdav_logs` | 日志 |\n\n### Docker\n\n| 工具 | 说明 |\n|---|---|\n| `lucky_list_docker` | 容器、镜像、卷、Compose 项目（只读） |\n\n### IP 过滤\n\n| 工具 | 说明 |\n|---|---|\n| `lucky_list_ip_filters` | 过滤规则 |\n| `lucky_get_ip_filter` | 按 key 读取规则 |\n| `lucky_list_blocked_ips` | 端口诱捕已封禁 IP |\n| `lucky_unblock_ip` | 解除封禁 |\n| `lucky_ip_filter_logs` | 日志 |\n\n### 安全组\n\n| 工具 | 说明 |\n|---|---|\n| `lucky_list_security_groups` | 安全组、授权与用户（只读） |\n| `lucky_list_auth_providers` | 第三方认证配置（只读） |\n\n### 日志、存储、主机\n\n| 工具 | 说明 |\n|---|---|\n| `lucky_logs_stats` | 日志中心统计、位置与数据流 |\n| `lucky_query_logs` | 查询日志中心 |\n| `lucky_list_storage` | 存储挂载 |\n| `lucky_set_storage_enabled` | 启用或停用挂载 |\n| `lucky_list_local_paths` | 浏览 Lucky 可见的本地路径 |\n| `lucky_host_status` | 主机与模块状态 |\n| `lucky_list_tunnels` | Cloudflared 与 Coraza 实例 |\n| `lucky_query_ip` | IP 库查询 |\n\n### Web 终端\n\n| 工具 | 说明 |\n|---|---|\n| `lucky_list_terminal_connections` | SSH 连接与会话（不含 SFTP） |\n| `lucky_upsert_terminal_connection` | 按名称创建或更新连接 |\n\n### 通用 API\n\n| 工具 | 说明 |\n|---|---|\n| `lucky_api_catalog` | 允许调用的 API 前缀 |\n| `lucky_api_call` | 调用前缀白名单内的 Lucky API |\n\n`lucky_api_call` 拒绝以下路径：登录、登出、管理员密码、OpenToken、2FA、配置恢复、进程重启、OAuth 登录、终止主机进程。基础设置仅允许读取。\n\n## 开发\n\n```bash\nnpm install\nnpm run typecheck\nnpm test\nnpm run lint\nnpm run build\n```\n\n```bash\nLUCKY_BASE_URL=\"http://127.0.0.1:16601\" \\\nLUCKY_OPEN_TOKEN=\"<open-token>\" \\\nnpm run dev\n```\n\n## 发布\n\n版本记录见 [CHANGELOG.md](CHANGELOG.md)。\n\n创建 GitHub Release 会触发 `Publish` workflow。仓库 Secrets 需配置 `NPM_TOKEN`（npm granular token，具备 `@bearst/lucky-mcp-server` 发布权限）。Release tag 须与 `package.json` 的 `version` 一致，例如 `v0.1.2`。\n\n`Publish` 只在 Release 或手动 `workflow_dispatch` 时运行，不会在 push 时发版。\n\n## License\n\nMIT\n\n## English\n\nMCP server for [Lucky](https://lucky666.cn). It authenticates with OpenToken and exposes stdio tools for reverse proxy, certificates, port forwarding, DDNS, and related Lucky 3.0 modules.\n\n### Requirements\n\n- Node.js 20+\n- A Lucky instance with OpenToken enabled (admin port defaults to `16601`)\n\nThe client sends the token in the `openToken` header. It does not log in with a password or keep a session cookie.\n\n### Install\n\n```bash\nnpx -y @bearst/lucky-mcp-server\n```\n\n```json\n{\n  \"mcpServers\": {\n    \"lucky\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@bearst/lucky-mcp-server\"],\n      \"env\": {\n        \"LUCKY_BASE_URL\": \"http://127.0.0.1:16601\",\n        \"LUCKY_OPEN_TOKEN\": \"<open-token>\"\n      }\n    }\n  }\n}\n```\n\nTo run a local build, set `command` to `node` and `args` to `[\"/path/to/lucky-mcp-server/dist/cli.js\"]`.\n\n### Environment\n\n| Variable | Required | Default | Description |\n|---|---|---|---|\n| `LUCKY_BASE_URL` | yes | — | Lucky admin base URL |\n| `LUCKY_OPEN_TOKEN` | yes | — | OpenToken |\n| `LUCKY_TLS_VERIFY` | no | `true` | Verify Lucky's TLS certificate. Set `false` for self-signed certs |\n| `LUCKY_TIMEOUT_MS` | no | `15000` | Request timeout in milliseconds |\n| `LUCKY_DEFAULT_RULE_KEY` | no | — | Default web listener key for `lucky_expose_service` |\n| `LUCKY_DEFAULT_LISTEN_PORT` | no | — | Default web listener port for `lucky_expose_service` |\n| `LUCKY_ALLOWED_DOMAIN_SUFFIX` | no | — | Comma-separated suffixes allowed for writes |\n| `LUCKY_DEBUG` | no | — | Log request paths to stderr; tokens are not logged |\n\nIssue the token in Lucky settings. Follow Lucky's terms for OpenToken.\n\n### Tools\n\nList tools return compact records, not Lucky's full native objects. Secret fields are redacted.\n\n`lucky_expose_service` selects a listener in this order: `rule_key` → `listen_port` → `LUCKY_DEFAULT_RULE_KEY` → `LUCKY_DEFAULT_LISTEN_PORT` → an enabled TLS listener (port 443 preferred). It does not create a new listen port. New reverse-proxy routes are cloned from an existing route on the same listener.\n\n`lucky_api_call` is restricted to allowlisted path prefixes. It rejects login, logout, admin password, OpenToken, 2FA, config restore, process reboot, OAuth login, and host process kill. Base settings are read-only.\n\nSee the Chinese section above for the full tool table.\n\n### Development\n\n```bash\nnpm install\nnpm run typecheck\nnpm test\nnpm run lint\nnpm run build\n```\n\n### Publish\n\nSee [CHANGELOG.md](CHANGELOG.md). A GitHub Release runs the `Publish` workflow. Add an `NPM_TOKEN` repository secret with publish access to `@bearst/lucky-mcp-server`. The release tag must match `package.json` `version` (for example `v0.1.2`). Publish does not run on push.\n\n### License\n\nMIT\n","readmeFilename":"README.md"}