# Install Carnival

Carnival is an MCP server at `https://carnival-staging.dev/mcp`. To connect it, add it to your agent, sign in to Carnival and choose **Allow**. It takes a minute.

You need a free Carnival account: signing in the first time creates one. Accounts are for people 18 or older, signing up from the US, Canada or Mexico.

## Muse

Muse connects Carnival as a custom connector.

1. Open a new Muse chat and paste the prompt below.
2. Muse shows a card with an **Allow** button. Select it, then sign in to Carnival and choose **Allow** there too.
3. Muse calls `carnival_status` and shows you the result. Carnival is connected.

```text
Connect Carnival as a custom connector. It is an MCP server at https://carnival-staging.dev/mcp (Streamable HTTP: POST JSON-RPC, protocol 2025-06-18, header "Accept: application/json" is fine; every reply is one JSON object; GET returning 405 means the server is up). Auth is OAuth 2.1 with PKCE and dynamic client registration: read https://carnival-staging.dev/.well-known/oauth-protected-resource/mcp, then the authorization-server metadata it lists, and use exactly those endpoints; never guess an endpoint. Give me the Connect button so I can sign in. Allowed host: carnival-staging.dev only. Then prove the connection by calling carnival_status and showing me the result. Read https://carnival-staging.dev/SKILL.md and follow its rules; before publishing anything, show me the file list and ask me to confirm.
```

## Muse Code

These steps were checked with Muse Code 1.4.14 (`muse --version` shows `1.4.14-R7309.1`).

1. Add Carnival to Muse Code's settings file, `~/.config/muse/settings.json` (or `$XDG_CONFIG_HOME/muse/settings.json` if you set that variable). If the file exists, add `mcpServers` to it and keep the rest of the file; if it already has `mcpServers`, add the `carnival` entry next to the servers there. Muse Code doesn't read a project's `.mcp.json`.

   ```json
   {
     "mcpServers": {
       "carnival": { "type": "streamable-http", "url": "https://carnival-staging.dev/mcp" }
     }
   }
   ```

2. Run `muse mcp login carnival`. It prints a sign-in link and waits at "Press Enter to open it in your browser": press Enter (or open the link yourself), sign in to Carnival and choose **Allow**. The consent page names the app as a program on your computer (`127.0.0.1`): that is Muse Code. If the tab hangs after Allow, close it; the login is done.
3. Start Muse Code in your project (run `muse` there) and ask it to call `carnival_status`. It shows your sites and free slots. `carnival_status` is a tool Muse Code calls, not a command for your shell.

Each `muse mcp login` makes a new connection, and Muse Code uses the newest. Disconnect the old ones from your account page (below).

Carnival connects through OAuth sign-in, as above. A fixed `Authorization` header with a token works only if your account page offers **Access tokens**.

## Claude, ChatGPT and other MCP clients

Any MCP client that supports remote servers with OAuth sign-in can connect.

1. Add a custom connector (or remote MCP server) named Carnival, with the URL `https://carnival-staging.dev/mcp`. Leave any client ID and client secret fields empty.
2. Connect. The client registers itself and opens Carnival's sign-in: sign in and choose **Allow**.
3. Ask the agent to call `carnival_status`.

For client developers: Streamable HTTP with one JSON reply per request; OAuth 2.1 with PKCE (`S256`); dynamic client registration or a Client ID Metadata Document; scopes `sites:read` and `sites:write` (no `scope` grants both). Discovery starts at `https://carnival-staging.dev/.well-known/oauth-protected-resource/mcp`. The endpoints, the transport and `curl` checks are in [Read this first](https://carnival-staging.dev/muse.md).

## After connecting

Agents: read [the Carnival skill](https://carnival-staging.dev/SKILL.md) and follow its rules. Before publishing anything, show the user the file list and ask them to confirm. [Read this first](https://carnival-staging.dev/muse.md) has the whole recipe.

Try asking your agent:

- "Build a one-page website for my piano tuning business with my rates and phone number, and publish it on Carnival."
- "How much time is left on my Carnival sites?"
- "My Carnival deploy was rejected. What's wrong and how do we fix it?"

## What you allow

The consent page shows which app is asking, and whether Carnival has verified it. If you allow it, the agent can publish and update your sites (free: 3 live, 7 days each) and see their status, clocks and logs. It can't end your sites or add time: only you can, from [your dashboard](https://carnival-staging.dev/dashboard).

Allow only if you started this connection yourself, just now. Enter Carnival sign-in codes only at carnival-staging.dev. Carnival emails you when a new agent connects, with a link to disconnect it.

## Disconnect an agent

Go to [Connected agents](https://carnival-staging.dev/account#agents) on your account page and select **Disconnect**. The agent can no longer publish or check your sites; sites it already published stay live.

## If it doesn't connect

See [Troubleshooting: connecting](https://carnival-staging.dev/docs/troubleshooting.md#connecting). Still stuck? Email support@carnival.dev.
