{"_id":"@demox-site/mcp-server","_rev":"22-5b16128e2a9d8a0524b1f6e867d1b039","name":"@demox-site/mcp-server","dist-tags":{"latest":"1.1.4"},"versions":{"1.0.12":{"name":"@demox-site/mcp-server","version":"1.0.12","keywords":["mcp","model-context-protocol","demox","deployment","cloudbase"],"author":{"name":"PhosA"},"license":"MIT","_id":"@demox-site/mcp-server@1.0.12","maintainers":[{"name":"phosa","email":"phosa@qq.com"}],"bin":{"demox-site-mcp-server":"bin/mcp.js"},"dist":{"shasum":"0fcf98fe5c6348b15853c5f83ae22f46e967caab","tarball":"https://registry.npmjs.org/@demox-site/mcp-server/-/mcp-server-1.0.12.tgz","fileCount":28,"integrity":"sha512-PS7gpQVVp07cDRPcdIEwidSFURvrh/A+hgvupwzT/AMYTr/k5AfT5uajE9yJrHs1UHFfs7VT3Q2q/j6VxL/8FA==","signatures":[{"sig":"MEQCIDmYNpMzc+AuORACdA+CmeOJYcOHY3sTWlwGbQGo2bVDAiBrSOba7PaSAF+K7OipmBTV0+xEAptv01Pj0jb/4eqjUQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120062},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2c7c2c914425a5d894693cd9fc719e9284250b15","scripts":{"cli":"tsx src/cli.ts","dev":"tsx watch src/index.ts","lint":"eslint \"src/**/*.ts\"","test":"vitest","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"phosa","email":"phosa@qq.com"},"_npmVersion":"10.8.2","description":"Demox MCP Server - Deploy static websites with AI","directories":{},"_nodeVersion":"20.19.6","dependencies":{"open":"^10.1.0","adm-zip":"^0.5.10","commander":"^12.0.0","@cloudbase/node-sdk":"^3.17.0","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_1.0.12_1769130252060_0.5811651830866533","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"@demox-site/mcp-server","version":"1.0.13","keywords":["mcp","model-context-protocol","demox","deployment","cloudbase"],"author":{"name":"PhosA"},"license":"MIT","_id":"@demox-site/mcp-server@1.0.13","maintainers":[{"name":"phosa","email":"phosa@qq.com"}],"bin":{"demox-site-mcp-server":"bin/mcp.js"},"dist":{"shasum":"72ec74039f62ceee245d334ad26f463ac17925bb","tarball":"https://registry.npmjs.org/@demox-site/mcp-server/-/mcp-server-1.0.13.tgz","fileCount":28,"integrity":"sha512-TPBjXNOwNGqDkiehvYfNttqYHFBZb5GoEB5S081XpJpLunI/AVJCvptB6UtHx2g2jEP7MiyUolHQEWot+YxdWg==","signatures":[{"sig":"MEUCIQDQY/VIqAlRZhaBwvYsVYSVNpA2svZqFTQvufis/UTFTgIgFuXNStAn+Oq22GKbHIu6WK24y/SQWg0jNSpC9sxDxrI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123467},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"38557c3dffe81015a890247c0828ce02d0dab93c","scripts":{"cli":"tsx src/cli.ts","dev":"tsx watch src/index.ts","lint":"eslint \"src/**/*.ts\"","test":"vitest","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"phosa","email":"phosa@qq.com"},"_npmVersion":"10.8.2","description":"Demox MCP Server - Deploy static websites with AI","directories":{},"_nodeVersion":"20.19.6","dependencies":{"open":"^10.1.0","adm-zip":"^0.5.10","commander":"^12.0.0","@cloudbase/node-sdk":"^3.17.0","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_1.0.13_1770101530176_0.17205913356518288","host":"s3://npm-registry-packages-npm-production"}},"1.0.14":{"name":"@demox-site/mcp-server","version":"1.0.14","keywords":["mcp","model-context-protocol","demox","deployment","cloudbase"],"author":{"name":"PhosA"},"license":"MIT","_id":"@demox-site/mcp-server@1.0.14","maintainers":[{"name":"phosa","email":"phosa@qq.com"}],"bin":{"demox-site-mcp-server":"bin/mcp.js"},"dist":{"shasum":"bd41c6d71c58cfbc8e4d78d0264364af1edaedd0","tarball":"https://registry.npmjs.org/@demox-site/mcp-server/-/mcp-server-1.0.14.tgz","fileCount":28,"integrity":"sha512-n8W12J2zlXd4cgqDJdQBKX1p+LDwronx9NhAUXjjHwW/CVctJMlhu04YIH9AOP5VbEccBcbPtemAVRIgfg9ZQw==","signatures":[{"sig":"MEQCHwsQPD0+URAWkI/Dvqygo/NoJ4GD9qyVOsK4GZuiNXoCIQDx2Qxf+AQxHhbQuAUYXXfYAuVBR91tUt8mb0uWfFzldg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":112491},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a3596b4b2e60dbb955d9206c6cc3a566db686008","scripts":{"cli":"tsx src/cli.ts","dev":"tsx watch src/index.ts","lint":"eslint \"src/**/*.ts\"","test":"vitest","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"phosa","email":"phosa@qq.com"},"_npmVersion":"10.8.2","description":"Demox MCP Server - Deploy static websites with AI","directories":{},"_nodeVersion":"20.19.6","dependencies":{"open":"^10.1.0","adm-zip":"^0.5.10","commander":"^12.0.0","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_1.0.14_1772289013993_0.8460197293034575","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@demox-site/mcp-server","version":"1.1.0","keywords":["mcp","model-context-protocol","demox","deployment","cloudbase"],"author":{"name":"PhosA"},"license":"MIT","_id":"@demox-site/mcp-server@1.1.0","maintainers":[{"name":"phosa","email":"phosa@qq.com"}],"bin":{"demox-site-mcp-server":"bin/mcp.js"},"dist":{"shasum":"3f97a1ba74e2386ba8be7eb711a4b37d6886fb57","tarball":"https://registry.npmjs.org/@demox-site/mcp-server/-/mcp-server-1.1.0.tgz","fileCount":28,"integrity":"sha512-FCY7SLUNBRm4UETeLLZ0X260E2UpJYnOkQnuUpn5b8Qyovu13rjpHgGpW9jp2aba5PbL1D1qD4HK+itiBBvpFw==","signatures":[{"sig":"MEQCIDZgDWu1+EDxO8iE4D5Qf2kmcCaAzzHQUjHK9T3om3oAAiBLC4ZeQQNnxR6M+Suks0xq0oHPfRBK6LkR2+nrBnyqUw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144290},"main":"./dist/index.js","type":"module","_from":"file:/tmp/demox-release/demox-site-mcp-server-1.1.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"cli":"tsx src/cli.ts","dev":"tsx watch src/index.ts","lint":"eslint \"src/**/*.ts\"","test":"vitest","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc","start":"node dist/index.js","prepare":"npm run build","prepublishOnly":"npm run build"},"_npmUser":{"name":"phosa","email":"phosa@qq.com"},"_resolved":"/tmp/demox-release/demox-site-mcp-server-1.1.0.tgz","_integrity":"sha512-FCY7SLUNBRm4UETeLLZ0X260E2UpJYnOkQnuUpn5b8Qyovu13rjpHgGpW9jp2aba5PbL1D1qD4HK+itiBBvpFw==","_npmVersion":"11.12.1","description":"Demox MCP Server - Deploy static websites with AI","directories":{},"_nodeVersion":"22.22.0","dependencies":{"open":"^10.1.0","adm-zip":"^0.5.10","mammoth":"^1.12.0","commander":"^12.0.0","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_1.1.0_1781500506574_0.9779434004318501","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@demox-site/mcp-server","version":"1.1.1","keywords":["mcp","model-context-protocol","demox","deployment","cloudbase"],"author":{"name":"PhosA"},"license":"MIT","_id":"@demox-site/mcp-server@1.1.1","maintainers":[{"name":"phosa","email":"phosa@qq.com"}],"bin":{"demox-site-mcp-server":"bin/mcp.js"},"dist":{"shasum":"8d37121a76edccdc02a4e373ded8ea924c5e5d3a","tarball":"https://registry.npmjs.org/@demox-site/mcp-server/-/mcp-server-1.1.1.tgz","fileCount":32,"integrity":"sha512-YdBFR7UDx/XZernXoscT57jHniOMHaYd3tIrqfLnJAW5LcKPpQVLgVXVfw0Iz/79EEH7A/oEOWYV27GMiHuqZw==","signatures":[{"sig":"MEUCIQDYNGcWx6GlGpOyTIeG6Jcz8s+i9U9WBJBMNh+ADHHWfQIgBVRRW0u+ZPwO5fFnEgdeVv875Ce38XWLpnBnB3QWMpg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":162247},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"111eb3e458db3d805b16824996753fe0ef37f10a","scripts":{"cli":"tsx src/cli.ts","dev":"tsx watch src/index.ts","lint":"eslint \"src/**/*.ts\"","test":"vitest","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc","start":"node dist/index.js","prepare":"npm run build","prepublishOnly":"npm run build"},"_npmUser":{"name":"phosa","email":"phosa@qq.com"},"_npmVersion":"11.12.1","description":"Demox MCP Server - Deploy static websites with AI","directories":{},"_nodeVersion":"22.22.0","dependencies":{"open":"^10.1.0","adm-zip":"^0.5.10","mammoth":"^1.12.0","commander":"^12.0.0","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.6.1","typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_1.1.1_1782023609681_0.7791743856995599","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@demox-site/mcp-server","version":"1.1.2","keywords":["mcp","model-context-protocol","demox","deployment","cloudbase"],"author":{"name":"PhosA"},"license":"MIT","_id":"@demox-site/mcp-server@1.1.2","maintainers":[{"name":"phosa","email":"phosa@qq.com"}],"bin":{"demox-site-mcp-server":"bin/mcp.js"},"dist":{"shasum":"88770d3b49f1b187383abfe512ed32e823ea1193","tarball":"https://registry.npmjs.org/@demox-site/mcp-server/-/mcp-server-1.1.2.tgz","fileCount":28,"integrity":"sha512-PprnpOBW7YNtQo4v4I6u+HcYfvCTh1LKnxTiMsQ5l+Kius2mrr0qBbc/m3RtUrMTY2cmWtKgyIrtd/2sF+bEiA==","signatures":[{"sig":"MEQCIGS1NgF0AC/ruldZbLRujvUXvKS/mQL1EbCS9/NSc9PPAiA07cWb5cFI271llGl6+sy0PG7aPLIHVVbudEJdl8IbTQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":166314},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6c60fa7c833bb42d7515a0b2dc9249e56d4c5141","scripts":{"cli":"tsx src/cli.ts","dev":"tsx watch src/index.ts","lint":"eslint \"src/**/*.ts\"","test":"vitest","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc","start":"node dist/index.js","prepare":"npm run build","prepublishOnly":"npm run build"},"_npmUser":{"name":"phosa","email":"phosa@qq.com"},"_npmVersion":"11.12.1","description":"Demox MCP Server - Deploy static websites with AI","directories":{},"_nodeVersion":"22.22.0","dependencies":{"open":"^10.1.0","adm-zip":"^0.5.10","mammoth":"^1.12.0","commander":"^12.0.0","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.6.1","typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_1.1.2_1784527421540_0.549626980820416","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@demox-site/mcp-server","version":"1.1.3","keywords":["mcp","model-context-protocol","demox","deployment","cloudbase"],"author":{"name":"PhosA"},"license":"MIT","_id":"@demox-site/mcp-server@1.1.3","maintainers":[{"name":"phosa","email":"phosa@qq.com"}],"bin":{"demox-site-mcp-server":"bin/mcp.js"},"dist":{"shasum":"113b8544894c83a0d36a4946f4c59f7e19439a70","tarball":"https://registry.npmjs.org/@demox-site/mcp-server/-/mcp-server-1.1.3.tgz","fileCount":32,"integrity":"sha512-a8ZdUkO50Y8yAr0sHdctvt1IP6XUWeBUsTREWC0B/h0OQNx0EPYqI4dzTfBoD9CL3pufoDIoO3ZmFw56odlE7g==","signatures":[{"sig":"MEQCIFx5awE7WeFHTEfRl5QHpF+sG39WAQ4IwRa5LzX+r5ebAiBQ7d1vE0BfQT3O6FlZgRM7/MMI4EAwlmi9LghJRwVkoA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":181328},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"6b0a6009a69fbf1e2eb36d31db841ad6ed452eb9","scripts":{"cli":"tsx src/cli.ts","dev":"tsx watch src/index.ts","lint":"eslint \"src/**/*.ts\"","test":"vitest","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc","start":"node dist/index.js","prepare":"npm run build","prepublishOnly":"npm run build"},"_npmUser":{"name":"phosa","email":"phosa@qq.com"},"_npmVersion":"11.12.1","description":"Demox MCP Server - Deploy static websites with AI","directories":{},"_nodeVersion":"26.0.0","dependencies":{"open":"^10.1.0","adm-zip":"^0.5.10","mammoth":"^1.12.0","commander":"^12.0.0","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.6.1","typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_1.1.3_1785834041168_0.9224101213137852","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"_id":"@demox-site/mcp-server@1.1.4","bin":{"demox-site-mcp-server":"bin/mcp.js"},"dist":{"shasum":"87b796a5f6fb38740036c21c51fc51b7f2a232f2","tarball":"https://registry.npmjs.org/@demox-site/mcp-server/-/mcp-server-1.1.4.tgz","fileCount":20,"integrity":"sha512-CNGMXLpyaQrkJ/APzKtUTnVpcWIwEAuresERYSETq4EN/0qJ9B+E3ZymiDXtUnLtTSAz0lGKlhStaEHy4JreKA==","signatures":[{"sig":"MEUCIBH3uamanl4DwC+u/gfiNg2nNVJDCBIjUHMb7zedibHRAiEAvkbQlT/SazFWRxWMxzzsu3iSrHyngx7dbPNdBeMeMGw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDfjmIh30OEWbCwAFHAVNahnn6sFpuw2IDoSDjFxTvu9wIgNjxm7ysYJlg0SKX8B6thCvkrlfXqP8BoN3Lrmt4OTWM="}],"unpackedSize":96568},"main":"./dist/index.js","name":"@demox-site/mcp-server","type":"module","types":"./dist/index.d.ts","author":{"name":"PhosA"},"engines":{"node":">=18.0.0"},"gitHead":"6b0a6009a69fbf1e2eb36d31db841ad6ed452eb9","license":"MIT","scripts":{"cli":"tsx src/cli.ts","dev":"tsx watch src/index.ts","lint":"eslint \"src/**/*.ts\"","test":"vitest run","build":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc","start":"node dist/index.js","verify":"npm run guard:duplicates && npm run build && npm test","prepare":"npm run build","prepublishOnly":"npm run verify","guard:duplicates":"node scripts/consumer-duplicate-guard.mjs"},"version":"1.1.4","_npmUser":{"name":"phosa","email":"phosa@qq.com"},"keywords":["mcp","model-context-protocol","demox","deployment","cloudbase"],"_npmVersion":"11.12.1","description":"Demox MCP Server - Deploy static websites with AI","directories":{},"maintainers":[{"name":"phosa","email":"phosa@qq.com"}],"_nodeVersion":"22.22.0","dependencies":{"open":"^10.1.0","commander":"^12.0.0","@demox-site/sdk":"0.1.1","@modelcontextprotocol/sdk":"^1.0.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.6.1","typescript":"^5.3.3","@types/node":"^20.11.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-server_1.1.4_1788403389044_0.7633232778546719"}}},"time":{"created":"2026-01-23T01:04:11.935Z","modified":"2026-09-03T02:43:09.317Z","1.0.0":"2026-01-22T01:20:07.218Z","1.0.1":"2026-01-22T01:36:36.537Z","1.0.2":"2026-01-22T01:46:14.590Z","1.0.3":"2026-01-22T01:57:33.888Z","1.0.4":"2026-01-22T02:16:00.998Z","1.0.5":"2026-01-22T03:06:07.502Z","1.0.6":"2026-01-22T04:51:13.895Z","1.0.7":"2026-01-22T05:05:12.597Z","1.0.8":"2026-01-22T05:12:07.714Z","1.0.9":"2026-01-22T05:15:41.949Z","1.0.10":"2026-01-22T05:30:29.615Z","1.0.11":"2026-01-22T09:16:18.101Z","1.0.12":"2026-01-23T01:04:12.215Z","1.0.13":"2026-02-03T06:52:10.380Z","1.0.14":"2026-02-28T14:30:14.149Z","1.1.0":"2026-06-15T05:15:06.731Z","1.1.1":"2026-06-21T06:33:29.812Z","1.1.2":"2026-07-20T06:03:41.664Z","1.1.3":"2026-08-04T09:00:41.320Z","1.1.4":"2026-09-03T02:43:09.124Z"},"author":{"name":"PhosA"},"license":"MIT","keywords":["mcp","model-context-protocol","demox","deployment","cloudbase"],"description":"Demox MCP Server - Deploy static websites with AI","maintainers":[{"name":"phosa","email":"phosa@qq.com"}],"readme":"# @demox-site/mcp-server\n\n[![npm version](https://badge.fury.io/js/%40demox-site%2Fmcp-server.svg)](https://www.npmjs.com/package/@demox-site/mcp-server)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n> Demox MCP Server - 通过 AI 把静态网站和 Node 云函数发布到 Demox 平台\n\n## 📖 目录\n\n- [什么是 MCP？](#什么是-mcp)\n- [功能特性](#功能特性)\n- [快速开始](#快速开始)\n- [配置步骤](#配置步骤)\n- [可用工具](#可用工具)\n- [使用示例](#使用示例)\n- [常见问题](#常见问题)\n- [技术支持](#技术支持)\n\n---\n\n## 什么是 MCP？\n\nMCP (Model Context Protocol) 是 AI 助手与工具之间的标准化协议，允许 AI 工具（如 Claude Code、Cursor）安全地调用外部服务。\n\n## 功能特性\n\n- 🚀 **一键部署**: 部署静态网站到 Demox 平台\n- ☁ **云函数**: 推送、列出、调用 Node 云函数；读写每个函数自己的环境变量和别名\n- 📦 **自动打包/转换**: 支持目录、ZIP、PDF、Markdown、TXT、DOCX\n- ☁️ **云端部署**: 上传 ZIP 后由 Demox 后端解压并发布\n- 🔐 **自动登录**: Token 过期时自动触发登录流程\n- 💻 **AI 集成**: 与 Claude Code、Cursor 等 MCP 客户端无缝集成\n- 🌐 **官方域名子域名**: 检查、设置、清除 `<subdomain>.demox.site`\n- 📋 **网站管理**: 查看、删除、管理已部署的网站\n\n---\n\n## 快速开始\n\n### 安装 MCP Server\n\n**在 AI 工具配置中使用 npx（推荐）**\n\n无需安装，直接在配置文件中使用：\n\n```json\n{\n  \"mcpServers\": {\n    \"demox\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@demox-site/mcp-server@latest\"]\n    }\n  }\n}\n```\n\n无需配置环境变量。配置后重启 AI 工具，首次使用时会自动打开浏览器登录。\n\n---\n\n## 配置步骤\n\n### 1. 配置 AI 工具\n\n根据您使用的 AI 工具，将以下配置导入到相应位置：\n\n#### Claude Desktop / Claude Code\n\n**macOS**:\n```bash\n~/Library/Application Support/Claude/claude_desktop_config.json\n```\n\n**Windows**:\n```bash\n%APPDATA%/Claude/claude_desktop_config.json\n```\n\n**Linux**:\n```bash\n~/.config/Claude/claude_desktop_config.json\n```\n\n配置示例：\n```json\n{\n  \"mcpServers\": {\n    \"demox\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@demox-site/mcp-server@latest\"]\n    }\n  }\n}\n```\n\n#### Cursor AI\n\n**macOS / Linux**: `~/.cursor/mcp.json`\n**Windows**: `%APPDATA%/Cursor/mcp.json`\n\n#### Cline (VS Code 插件)\n\n所有平台: `~/.cline/mcp.json`\n\n#### Continue (VS Code 插件)\n\n所有平台: `~/.continue/mcp.json`\n\n### 2. 重启 AI 工具\n\n配置完成后，重启您的 AI 工具。\n\n### 3. 首次使用\n\n首次调用 MCP 工具时，会自动打开浏览器登录。\n\n登录成功后，凭证会以 `0600` 权限保存在本地（`~/.demox/token.json`）。Access Token 有效期 1 小时，Refresh Token 有效期 30 天。\n\n**自动登录**：Access Token 过期时会先静默刷新；只有 Refresh Token 无效或过期时才重新打开浏览器。\n\n自托管环境可以使用 `DEMOX_AUTH_URL` 覆盖浏览器授权页，并使用 `DEMOX_OAUTH_TOKEN_URL` 覆盖 OAuth code/refresh token 交换端点。默认分别为 `https://www.demox.site/mcp-authorize` 和 `https://api.demox.site/oauth/token`。\n\n---\n\n## 可用工具\n\n### deploy_website\n\n部署静态网站到 Demox 平台。\n\n**参数**:\n- `zipFile` (string, **必需**): 文件或目录路径\n  - 支持本地 ZIP 文件：`./dist.zip`\n  - 支持本地目录（自动打包）：`./dist`\n  - 支持 PDF：`./document.pdf`\n  - 支持文档：`./notes.md`、`./notes.txt`、`./report.docx`\n  - 支持 HTTPS URL（必须 .zip 结尾）：`https://example.com/file.zip`\n- `fileName` (string, 可选): 网站名称，用于标识和展示\n- `websiteId` (string, 可选): 网站 ID，更新现有网站时提供\n- `projectId` (string, 可选): 项目 ID，将网站归入指定项目\n- `templateId` (string, 可选): 文档模板，支持 `insight`、`warm`、`dark`\n\n**限制**:\n- 支持目录、ZIP、PDF、Markdown、TXT、DOCX\n- 最大文件大小由 Demox 账户角色配额决定；传输使用分块上传，不受单请求 8MB 限制\n- 旧版 `.doc` 暂不支持，请另存为 `.docx`\n- 不支持 base64 编码内容\n\n### list_websites\n\n获取用户在 Demox 平台上的所有网站列表。\n\n**返回信息**:\n- 网站 ID\n- 网站名称\n- 访问 URL\n- 创建时间\n\n### list_projects\n\n获取用户在 Demox 平台上的所有项目列表。\n\n**返回信息**:\n- 项目 ID\n- 项目名称\n- 站点数量\n\n### get_website\n\n获取指定网站的详细信息。\n\n**参数**:\n- `websiteId` (string, **必需**): 要查询的网站 ID\n\n### list_functions\n\n列出指定网站的云函数。\n\n**参数**:\n- `websiteId` (string, **必需**)\n\n### push_function\n\n把本地 Node 函数上传为新版本。首次创建 v1 时 `production` / `develop` 都指向 v1；之后再推送不会改别名。入口是 `index.js` / `index.cjs` / `index.mjs`，导出 `handler(request, env)`。\n\n**参数**:\n- `path` (string, **必需**): 本地文件或目录\n- `websiteId` (string, **必需**)\n- `slug` (string, **必需**): 函数标识，页面通过 `/api/{slug}` 调用\n- `name` (string, 可选)\n- `entrypoint` (string, 可选)\n\n### get_website_env / set_website_env\n\n读写**指定函数**的环境变量。`set_website_env` 与该函数已有变量合并。\n\n**参数**:\n- `websiteId` (string, **必需**)\n- `slug` (string, **必需**): 函数标识\n- `pairs` (string[], 可选): `KEY=value`\n- `envFile` (string, 可选): `.env` 路径\n\n### list_function_aliases / set_function_alias\n\n查看或修改函数别名。默认 `production` 和 `develop` 都指向 v1；上传新版本不会自动改别名。\n\n**参数**:\n- `websiteId` (string, **必需**)\n- `slug` (string, **必需**)\n- `alias` (string, set 时必需)\n- `version` (number, set 时必需)\n\n### invoke_function\n\n按别名调用 `/api/{slug}`，默认 `production`。\n\n**参数**:\n- `websiteId` (string, **必需**)\n- `slug` (string, **必需**)\n- `alias` (string, 可选，默认 production)\n- `method` (string, 可选，默认 POST)\n- `body` (任意 JSON, 可选)\n\n### check_custom_domain\n\n检查自定义子域名前缀是否可用。\n\n**参数**:\n- `subdomain` (string, **必需**): 子域名前缀，长度 5-63 位，例如 `my-demo`\n- `websiteId` (string, 可选): 当前网站 ID，用于判断“已绑定到自己”的前缀\n\n### set_custom_domain\n\n为指定网站设置自定义子域名前缀，设置后列表和详情会优先显示自定义域名。\n\n**参数**:\n- `websiteId` (string, **必需**): 要设置的网站 ID\n- `subdomain` (string, **必需**): 子域名前缀，长度 5-63 位，例如 `my-demo`\n\n### clear_custom_domain\n\n清除指定网站的自定义子域名前缀，网站仍可通过默认域名访问。\n\n**参数**:\n- `websiteId` (string, **必需**): 要清除的网站 ID\n\n### delete_website\n\n删除指定的网站及其所有文件。\n\n**参数**:\n- `websiteId` (string, **必需**): 要删除的网站 ID\n\n**⚠️ 注意**: 此操作不可撤销\n\n---\n\n## 使用示例\n\n### 在 Claude Desktop 中\n\n```\n用户: 部署 dist 目录到 Demox\n\nClaude: 好的，我来帮您部署 dist 目录。\n\n[检测到目录，自动打包成 ZIP...]\n[正在上传文件到 Demox 后端...]\n[文件上传成功]\n\n✅ 网站部署成功！\n网站名称: dist\n网站 ID: ABC12345\n访问地址: https://abc12345.demox.site\n```\n\n### 在 Cursor 中\n\n```\n# 在 Cursor 的 Chat 中输入\n\n部署当前项目到 Demox\n\n# Cursor 会自动：\n# 1. 检测到项目目录（如 ./dist）\n# 2. 自动打包成 ZIP\n# 3. 上传到云存储\n# 4. 调用云函数部署\n# 5. 返回访问链接\n```\n\n### 示例对话\n\n**场景 1：部署新网站**\n\n```\n用户: 把我的 react 项目的 build 目录部署到 Demox\n\nClaude: 我来帮您部署 React 项目的 build 目录。\n\n[正在打包目录 ./build...]\n[文件大小: 2.3MB]\n\n✅ 网站部署成功！\n网站名称: build\n网站 ID: XYZ67890\n访问地址: https://xyz67890.demox.site\n\n您现在可以访问上述地址查看您的网站了。\n```\n\n**场景 2：推送 Node 云函数**\n\n```\n用户: 把 ./api/hello 推到刚才那个站点，slug 用 hello\n\nClaude: 使用 push_function 发布。\n\n✅ 云函数已创建并发布\nSlug: hello\nURL: https://api.demox.site/XYZ67890/production/api/hello\n```\n\n页面里 `fetch('/api/hello')` 即可。后端更新继续用 `push_function`，不要去改腾讯云函数。\n\n**场景 3：更新现有网站**\n\n```\n用户: 更新网站 ABC12345\n\nClaude: 我来帮您更新网站 ABC12345。\n\n[文件大小: 2.5MB]\n\n✅ 网站部署成功！\n网站名称: my-project\n网站 ID: ABC12345\n访问地址: https://abc12345.demox.site\n```\n\n**场景 3：查看所有网站**\n\n```\n用户: 显示我部署的所有网站\n\nClaude: 我来帮您查看所有已部署的网站。\n\n📋 您的网站列表（共 3 个）\n\n1. **my-portfolio**\n   - ID: `ABC12345`\n   - URL: https://abc12345.demox.site\n   - 创建时间: 2026-01-20 14:30:00\n\n2. **blog**\n   - ID: `XYZ67890`\n   - URL: https://xyz67890.demox.site\n   - 创建时间: 2026-01-21 09:15:00\n\n3. **docs**\n   - ID: `DEF24680`\n   - URL: https://def24680.demox.site\n   - 创建时间: 2026-01-22 16:45:00\n```\n\n---\n\n## 常见问题\n\n### Token 过期怎么办？\n\n**自动登录**：系统会在 Token 过期时自动打开浏览器登录，无需手动操作。\n\n登录成功后会自动重试失败的工具调用。\n\n### 支持哪些文件格式？\n\n**支持目录、ZIP、PDF 和常见文档**：\n- ✅ 本地 ZIP 文件：`./dist.zip`\n- ✅ 本地目录：`./dist`（自动打包成 ZIP）\n- ✅ PDF：`./document.pdf`（自动生成预览页）\n- ✅ 文档：`./notes.md`、`./notes.txt`、`./report.docx`（自动套模板生成网页）\n- ✅ HTTPS URL：`https://example.com/file.zip`（必须 .zip 结尾）\n- ❌ 其他压缩格式（tar.gz, rar 等）\n- ❌ 旧版 `.doc`\n- ❌ Base64 编码内容\n\n### 最大文件大小限制？\n\n由 Demox 账户角色配额决定。MCP 使用固定大小分块上传，不再受 SCF 单请求 8MB 限制。\n\n### 如何撤销授权？\n\n删除本地 Token 文件：\n\n```bash\nrm ~/.demox/token.json\n```\n\n下次使用时会自动触发登录。\n\n### 支持哪些 AI 工具？\n\n所有支持 MCP 协议的 AI 工具：\n- Claude Desktop / Claude Code\n- Cursor AI\n- Cline (VS Code 插件)\n- Continue (VS Code 插件)\n- 其他 MCP 客户端\n\n### 多台设备可以使用吗？\n\n可以。每台设备需要单独登录，互不影响。\n\n### 如何查看调试日志？\n\nMCP Server 的日志会输出到 stderr，可以在 AI 工具的日志中查看。\n\n---\n\n## 技术细节\n\n### 文件上传流程\n\n```\n输入（文件/目录/URL）\n    ↓\n转换为本地 ZIP 文件（PDF/MD/TXT/DOCX 自动转换为网页）\n    ↓\n按固定大小分块上传并校验 SHA-256\n    ↓\n上传到 Demox 后端\n    ↓\n云函数解压并部署\n```\n\n### 安全性\n\n- **OAuth 2.0 认证**: 使用标准的 OAuth 2.0 协议\n- **Token 加密存储**: 本地存储的 Token 包含 Refresh Token\n- **自动刷新**: Access Token 过期后自动刷新\n- **作用域限制**: Token 仅包含必要的权限范围\n\n---\n\n## 技术支持\n\n- 📖 **文档**: https://demox.site\n- 🐛 **Issues**: https://github.com/demox-site/mcp-server/issues\n- 📧 **邮箱**: support@demox.site\n\n---\n\n## 开发\n\n### 本地开发\n\n```bash\n# 克隆项目\ngit clone https://github.com/demox-site/mcp-server.git\ncd mcp-server\n\n# 安装依赖\nnpm install\n\n# 开发模式\nnpm run dev\n\n# 构建\nnpm run build\n\n# 测试 MCP Server\nnode dist/index.js\n```\n\n### 贡献\n\n欢迎贡献代码！请遵循以下步骤：\n\n1. Fork 本仓库\n2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)\n3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)\n4. 推送到分支 (`git push origin feature/AmazingFeature`)\n5. 开启 Pull Request\n\n---\n\n## 许可证\n\n[MIT License](LICENSE)\n\n---\n\nMade with ❤️ by Demox Team\n","readmeFilename":"README.md"}