
demo.st
Spins up static sites from zip files you send over MCP. You reserve a subdomain, push your HTML/CSS/JS bundle through the protocol, and get back a live URL served through Nginx. No server-side execution, no databases, no PHP. Useful when you want Claude to generate a complete static site (landing page, documentation, portfolio) and deploy it immediately without leaving the conversation. The streamable-http transport means it handles file uploads directly. Think of it as a deployment target for any workflow where Claude is authoring front-end code and you want to see it live in seconds rather than explaining how to use Netlify or Vercel.
- tools
- 13
- auth
- Secret needed
- transport
- HTTP
- last updated
- Jul 9, 2026
Install
From registry metadata$ npx add-mcp https://demo.st/mcp --name demost --header 'Authorization: Bearer ${API_TOKEN}'Run in your terminal. add-mcp asks which agents to add it to, then asks for each value it needs. Add -g to install it for every project.
Review the command, arguments and environment values before installing. MCP servers run with your local permissions.
Other ways
Claude Code
$ claude mcp add --transport http demost https://demo.st/mcp --header 'Authorization: YOUR_AUTHORIZATION'Run in your terminal. Add --scope user to make it available in every project.
Tools
Verified live · 13 toolsVerified live against the running server on Nov 6, 2026.
check_subdomain_availabilityCheck if a subdomain name is available on demo.st (e.g. "my-site" → my-site.demo.st).1 params
Check if a subdomain name is available on demo.st (e.g. "my-site" → my-site.demo.st).
name*stringreserve_subdomainReserve a subdomain for the logged-in account. One subdomain per account.1 params
Reserve a subdomain for the logged-in account. One subdomain per account.
subdomain*stringupload_siteUpload a .zip as site content for your reserved subdomain. Easiest for agents: zip_base64 (base64-encoded zip). Or file_url (public URL to zip). Or file_path (local path, when MCP runs locally).3 params
Upload a .zip as site content for your reserved subdomain. Easiest for agents: zip_base64 (base64-encoded zip). Or file_url (public URL to zip). Or file_path (local path, when MCP runs locally).
file_pathstringfile_urlstringzip_base64stringclear_siteRemove deployed site content from your subdomain. Subdomain remains reserved.
Remove deployed site content from your subdomain. Subdomain remains reserved.
No parameters. Call it with no arguments.
release_subdomainRelease your reserved subdomain. Deletes the reservation, any deployed site, and all document DB data for that site.
Release your reserved subdomain. Deletes the reservation, any deployed site, and all document DB data for that site.
No parameters. Call it with no arguments.
get_site_api_keyGet (or create) the public site API key for your reserved subdomain. Embed this key in your static site and call https://api.demo.st/v1 with Authorization: Bearer <key>. Tenant is scoped by the key — never share another site's key.
Get (or create) the public site API key for your reserved subdomain. Embed this key in your static site and call https://api.demo.st/v1 with Authorization: Bearer <key>. Tenant is scoped by the key — never share another site's key.
No parameters. Call it with no arguments.
rotate_site_api_keyRotate the public site API key. The old key stops working immediately; update your site with the new key.
Rotate the public site API key. The old key stops working immediately; update your site with the new key.
No parameters. Call it with no arguments.
list_collectionsList document collections for your site (api.demo.st document store).
List document collections for your site (api.demo.st document store).
No parameters. Call it with no arguments.
create_collectionCreate a document collection (lowercase letter start; letters, numbers, underscores; max 63 chars). Max 20 collections per site.1 params
Create a document collection (lowercase letter start; letters, numbers, underscores; max 63 chars). Max 20 collections per site.
name*stringdelete_collectionDelete a document collection and all of its records.1 params
Delete a document collection and all of its records.
name*stringlist_recordsList records in a document collection.3 params
List records in a document collection.
collection*stringlimitintegeroffsetintegerupsert_recordCreate or update a JSON record in a collection. Pass data as an object. Optional id to upsert a specific record.3 params
Create or update a JSON record in a collection. Pass data as an object. Optional id to upsert a specific record.
collection*stringdata*objectidstringdelete_recordDelete a record from a document collection.2 params
Delete a record from a document collection.
collection*stringid*stringSponsors
Readme
demo.st
Demo stage for vibe-coded prototypes. Reserve a subdomain, publish from your agent via MCP, get a clean link like yourproject.demo.st. Static hosting only (Nginx; no PHP, no databases).
- Site: https://demo.st
- MCP endpoint: https://demo.st/mcp
Cursor plugin
This repo is a Cursor plugin. Install it from the Cursor Marketplace (after it’s published) or add the repo in Cursor to use the demo.st MCP server.
Getting your MCP token
Authenticated tools (reserve subdomain, upload zip, clear, release) require a Bearer token:
Details
- Repository
- github.com/demo-stage/demo.st
- Website
- demo.st
- Category
- Documents & Knowledge
- Transport
- HTTP
- Auth
- Required
- Registry
- MCP registry, active
- Tools verified
- Nov 6, 2026