# shiply — MCP server [shiply](https://shiply.now) is the production backend for anything an agent builds — not just static hosting. An agent can publish any app in a single call — no account, no config — and then give it a real backend over the same MCP server: a SQL database, server functions, SSR, email (send and receive), custom domains, SSL, environment variables, site data, lead capture, and a marketplace to sell the site it built. Flat price, no usage meter. The recommended way to use shiply is the **hosted, remote** MCP endpoint — connect to the live URL, nothing to run. This repo also ships a small **local stdio MCP server** (`npx shiply-mcp` / `node index.mjs`) that wraps shiply's public REST API directly (it is a real local server, not a proxy), for clients or hosts that prefer a local process. Listed on the Official MCP Registry as **`now.shiply/shiply`**. ## Connect **Remote MCP endpoint (Streamable HTTP):** ``` https://shiply.now/mcp ``` Add it to an MCP client (Claude Desktop, Cursor, Claude Code, etc.): ```json { "mcpServers": { "shiply": { "url": "https://shiply.now/mcp" } } } ``` ### Local (stdio) Prefer a local process? Run the bundled server — it calls shiply's public REST API directly (no proxy to the hosted endpoint): ```json { "mcpServers": { "shiply": { "command": "npx", "args": ["-y", "shiply-mcp"] } } } ``` Or clone this repo and run `npm install && node index.mjs`. Set `SHIPLY_API_KEY` (`shp_…`) for owned-site operations; `publish_site` works without it. Local tools: `publish_site`, `site_status`, `rollback_site`, `add_custom_domain`, `check_custom_domain`. ## Auth Auth is **optional**. `publish_site` works anonymously — anonymous sites go live instantly and can be claimed into an account later. Pass a Bearer API key (`Authorization: Bearer shp_…`) to manage owned sites and unlock variables, custom domains, databases, and analytics. Mint a key from the email-code flow in [llms.txt](https://shiply.now/llms.txt). ## Tools The live, authoritative tool list + JSON schemas are always at [`/.well-known/mcp.json`](https://shiply.now/.well-known/mcp.json). By area: - **Publish & versions** — `publish_site` (files → live `*.shiply.now` URL), update an existing site, `rollback`, `delete_site` - **Status & verify** — `site_status`, `list_sites`, `verify_site` (status + SSL + thumbnail in one call) - **Domains & SSL** — `add_domain`, `check_domain`, `set_handle` (vanity subdomain) - **Config** — `set_variable` (encrypted per-user env), site access (password / invite-only) - **Site Data** — read/write/export visitor records and collections - **Databases** — per-site SQL: Cloudflare D1 and Neon Postgres (provision, query, branch) - **Edge functions** — deploy serverless functions alongside the static site - **Email & inbox** — `send_email`, `list_site_inbox`, `set_mailbox`, forward - **Contracts** — create, send, and track e-sign contracts - **Analytics** — `get_analytics` (views, referrers) ## Examples Publish a folder, get a live URL (anonymous, no account): ```jsonc // tool: publish_site { "files": [ { "path": "index.html", "content": "