{"_id":"@airtifact/mcp","name":"@airtifact/mcp","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@airtifact/mcp","version":"1.0.0","publishConfig":{"access":"public"},"type":"module","main":"dist/index.js","bin":{"airtifact-mcp":"dist/index.js","airtifact":"dist/index.js"},"scripts":{"build":"tsc","start":"node dist/index.js","dev":"tsc -w"},"dependencies":{"@modelcontextprotocol/sdk":"^1.4.0","dotenv":"^16.4.5","jszip":"^3.10.1"},"devDependencies":{"@types/node":"^20.11.0","typescript":"^5.3.3"},"gitHead":"e752a83cb514e6f0c0ed7be611554c8bef240b5b","types":"./dist/index.d.ts","_id":"@airtifact/mcp@1.0.0","description":"An official Model Context Protocol (MCP) server that enables AI coding assistants (Claude Desktop, Cursor, Antigravity, Windsurf, etc.) to deploy local static websites and preview artifacts directly to the **Airtifact** (`airtifact.page`) service via API,","_nodeVersion":"24.11.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-bU7AUAGIlsvIIiWMpfcioOKzthjmi+4Kz7aixOkabUZY7q++g5IYz4TrislDGFliLycsOAO/yxAfe5QKmrzUbA==","shasum":"c79f04d87b67d9e1d1c80ac793a73ca14643cc41","tarball":"https://registry.npmjs.org/@airtifact/mcp/-/mcp-1.0.0.tgz","fileCount":4,"unpackedSize":21384,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDvLoikX/9dsvedYPSKX0WkeqjVtBEZ2HpXke7a6WarqAIgVEWOCIbHuyHtBydrMqAYURBDB4P4USvv6THOIqvOkwk="}]},"_npmUser":{"name":"yhauxell","email":"yhauxell@gmail.com"},"directories":{},"maintainers":[{"name":"yhauxell","email":"yhauxell@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp_1.0.0_1787138296251_0.7215739234908054"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-19T11:18:16.068Z","1.0.0":"2026-08-19T11:18:16.405Z","modified":"2026-08-19T11:18:16.685Z"},"maintainers":[{"name":"yhauxell","email":"yhauxell@gmail.com"}],"description":"An official Model Context Protocol (MCP) server that enables AI coding assistants (Claude Desktop, Cursor, Antigravity, Windsurf, etc.) to deploy local static websites and preview artifacts directly to the **Airtifact** (`airtifact.page`) service via API,","readme":"# @airtifact/mcp\n\nAn official Model Context Protocol (MCP) server that enables AI coding assistants (Claude Desktop, Cursor, Antigravity, Windsurf, etc.) to deploy local static websites and preview artifacts directly to the **Airtifact** (`airtifact.page`) service via API, and list user sites.\n\n## Features\n\n- **`publish_site` Tool**: Automatically packs a local folder (must contain `index.html`), zips it in memory, and deploys it programmatically to your uploader backend.\n- **`list_sites` Tool**: Lists all static websites published by the authenticated user along with file counts, upload dates, and live URLs.\n- **Smart Ignore Rules**: Excludes unnecessary folders (`.git`, `node_modules`, `.next`, `dist`) and hidden OS files (`.DS_Store`) during compression.\n- **Rich Markdown Output**: Returns shareable live URLs and secret project removal URLs directly formatted for the AI agent context.\n\n---\n\n## Configuration in Agent Environments\n\nTo register this MCP server in your agentic workspace, add the configuration below to your environment's `mcp_config.json`:\n\n### Example Configuration (using `npx`)\n\n```json\n{\n  \"mcpServers\": {\n    \"airtifact\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@airtifact/mcp\"\n      ],\n      \"env\": {\n        \"STATIC_WEBSITE_UPLOADER_URL\": \"https://airtifact.page\",\n        \"STATIC_WEBSITE_UPLOADER_AUTH_TOKEN\": \"sk_your_generated_auth_token\"\n      }\n    }\n  }\n}\n```\n\n*Note: Replace `STATIC_WEBSITE_UPLOADER_URL` with your target server URL and `STATIC_WEBSITE_UPLOADER_AUTH_TOKEN` with your auth token.*\n\n---\n\n## Tool API Reference\n\n### 1. `publish_site`\n\nPublishes a local directory containing a static website.\n\n#### Input Schema / Arguments\n\n- `directoryPath` (string, **required**): Absolute path to the local directory containing the static website files (must contain `index.html` at the root).\n- `serverUrl` (string, *optional*): Target uploader server URL (e.g. `http://localhost:3000` or your Vercel deployment URL). Overrides the `STATIC_WEBSITE_UPLOADER_URL` environment variable.\n- `authToken` (string, *optional*): Auth token for authorization (`sk_username.version.signature`). Overrides the `STATIC_WEBSITE_UPLOADER_AUTH_TOKEN` environment variable.\n\n#### Success Response Example\n\n```json\n{\n  \"content\": [\n    {\n      \"type\": \"text\",\n      \"text\": \"### 🎉 Website Published Successfully!\\n\\n- **Project ID**: `044a4449ae784808785e1bb0ca4df372`\\n- **Files Packed**: 3 files\\n- **Shareable Live URL**: [http://localhost:3000/044a4449ae784808785e1bb0ca4df372](http://localhost:3000/044a4449ae784808785e1bb0ca4df372)\\n- **Removal URL**: [http://localhost:3000/project/044a4449ae784808785e1bb0ca4df372/r?t=aa166a](http://localhost:3000/project/044a4449ae784808785e1bb0ca4df372/r?t=aa166a)\\n\\n*Make sure to save the Removal URL or the delete token (`aa166a`) if you want to delete this project later.*\"\n    }\n  ]\n}\n```\n\n---\n\n### 2. `list_sites`\n\nLists all published static websites owned by the authenticated user.\n\n#### Input Schema / Arguments\n\n- `serverUrl` (string, *optional*): Target uploader server URL. Overrides `STATIC_WEBSITE_UPLOADER_URL`.\n- `authToken` (string, *optional*): Auth token for authorization. Overrides `STATIC_WEBSITE_UPLOADER_AUTH_TOKEN`.\n\n#### Success Response Example\n\n```json\n{\n  \"content\": [\n    {\n      \"type\": \"text\",\n      \"text\": \"### 📁 Published Sites (2)\\n\\n- **my-portfolio.zip** (`044a4449ae784808785e1bb0ca4df372`)\\n  - **Live URL**: [http://localhost:3000/044a4449ae784808785e1bb0ca4df372](http://localhost:3000/044a4449ae784808785e1bb0ca4df372)\\n  - **Files**: 3 files\\n  - **Uploaded**: 8/17/2026, 12:00:00 PM\"\n    }\n  ]\n}\n```\n\n---\n\n## Example Usage with AI Agents\n\n### Prompting Your AI Assistant\n\n> *\"List all my uploaded static websites using the `list_sites` tool.\"*\n\nor\n\n> *\"Build a single-page HTML portfolio in `./portfolio-site` and publish it using the `publish_site` tool.\"*\n\n---\n\n## Local Development & Monorepo Build\n\nIf building from the workspace source:\n\n```bash\n# Build the MCP server package\npnpm --filter @yhauxell/static-site-mcp-server build\n```\n\nThis compiles TypeScript source into executable ES Modules under `dist/index.js`.\n","readmeFilename":"README.md","_rev":"1-eacea82a7f877f603f0f38f56cb9698c"}