# Connect an agent

> Add Zeptap's local MCP server to Claude Code, Claude Desktop, Codex, Cursor, Hermes, OpenClaw or any Streamable HTTP client.

Source: https://zeptap.com/docs/agents/connect



Zeptap's MCP server runs inside the Mac app:

| Property    | Value                                                                                                    |
| ----------- | -------------------------------------------------------------------------------------------------------- |
| URL         | `http://127.0.0.1:47801/mcp`                                                                             |
| Transport   | Streamable HTTP (JSON responses, no SSE)                                                                 |
| Server name | `zeptap`                                                                                                 |
| Auth        | None. It accepts connections from this Mac only                                                          |
| Lifetime    | Available while Zeptap is running. Turn on **Open Zeptap at login** to keep it available after a restart |

The client must run on the same Mac as Zeptap.

## One click, from the app [#one-click-from-the-app]

Open **Settings › Connectors** (also the last step of setup) and click **Add** next to each agent. Zeptap makes the change below, then tells you how to pick it up. A config file is backed up once, as `<file>.zeptap-backup`, before Zeptap first edits it. **Remove** undoes the change.

| Agent          | What **Add** does                                                                       | To start using it               |
| -------------- | --------------------------------------------------------------------------------------- | ------------------------------- |
| Claude Code    | `claude mcp add --transport http --scope user zeptap http://127.0.0.1:47801/mcp`        | Start a new Claude Code session |
| Claude Desktop | Adds a stdio entry to `~/Library/Application Support/Claude/claude_desktop_config.json` | Quit and reopen Claude Desktop  |
| Codex          | Adds `[mcp_servers.zeptap]` to `~/.codex/config.toml`                                   | Start a new Codex session       |
| Cursor         | Adds `zeptap` to `~/.cursor/mcp.json`                                                   | Picked up automatically         |
| Hermes         | `hermes mcp add zeptap --url http://127.0.0.1:47801/mcp` (no auth, all tools enabled)   | Start a new Hermes session      |
| OpenClaw       | `openclaw mcp add zeptap --url http://127.0.0.1:47801/mcp --transport streamable-http`  | Restart the OpenClaw gateway    |

An agent shows **Not installed** when its app or CLI isn't on this Mac.

## Manual setup [#manual-setup]

Use these when you manage configs yourself, or for a client not in the list.

<Tabs items="[&#x22;Claude Code&#x22;, &#x22;Claude Desktop&#x22;, &#x22;Codex&#x22;, &#x22;Cursor&#x22;, &#x22;Other clients&#x22;]">
  <Tab value="Claude Code">
    For every project:

    ```sh
    claude mcp add --transport http --scope user zeptap http://127.0.0.1:47801/mcp
    ```

    For one repository, commit a `.mcp.json` at its root:

    ```json title=".mcp.json"
    {
      "mcpServers": {
        "zeptap": {
          "type": "http",
          "url": "http://127.0.0.1:47801/mcp"
        }
      }
    }
    ```
  </Tab>

  <Tab value="Claude Desktop">
    Claude Desktop launches stdio servers only, so it runs Zeptap's own binary with `--stdio`. That process relays each JSON-RPC message to the app's HTTP endpoint, and opens Zeptap if it isn't running.

    ```json title="~/Library/Application Support/Claude/claude_desktop_config.json"
    {
      "mcpServers": {
        "zeptap": {
          "command": "/Applications/Zeptap.app/Contents/MacOS/Zeptap",
          "args": ["--stdio"]
        }
      }
    }
    ```

    Quit and reopen Claude Desktop after editing.
  </Tab>

  <Tab value="Codex">
    ```toml title="~/.codex/config.toml"
    [mcp_servers.zeptap]
    url = "http://127.0.0.1:47801/mcp"
    ```
  </Tab>

  <Tab value="Cursor">
    ```json title="~/.cursor/mcp.json"
    {
      "mcpServers": {
        "zeptap": {
          "url": "http://127.0.0.1:47801/mcp"
        }
      }
    }
    ```
  </Tab>

  <Tab value="Other clients">
    Point any MCP client that supports Streamable HTTP at `http://127.0.0.1:47801/mcp`, with no authentication. A client that launches stdio servers only can run `/Applications/Zeptap.app/Contents/MacOS/Zeptap --stdio` instead.
  </Tab>
</Tabs>

## Verify the connection [#verify-the-connection]

With Zeptap running, this lists the tools:

```sh
curl -s http://127.0.0.1:47801/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
```

A JSON body with 17 tools means the server is up. `Connection refused` means Zeptap isn't running. Then ask the agent to call `screenshot`: an image of the iPhone screen confirms USB is working, and [Troubleshooting](/reference/troubleshooting) covers the errors it can return.
