> For the complete documentation index, see [llms.txt](https://wishlist.nativeappco.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wishlist.nativeappco.com/install-and-setup/installing-using-ai-tools/connect-with-mcp.md).

# Connect AI to Fish Wishlist (MCP)

Give Claude, ChatGPT, Gemini, Codex, Cursor or any MCP client a live connection to your Fish Wishlist settings, translations and theme files.

Fish Wishlist runs an [MCP](https://modelcontextprotocol.io) server, so the AI coding agent you already use on your computer can help you install and tune the app on your theme. A connected agent can read and change the app settings (including custom CSS and the add-to-cart event handler), read and change translations, read your theme files, read this help center and edit the wishlist page templates.

The agent **cannot change your theme**: the app has no theme write access. Instead it reads your theme files and tells you exactly which file to open and what to paste, for example to add the header wishlist icon, the "Add to wishlist" icon on product cards, or custom CSS.

To have an AI tool install Fish Wishlist on your theme from start to finish, use the [setup instructions](/install-and-setup/installing-using-ai-tools/agent-setup-guide.md) as well. See [Install with an AI tool](/install-and-setup/installing-using-ai-tools/install-with-ai.md).

The connection is **yours to control**. Nothing can connect on its own: every agent has to be approved by a user who is logged into the store's Fish Wishlist admin, gets only the permissions chosen at approval, expires after a lifetime you pick, and can be revoked at any time.

Supported clients include **Claude** (web, desktop and mobile), **ChatGPT**, the **Gemini app**, **Claude Code**, **Codex**, **Cursor**, **VS Code** and anything else that speaks MCP over Streamable HTTP with OAuth 2.1.

### Step 1: enable agent access

Open **Developer → AI agents**, tick **Let me connect my own AI agents to this store**, pick a **Connection lifetime** (7, 30 or 90 days) and save.

### Step 2: connect your agent

After saving, the **Connect an agent** block shows the setup for each client. The server URL is **specific to this store**, so the same agent can be connected to several stores from different projects without mixing credentials.

{% hint style="info" %}
**Two URLs.** The store URL `https://fish.nativeappco.com/mcp/<store-handle>` binds the connection to one store and is what the admin shows. The universal URL `https://fish.nativeappco.com/mcp` is the one used by connector directories and by clients that let you pick the store when you sign in: the approval page asks for your store's `.myshopify.com` address, and you approve inside that store's admin. Both lead to the same approval step.
{% endhint %}

{% tabs %}
{% tab title="Claude" %}
In Claude on the web, in the desktop app or on mobile, open **Customize → Connectors**, click **Add custom connector**, paste the URL and click **Add**. Then click **Connect**: a Fish Wishlist tab opens to approve the connection.

On a Team or Enterprise plan an Owner adds the connector under **Organization settings → Connectors**; each member then clicks **Connect** and approves from their own store admin.
{% endtab %}

{% tab title="ChatGPT" %}
In ChatGPT on the web open **Settings → Apps & Connectors → Advanced settings** and turn on **Developer mode**. Back in **Apps & Connectors** click **Create**, give the app a name, paste the URL, choose **OAuth** as the authentication and create it. Click **Connect**: a Fish Wishlist tab opens to approve the connection.

Developer mode is available on paid ChatGPT plans in the browser. In a Business or Enterprise workspace an admin has to allow it first. Without developer mode, ChatGPT treats a server as a research source and shows no Fish Wishlist tools.
{% endtab %}

{% tab title="Gemini" %}
Open [gemini.google.com/devmode](https://gemini.google.com/devmode) with your Google account, click **Create new**, paste the URL as the **MCP server URL** and click **Next**. Confirm the notice and click **Connect**: a Fish Wishlist tab opens to approve the connection. Then name the app and save it.

This works with a personal Google account in the browser, and Gemini needs **Keep Activity** turned on to use custom apps.
{% endtab %}

{% tab title="Claude Code" %}
Run the command in your terminal, then open the `/mcp` menu in Claude Code and authenticate the `fish-wishlist` server.

```bash
claude mcp add --transport http fish-wishlist https://fish.nativeappco.com/mcp/<store-handle>
```

{% endtab %}

{% tab title="Codex" %}

```bash
codex mcp add fish-wishlist --url https://fish.nativeappco.com/mcp/<store-handle>
codex mcp login fish-wishlist
```

Or add it to `~/.codex/config.toml`:

```toml
[mcp_servers.fish-wishlist]
url = "https://fish.nativeappco.com/mcp/<store-handle>"
```

{% endtab %}

{% tab title="Cursor" %}
Add the server to `.cursor/mcp.json` in your project (or `~/.cursor/mcp.json` for every project), then open **Cursor Settings → MCP & Integrations** and connect it.

```json
{
  "mcpServers": {
    "fish-wishlist": { "url": "https://fish.nativeappco.com/mcp/<store-handle>" }
  }
}
```

{% endtab %}

{% tab title="VS Code" %}
Add the server to `.vscode/mcp.json` in your workspace and start it from the MCP view.

```json
{
  "servers": {
    "fish-wishlist": { "type": "http", "url": "https://fish.nativeappco.com/mcp/<store-handle>" }
  }
}
```

{% endtab %}

{% tab title="Other" %}
Any MCP client that supports Streamable HTTP with OAuth 2.1 (PKCE and dynamic client registration) can connect with the server URL shown in Developer → AI agents. In Claude.ai or Claude Desktop add it under **Settings → Connectors → Add custom connector**.
{% endtab %}
{% endtabs %}

`<store-handle>` is the first part of the store's `myshopify.com` domain; the exact URL is shown in the admin.

### Step 3: approve the connection

The first time the agent connects, your browser opens a Fish Wishlist page describing the agent and the permissions it asks for. Click **Open Fish Wishlist in Shopify admin to approve**: the store's admin opens in a new tab with the approval form.

Choose the permissions and click **Approve**. **Read** is selected by default; enable **Write** only when you want the agent to change settings, translations or page templates.

Return to your terminal or editor: the agent is connected. Requests that are not approved within 15 minutes expire; run the connect step again.

| Permission | Allows                                                                                                                                                 |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Read       | Read settings, translations, theme files, page templates and this help center; check what is already installed in the theme                            |
| Write      | Change settings (including custom CSS and the add-to-cart event handler), translations and the wishlist page templates; mark the installation complete |

### What to ask the agent

* "Set up Fish Wishlist on my theme." The agent checks the theme and shows a checklist: what is already in place, what is next, with the theme editor link for each step. It then walks you through the steps one at a time and re-checks after each. In Claude Code this is also the `/mcp__fish-wishlist__setup` command; in Claude Desktop pick **setup** from the **+** menu under fish-wishlist.
* "Add the wishlist button to my product cards." (`/mcp__fish-wishlist__product_cards`) The agent finds the snippet that renders your product cards and gives you the exact file, line and code.
* "Check what Fish Wishlist already has in my live theme and tell me what is missing."
* "Show me where to add the wishlist icon in my header and give me the code."
* "The cart drawer does not refresh after adding from the wishlist. Read my theme's cart JavaScript and write the cart refresh code."
* "Translate the wishlist drawer into German and Dutch."
* "Restyle the wishlist drawer buttons to match my theme's primary button."
* "Make the shared wishlist page use my theme's product card layout."

The agent reads the help center, the CSS selector reference and your theme files through the connection, and tells you what it changed in the app and what you still have to do in the theme editor. If an agent ignores the Fish Wishlist rules, ask it to call the `get_guidelines` tool first.

**Theme changes.** Fish Wishlist cannot write to your theme, so by itself the agent tells you what to paste where. If the same agent is also connected to Shopify's own MCP server, or works on a copy of your theme with Shopify CLI, it can apply the changes itself: every setup step comes with the exact file and code. It asks you once which way you prefer, and must not touch your live theme unless you say so. Once the required pieces are in place, an agent with **Write** permission can mark the installation complete, the same as the button on the Setup page.

### Managing connections

**Developer → AI agents → Connected agents** lists every approved agent with its permissions, connection date, last use and expiry.

* **Revoke** disconnects one agent immediately. Its next request fails and it has to be approved again.
* **Connection lifetime** is the maximum age of a connection. After it, the agent has to be approved again.
* **Disabling agent access** revokes every connected agent at once.

Every tool call made by an agent is recorded (tool name, outcome and duration, never the content) and kept for 90 days.

### Troubleshooting

* **"Couldn't reach the MCP server"** (Claude): the URL has a typo or ends in `/sse`. Use the URL exactly as shown in **Developer → AI agents**, with the default transport.
* **No Fish Wishlist tools appear in ChatGPT**: Developer mode is off. Turn it on under **Settings → Apps & Connectors → Advanced settings** and create the app again.
* **Gemini cannot connect to the custom app**: turn on **Keep Activity** in your Google account's Gemini settings, then connect again.
* **The approval page asks for your store address**: you connected with the universal URL. Enter your store's `.myshopify.com` address (for example `my-store.myshopify.com`); the approval then opens in that store's admin.
* **"MCP server fish-wishlist already exists in local config"** (Claude Code): remove the old entry with `claude mcp remove fish-wishlist`, then run the connect command again.
* **"Enable AI agent access first"** when approving: the store has not enabled the feature, or it was disabled after the request was made. Enable it and run the connect step again.
* **"This request is for another store"**: the agent is connecting to a different store than the admin you are logged into. Open the approval link from that store's admin.
* **The agent reports 401 or re-authenticates**: the connection expired or was revoked. Approve it again.
* **Several stores**: use each store's own URL. Connecting the same server name to the same URL from two projects shares one connection, which is expected.
