Host and deploy a website from Claude Code

Claude Code can deploy a website in one step once Ginta's MCP server is added. Run claude mcp add --transport http ginta https://ginta.app/mcp, sign in once with /mcp, and ask Claude Code to publish: it sends hand-written pages straight to Ginta, or zips your Vite, Astro or Next build and uploads it through a short-lived link. The site is live at <name>.ginta.page as soon as the upload finishes, and on your own domain on paid plans. No GitHub repo, no Vercel or Netlify account, no API key to paste.

We make Ginta. The Claude Code commands below come from Anthropic's Claude Code docs, checked on 19 October 2026.

Add Ginta to Claude Code

claude mcp add --transport http ginta https://ginta.app/mcp

Then sign in, either way:

A Ginta window opens: sign in (or create a free account) and press Allow. Tokens refresh by themselves; claude mcp logout ginta signs out.

Scopes. The default, --scope local, keeps Ginta for you in this project only. Put the flag after the name:

claude mcp add --transport http ginta --scope user https://ginta.app/mcp     # every project on this machine
claude mcp add --transport http ginta --scope project https://ginta.app/mcp  # shared with the team through .mcp.json

The project scope writes this to .mcp.json, which you can also add by hand:

{ "mcpServers": { "ginta": { "type": "http", "url": "https://ginta.app/mcp" } } }

Already added Ginta as a connector in claude.ai? If you sign in to Claude Code with that claude.ai subscription, it shows up in /mcp by itself (not when you use an API key).

Two ways to publish

Hand-written pages. For a few HTML, CSS and JavaScript files, Claude Code calls create_site with the files (index.html required) and later update_site with small find-and-replace edits, so it never resends whole files. Ask it to read Ginta's guide first (get_guide) if you want Ginta's design rules, free photos and form block; for code you wrote yourself, topic: "developers" covers builds and APIs.

A framework build. For a Vite, Astro, SvelteKit or Next.js static export, ask:

Build the project and deploy dist/ to Ginta as a new site called my-app.

Claude Code calls create_site without files (or upload_files without files for a site that already exists). Ginta answers with an upload link (it works for 15 minutes and 3 uploads) and the exact command, which Claude Code runs:

cd dist && zip -qr ../site.zip . && curl -sS --fail-with-body -X POST \
  -H "Content-Type: application/zip" --data-binary @../site.zip "https://ginta.app/api/upload/<token>"

The answer is JSON: the new version, the changed and deleted files, and anything skipped (hidden files, unsupported types). The bundle never passes through the model's context, so a large build costs no tokens. A zip of the folder itself (zip -r site.zip dist) works too: Ginta unwraps the single top folder. With replace_all, the upload becomes the whole site and old files are removed; without it, files are added or replaced.

For Next.js, set output: "export" and deploy out/. Every create, change and upload carries a short note from Claude Code about what changed and why, which the site's owner sees in Ginta's editor.

Routing: clean URLs, 404 and _redirects

/old-menu    /menu          301
/blog/:slug  /news/:slug    301
/*           /index.html    200

The last line is the single-page-app fallback: a 200 rule only applies when no file matches. Search engines see the HTML Ginta sends, so prerender your pages if SEO matters. Every site has its own origin, so root-relative paths like /assets/app.js work. All file types and rules: files and routing.

APIs without exposing keys

A page may only fetch its own address, and nothing in page code is secret. For an outside API, ask Claude Code to store the key with manage_secrets (encrypted, write-only: nobody can read it back) and add a connection with manage_connections. Your JavaScript then calls /_ginta/api/<name>/… and Ginta adds the key and forwards the call to that API only. Details and limits: secrets and connections.

Scripts from other websites: a trusted list (analytics, Stripe.js, Calendly, chat widgets, video players) on every plan, any https:// script on Hosting, Hosting Plus, Hosting Studio, Pro and Agency (from €5 a month).

When Ginta is the wrong choice

Ginta hosts static files plus its own parts (forms, bookings, shop, menu, blog). It doesn't run your server code: no API routes, server-side rendering or database of your own. For a real app backend, Vercel, Netlify or Cloudflare Workers fit better. Ginta fits a business website or a static app that should go live quickly, that someone non-technical may keep up to date later (in Ginta's editor, without Claude Code), and that needs forms or bookings without extra services.

Limits and price

Deploying from Claude Code uses no Ginta credits. The Free plan includes 20 websites at their Ginta address with a small "Made with Ginta" badge. Your own domain comes with paid plans (from €5 a month): Hosting, €5 a month (50 websites, 3 domains, no badge), is the plan for people who build with their own AI. Files per site, total size, file size, API calls and MCP writes per plan are on limits; every change is a version, and restore_version undoes one. All plans: pricing.

Sources

Questions

Can Claude Code deploy a website by itself?

It can build one and run deploy commands, but it needs somewhere to deploy to, usually with your own account and credentials for that host. With Ginta's MCP server added, it publishes through Ginta's tools after you sign in once.

Is there free hosting for a Claude Code project?

Yes: Ginta's Free plan publishes up to 20 websites at their ginta.page address, with the badge and no custom domain. Own domains start at €5 a month.

Which frameworks work?

Anything that builds to static files: plain HTML, Vite (React, Vue, Svelte), Astro, Next.js with output: "export", SvelteKit with the static adapter, Eleventy, Hugo. Server routes and SSR don't run on Ginta.

Can I connect my own domain from Claude Code?

Yes, on paid plans (from €5 a month). Ask it to connect the domain: connect_domain returns the exact DNS steps for your provider, and asked again, it checks whether the site is live there.

Can someone else edit the site later?

Yes. The site lives in your Ginta account: you can change it in Ginta's editor by asking in plain words, and give a helper their own sign-in at the site's address + /admin for its parts.

Does it work in Codex or Cursor too?

Yes, it's the same server: deploy a website from Codex or Cursor. Non-developers can use Claude on the web: build a website with Claude. All tools: website builder MCP.

Add Ginta to Claude Code

One command, then /mcp to sign in. Free to start, no Ginta credits used.

Setup steps