{"_id":"1panel-mcp","_rev":"3-4d429b99e6ab1b88ced61238a143f00c","name":"1panel-mcp","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"1panel-mcp","version":"1.0.0","author":{"url":"https://github.com/ruibaby","name":"Ryan Wang"},"license":"MIT","_id":"1panel-mcp@1.0.0","maintainers":[{"name":"ruibaby","email":"i@ryanc.cc"}],"homepage":"https://github.com/ruibaby/1panel-mcp","bugs":{"url":"https://github.com/ruibaby/1panel-mcp/issues"},"bin":{"1panel-mcp":"index.mjs"},"dist":{"shasum":"04aadc37be7de1be44b634b34cb80041068a6c22","tarball":"https://registry.npmjs.org/1panel-mcp/-/1panel-mcp-1.0.0.tgz","fileCount":6,"integrity":"sha512-LFRyTf3Siw4x/6PRNOF4vI5wteHpO2yXnKwDaQjj1hUYnDg8vzF+44MuMjVuHz1r20j9R3uc4W+PMbe4GkfTcQ==","signatures":[{"sig":"MEUCIAy6Gh8AVjxyfkzofdd/pExc13/39EYewaWmi7AQCsSjAiEAnI6w17D48iCgCH7GIPUVz6OskUIfm5u3Gups0yoCkPA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13866},"main":"index.mjs","type":"module","_from":"file:1panel-mcp-1.0.0.tgz","scripts":{"dev":"node index.mjs","start":"node index.mjs"},"_npmUser":{"name":"ruibaby","email":"i@ryanc.cc"},"_resolved":"/private/var/folders/pl/2sj_41xn3nv98xvrfr7xyrl00000gn/T/548c77d779620dd47bb2cb087d37846f/1panel-mcp-1.0.0.tgz","_integrity":"sha512-LFRyTf3Siw4x/6PRNOF4vI5wteHpO2yXnKwDaQjj1hUYnDg8vzF+44MuMjVuHz1r20j9R3uc4W+PMbe4GkfTcQ==","_npmVersion":"10.9.2","description":"1Panel MCP server for automatic website deployment","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"^3.24.3","path":"^0.12.7","axios":"^1.8.4","archiver":"^6.0.2","fs-extra":"^11.3.0","node-fetch":"^3.3.2","body-parser":"^1.20.3","zod-to-json-schema":"^3.24.5","@modelcontextprotocol/sdk":"^1.10.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/1panel-mcp_1.0.0_1745492276907_0.798361707123912","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"1panel-mcp","version":"1.0.1","author":{"url":"https://github.com/ruibaby","name":"Ryan Wang"},"license":"MIT","_id":"1panel-mcp@1.0.1","maintainers":[{"name":"ruibaby","email":"i@ryanc.cc"}],"homepage":"https://github.com/ruibaby/1panel-mcp","bugs":{"url":"https://github.com/ruibaby/1panel-mcp/issues"},"bin":{"1panel-mcp":"index.mjs"},"dist":{"shasum":"185eea2da1a948dbd4fa8d521cf4a88e55868872","tarball":"https://registry.npmjs.org/1panel-mcp/-/1panel-mcp-1.0.1.tgz","fileCount":6,"integrity":"sha512-ikBTYw2LNeQtirJuJl4SBPirVhy6nG2kFo5fU7A6mTOYOkY2jmhZ87isOj0J8CIwbHi014+FkbCs6KdYMgIovg==","signatures":[{"sig":"MEUCIHZTUBKpUGbzYMNj2Pwe2hQbx5GnWIEcpZwlM7CmYM4cAiEA34ViPbTDYkwEPZ33aMfwlQhPamZz61FOI56wR+LJrPY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14970},"main":"index.mjs","type":"module","gitHead":"f0eee8488cf07d0c8a42b9b6385763ed753d99c3","scripts":{"dev":"node index.mjs","start":"node index.mjs","release":"release-it"},"_npmUser":{"name":"ruibaby","actor":{"name":"ruibaby","type":"user","email":"i@ryanc.cc"},"email":"i@ryanc.cc"},"_npmVersion":"10.9.2","description":"1Panel MCP server for automatic website deployment","directories":{},"_nodeVersion":"22.17.0","dependencies":{"zod":"^3.24.3","path":"^0.12.7","axios":"^1.8.4","archiver":"^6.0.2","fs-extra":"^11.3.0","node-fetch":"^3.3.2","body-parser":"^1.20.3","zod-to-json-schema":"^3.24.5","@modelcontextprotocol/sdk":"^1.10.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.9.0","devDependencies":{"release-it":"^19.0.3"},"_npmOperationalInternal":{"tmp":"tmp/1panel-mcp_1.0.1_1752034065645_0.5036154192819315","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"1panel-mcp","version":"1.0.2","description":"1Panel MCP server for automatic website deployment","homepage":"https://github.com/ruibaby/1panel-mcp","bugs":{"url":"https://github.com/ruibaby/1panel-mcp/issues"},"license":"MIT","author":{"name":"Ryan Wang","url":"https://github.com/ruibaby"},"type":"module","main":"index.mjs","bin":{"1panel-mcp":"index.mjs"},"scripts":{"dev":"node index.mjs","start":"node index.mjs","release":"release-it"},"dependencies":{"@modelcontextprotocol/sdk":"^1.10.2","archiver":"^6.0.2","axios":"^1.8.4","body-parser":"^1.20.3","fs-extra":"^11.3.0","node-fetch":"^3.3.2","path":"^0.12.7","zod":"^3.24.3","zod-to-json-schema":"^3.24.5"},"packageManager":"pnpm@10.9.0","devDependencies":{"release-it":"^19.0.3"},"_id":"1panel-mcp@1.0.2","gitHead":"d26fa45ff3814f18d726fee356c14aed94d1ac08","_nodeVersion":"22.17.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-95x1KdWcxXgWKRZJgTAiyrLUHZvf+8sKAQLLtvIli/E8GX9/hDu+SgX/hnDzYaKi/Letg3Pvtmfs4w7dap7hLQ==","shasum":"8034a977c7ff6bf08a3aab6309cf233fcb551e6a","tarball":"https://registry.npmjs.org/1panel-mcp/-/1panel-mcp-1.0.2.tgz","fileCount":6,"unpackedSize":14971,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFX5bg+AicfbnOU4+wM724t+XKU9DTQ2juFE3HkxLichAiEA7WvZjwmGqHFbrtpaNhyPhwr52zHKTTIOwoF9R2s6VmE="}]},"_npmUser":{"name":"ruibaby","email":"i@ryanc.cc","actor":{"name":"ruibaby","email":"i@ryanc.cc","type":"user"}},"directories":{},"maintainers":[{"name":"ruibaby","email":"i@ryanc.cc"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/1panel-mcp_1.0.2_1752037084394_0.770793233744381"},"_hasShrinkwrap":false}},"time":{"created":"2025-04-24T10:57:56.816Z","modified":"2025-07-09T04:58:04.760Z","1.0.0":"2025-04-24T10:57:57.088Z","1.0.1":"2025-07-09T04:07:45.822Z","1.0.2":"2025-07-09T04:58:04.590Z"},"bugs":{"url":"https://github.com/ruibaby/1panel-mcp/issues"},"author":{"name":"Ryan Wang","url":"https://github.com/ruibaby"},"license":"MIT","homepage":"https://github.com/ruibaby/1panel-mcp","description":"1Panel MCP server for automatic website deployment","maintainers":[{"name":"ruibaby","email":"i@ryanc.cc"}],"readme":"# 1Panel MCP Server\n\nA [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server for automated website deployment to 1Panel.\n\n> [!IMPORTANT]\n> Currently, this project is an experimental project and does not mean that it can be used directly.\n\n## Video demo\n\n<https://www.bilibili.com/video/BV1SjQRY3EmM/>\n\n## Features\n\n- Automates website deployment to 1Panel servers\n- Creates websites if they don't already exist\n- Uploads static website files to 1Panel\n- Fully compatible with the MCP standard protocol\n\n## Usage\n\n### Configure MCP in Cursor IDE\n\nTo use this server with Cursor IDE, add the following MCP configuration:\n\n1. Open Cursor\n2. Create `.cursor/mcp.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"1panel-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"1panel-mcp\"\n      ],\n      \"env\": {\n        \"ONEPANEL_BASE_URL\": \"<your 1Panel base URL>\",\n        \"ONEPANEL_API_KEY\": \"<your 1Panel API key>\",\n        \"ONEPANEL_API_VERSION\": \"v2\" // optional, default is v2\n      }\n    }\n  }\n}\n```\n\n### Use MCP to Deploy Websites\n\nIn Cursor, you can deploy websites using the following command in the AI chat:\n\n```plaintext\nDeploy to 1Panel with domain=yourdomain.com\n```\n\nOr you can use the following format:\n\n```plaintext\nDeploy website to 1Panel server, domain: yourdomain.com\n```\n\n## API Reference\n\n### MCP Tool: deploy_website\n\nDeploys a website to 1Panel.\n\n**Parameters:**\n\n- `domain` (required): Website domain\n- `buildDir` (optional): Build directory path\n\n**Response:**\n\n```plaintext\nSuccessfully deployed to 1Panel!\nDomain: yourdomain.com\nURL: http://yourdomain.com\nUpload statistics:\n- Total files: 25\n- Successfully uploaded: 25\n- Failed to upload: 0\n```\n\n## Implementation Details\n\n### Deployment Process\n\n1. **Check Build Directory**: Verifies if the specified build directory exists\n2. **Website Creation**: Creates a new static website through 1Panel API if it doesn't exist\n3. **File Upload**: Uploads all files from the build directory to the website\n4. **Statistics**: Returns detailed statistics about the upload process\n\n## Troubleshooting\n\nIf you encounter deployment issues, check the following:\n\n1. Ensure your API Key is valid and has sufficient permissions\n2. Verify that the website directory exists and has write permissions\n3. Check the 1Panel server logs for more detailed error information\n4. If file uploads fail, it may be due to file permission or format issues\n","readmeFilename":"README.md"}