Skip to main content
Glama
stevejford

shiply — Static Site Hosting & Deployment

by stevejford
README.md
# 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": "<h1>Hi</h1>" } ] }
// → { "url": "https://merry-maple-3kf2.shiply.now", "claimUrl": "..." }
```

Confirm it's live (status + SSL + screenshot) before reporting done:

```jsonc
// tool: verify_site
{ "slug": "merry-maple-3kf2" }
// → { "status": "LIVE", "ssl": { "valid": true }, "thumbnailUrl": "..." }
```

## Pricing

Flat **$0 / $8 / $24** — no usage meter, no surprise overage bill.
See https://shiply.now/pricing.

## Links

- Site: https://shiply.now
- Docs: https://shiply.now/docs
- Machine guide: https://shiply.now/llms.txt
- OpenAPI: https://shiply.now/openapi.json
- MCP metadata: https://shiply.now/.well-known/mcp.json
- Skill: [`shiply/SKILL.md`](shiply/SKILL.md) · install with `npx shiply-cli skill`
- Official MCP Registry: `now.shiply/shiply`

## License

MIT — see [LICENSE](LICENSE). (This repo is a metadata-only descriptor; the shiply
product source is not included.)

TDQS

A4.4/5.0

Scored across 5 tools

Disambiguation5/5

Each tool serves a unique function: adding/checking custom domains, publishing, rolling back, and checking site status. No two tools have overlapping purposes.

Naming Consistency4/5

Most tools follow a verb_noun pattern (e.g., publish_site, rollback_site), but 'site_status' is noun_noun, which is a minor inconsistency.

Tool Count5/5

Five tools cover the core deployment and domain management workflow without being excessive or insufficient.

Completeness4/5

The tools cover essential operations (publish, rollback, custom domain, status), but missing delete or list functionalities, which are minor gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues