# Connect AI agent clients to live Odoo with ERPipe

Last updated: 2026-07-22
Canonical: https://erpipe.com/docs/connector
MCP endpoint: https://mcp.erpipe.com/mcp

## Common contract

- Transport: Streamable HTTP
- Authentication: OAuth 2.0 with PKCE and dynamic client registration
- Default scope: erpipe:read
- Write scope: erpipe:write only after the workspace owner selects Grant write
- Odoo-bound tools require an explicit instance key

## Part 1 — Let the AI agent set it up

Copy this one prompt into the AI agent running in the environment you want to configure.
The agent identifies its own client and native MCP setup path. Browser consent and write access remain human checkpoints.

### Universal setup prompt

```text
Set up ERPipe as an MCP server named erpipe in the AI agent or client you are currently running.

Setup guide: https://erpipe.com/content/guides/connect-agent-clis-to-odoo.md
MCP endpoint: https://mcp.erpipe.com/mcp

1. Identify the current client, operating environment, available CLI, and existing MCP configuration. Fetch and read the setup guide above, then follow the matching native recipe and its official vendor reference. If web access is unavailable, use installed help and report that limitation.
2. Inspect before changing anything. Preserve every unrelated server and setting, merge safely, and do not create a duplicate if erpipe already points to the canonical endpoint.
3. Use the client's native OAuth flow. Never request, read, paste, print, or store dashboard cookies, OAuth tokens, or a static bearer token. Stop for browser consent, default to read access, and do not request Grant write unless I explicitly authorize it.
4. Verify the saved registration and authentication state with the client's native status or diagnostic command. If MCP tools are available, call list_instances, choose one explicit instance, call health_check, then make one read-only call.
5. Report exactly what changed, what I must complete, and the validation result without exposing credentials. If this environment cannot complete a step, give me the shortest exact command or click path and wait; do not claim success.
```

## Part 2 — Human setup

Use these client-specific commands and click paths when a person wants direct control of setup.

### ChatGPT

Status: Primary client
Validation: Published setup path

#### Developer Mode setup

```text
Settings → Apps & Connectors → Create
MCP URL: https://mcp.erpipe.com/mcp
```

#### Authenticate

1. Enable Developer Mode and create an app/connector with the workspace MCP URL.
2. Sign in to ERPipe in the browser and approve workspace access.
3. Enable the ERPipe app in the conversation.

Vendor reference: https://platform.openai.com/docs/mcp

### Codex CLI

Status: Recipe ready
Validation: Syntax checked with codex-cli 0.145.0; OAuth E2E pending

#### Terminal

```text
codex mcp add erpipe --url https://mcp.erpipe.com/mcp --oauth-resource https://mcp.erpipe.com/mcp
codex mcp login erpipe
codex mcp get erpipe
```

#### Authenticate

1. Run the login command and complete browser consent.
2. Select Grant write only when lifecycle or governed write tools are required.
3. Use codex mcp get erpipe to confirm the HTTP endpoint and OAuth state.

Vendor reference: https://developers.openai.com/codex/mcp/

### Claude Code

Status: Recipe ready
Validation: Syntax checked with Claude Code 2.1.215; OAuth E2E pending

#### Terminal

```text
claude mcp add --transport http --scope user erpipe https://mcp.erpipe.com/mcp
claude mcp login erpipe
claude mcp get erpipe
```

#### Authenticate

1. Complete the browser OAuth flow opened by claude mcp login.
2. Use --scope project instead of user only when the config should live in .mcp.json.
3. Check claude mcp get erpipe or /mcp before calling tools.

Vendor reference: https://code.claude.com/docs/en/mcp

### Gemini CLI

Status: Recipe ready
Validation: Syntax checked with Gemini CLI 0.46.0; OAuth E2E pending

#### Terminal + Gemini prompt

```text
gemini mcp add --transport http --scope user erpipe https://mcp.erpipe.com/mcp

# Inside Gemini CLI
/mcp auth erpipe
/mcp
```

#### Authenticate

1. Run /mcp auth erpipe to start OAuth discovery and browser consent.
2. Use /mcp to confirm the server, tools, prompts, and resources are connected.
3. Do not add a static Authorization header; ERPipe supports dynamic client registration.

Vendor reference: https://geminicli.com/docs/tools/mcp-server/

### Antigravity CLI

Status: Protocol-compatible
Validation: Official schema checked; agy is not installed on the validation machine

#### ~/.gemini/config/mcp_config.json

```text
{
  "mcpServers": {
    "erpipe": {
      "serverUrl": "https://mcp.erpipe.com/mcp"
    }
  }
}
```

#### Authenticate

1. Start agy and open /mcp to reload and inspect the server.
2. Complete the OAuth action shown by the MCP manager; ERPipe supports DCR.
3. Keep serverUrl: Antigravity CLI does not accept Gemini's legacy url/httpUrl keys.

Vendor reference: https://antigravity.google/docs/mcp

### Grok

Status: OAuth verified
Validation: Native OAuth verified 2026-07-21; syntax rechecked with Grok 0.2.106

#### Terminal + Grok TUI

```text
grok mcp add --transport http --scope user erpipe https://mcp.erpipe.com/mcp
grok mcp doctor erpipe

# Inside Grok TUI
/mcps → erpipe → i → browser consent → r
```

#### Authenticate

1. Open /mcps, select erpipe, and press i to authenticate.
2. Approve browser consent, then press r to refresh the server.
3. Use grok mcp doctor erpipe; tokens remain Grok-managed in its OAuth store.

Vendor reference: https://docs.x.ai/build/features/mcp-servers

## Validate after OAuth

1. Call list_instances and choose an explicit instance key.
2. Call health_check with that instance key.
3. Run one read-only tool such as search_records before enabling writes.
4. For write access, reconnect and select Grant write; the target connection must also allow writes and may require owner approval.

## Forbidden patterns

- Do not use dashboard cookies as agent credentials.
- Do not paste static bearer tokens into shared config.
- Do not use the removed /{slug}/mcp hosted route.
- Do not assume a default Odoo instance.
