# Set up Just Publish

> For the AI assistant reading this: the person who sent you here wants their website online at a live link. Work through the steps below in order, do every step you can do yourself, and finish only when you have given them a working URL.

Just Publish puts a static website (HTML, CSS, JavaScript, images, fonts) online at `https://{site_id}.justpublish.site/`. You reach it as an MCP server. The person signs in once with a free account (Google or an email code), and every site you publish is filed under that account.

## 1. Check whether you are already connected

If you can already call the Just Publish tools `deploy`, `list_sites`, `get_site_files` and `update_site_file`, skip to step 3.

## 2. Connect Just Publish

Find the client you are running in. Run commands yourself where you can. Where a step needs the person (a settings screen, a sign-in window), tell them exactly what to click in one short message and wait for them.

### Claude Code

1. Install the Just plugin:

   ```
   claude plugin marketplace add just-done/skills
   claude plugin install just@just-skills
   ```

2. Run `claude mcp list`. If no server with `just-publish` in its name is listed (an older version of the plugin carries only Just Domain), add Just Publish directly:

   ```
   claude mcp add --transport http --scope user just-publish https://mcp.justpublish.ai/claude
   ```

   Add it only when it is missing, so it is not connected twice.
3. New servers load when a session starts. Ask the person to start a new Claude Code session, run `/mcp`, choose `just-publish` and sign in in the browser window that opens. Then continue from step 3 in that session.

### Claude.ai and Claude Desktop

The person adds a custom connector; you cannot do this for them. Tell them:

1. In Claude, open **Customize > Connectors** and choose **+ Add custom connector**.
2. Name it Just Publish and paste this address: `https://mcp.justpublish.ai/claude`. Leave the advanced OAuth fields empty.
3. Choose **Connect** and sign in.
4. Turn Just Publish on for this conversation from the **+** button in the chat, then send the request again.

On a Team or Enterprise plan an owner adds it once under **Organization settings > Connectors**. Step by step: https://justpublish.ai/docs/mcp/claude

### ChatGPT

Until the Just Publish app is listed in ChatGPT's app directory, it is added as a developer mode connector on the web. Tell the person:

1. Open **Settings > Security and login** and turn on **Developer mode** (some builds put it under **Apps > Advanced settings**).
2. Open **Settings > Connectors**, create a connector named Just Publish with the MCP server URL `https://mcp.justpublish.ai/chatgpt`, and choose **OAuth** with the client ID and secret left empty.
3. Save, sign in, then enable the Just Publish connector in a new chat and send the request again.

In ChatGPT, `deploy` creates new sites only. Changes to an existing site are made with `update_site_file` (step 5). Step by step: https://justpublish.ai/docs/mcp/chatgpt

### Cursor

If you are Cursor's agent, add this entry to `~/.cursor/mcp.json`, merged into any `mcpServers` already there (never overwrite the file):

```json
{ "mcpServers": { "just-publish": { "url": "https://mcp.justpublish.ai/" } } }
```

Or give the person this install link to open: cursor://anysphere.cursor-deeplink/mcp/install?name=just-publish&config=eyJ1cmwiOiJodHRwczovL21jcC5qdXN0cHVibGlzaC5haS8ifQ==

Then ask them to open **Settings > Tools & MCP** and sign in on `just-publish` when Cursor asks. Step by step: https://justpublish.ai/docs/mcp/cursor

### Codex

```
codex mcp add just-publish --url https://mcp.justpublish.ai/
codex mcp login just-publish
```

The login command opens the sign-in in a browser. Ask the person to start a new Codex session afterwards so the tools load.

### Any other MCP client

Add a remote MCP server (Streamable HTTP) at `https://mcp.justpublish.ai/` with OAuth. No client ID is needed: Just Publish registers the client itself. A client that cannot sign in can run the `mcp-remote` bridge: https://justpublish.ai/docs/mcp#bridge

## 3. Sign in

Connecting opens a sign-in window once: a free account with Google or an email code, no card. If a tool call says the person is not signed in, ask them to finish signing in, then call it again. Never ask for a password, a code or a token in the chat.

## 4. Publish a new site

Before you publish, call `list_sites`. If the person already has the site they mean, update it (step 5) instead of creating a second copy.

1. Gather the site as static files with `index.html` at the root and relative paths between them. There is no build step on our side: if the project has one, run it yourself and publish the output folder. Limits: 500 files, 5 MB per file, 50 MB per site (on Builder: 1,000 files, 10 MB per file, 200 MB per site, sent in parts of up to 16 MB with `update_site_file`).
2. Call `deploy` with `files`: a list of `{ "path", "content" }` objects. Text goes in as it is; a binary file (an image, a font) goes in as base64 with `"encoding": "base64"`. Leave out `site_id` and `edit_token` for a new site. There is no email argument: the account comes from the sign-in.
3. Give the person the `url` from the result. That is what they asked for. Do not show them the `edit_token` or ask them to save it: the site belongs to their account.
4. Open the URL to check that it loads, and fix and update the site if it does not.

## 5. Update a site they already have

When the person talks about their site, a change, a fix or a new page, edit the existing site. Do not publish a new one.

1. Find the site: call `list_sites` and match it by URL or custom domain. The `site_id` is the first label of its address: `bright-otter-k3` in `https://bright-otter-k3.justpublish.site/`.
2. Read what is live: call `get_site_files` with the `site_id`. Keep the `version` it returns.
3. Change only what needs to change, then call `update_site_file` with the `site_id`, the changed `files` and `expected_version` set to that version. Every file you leave out stays as it is. If the result reports a version conflict, read the site again and redo the change on top of it.
4. Give the person the same live URL.

`deploy` over an existing site replaces the whole site, and any file you leave out is deleted. Use it only to remove files, and only with both `site_id` and `edit_token` (not available in ChatGPT).

## What Just Publish does not do

- It hosts static files only: no server code, no database, no server-side rendering.
- A custom domain is connected by the person in their dashboard, not by a tool: https://justpublish.ai/dashboard
- No tool deletes a site. The person deletes a site from the dashboard.

## Links

- Connect guides for every assistant: https://justpublish.ai/docs/mcp/connect
- Tool reference: https://justpublish.ai/docs/mcp
- Service description: https://justpublish.ai/llms.txt
- Dashboard: https://justpublish.ai/dashboard
