# Odiseo

- type: mcp
- industry: marketing
- roles: seo-specialist
- source: https://github.com/odiseohelp-app/cli
- license: MIT (link-and-summary-only)
- install: remote (streamable-http): https://www.odiseo.help/api/mcp
- needs_credentials: true
- writes_external: true
- updated_at: 2026-10-15T10:15:30Z

SEO layer for agents: research, content, QA, approvals and publishing via MCP OAuth.

---

Republished from https://github.com/odiseohelp-app/cli/blob/HEAD/README.md under MIT. The original is authoritative.

# Odiseo CLI

Connect Codex, Claude Code, Cursor, or OpenClaw to the
[Odiseo SEO MCP](https://odiseo.help/mcp) from one command.

Odiseo gives an agent the tools to research a site, build briefs and content
plans, create and review articles, and operate the publication workflow inside
the organization you authorize.

## Requirements

- Node.js 20 or newer
- An Odiseo account whose organization has MCP access
- One supported client: Codex, Claude Code, Cursor, or OpenClaw

## Quickstart

Authenticate in the browser with the OAuth device flow:

```bash
npx odiseo-cli login
```

Then install Odiseo in your client:

```bash
npx odiseo-cli mcp install cursor
```

Replace `cursor` with `codex`, `claude`, or `openclaw`. Finally, verify the
credential and MCP endpoint:

```bash
npx odiseo-cli mcp doctor
```

The login command shows a short code and opens the Odiseo approval page. The
resulting session is stored in `~/.config/odiseo/config.json` with owner-only
permissions. The install command places that bearer credential in the selected
client's user-level MCP configuration.

## Commands

### `odiseo login`

Starts the OAuth device authorization flow:

```bash
odiseo login
odiseo login --no-open
```

For local development:

```bash
odiseo login --base-url http://localhost:3000 --no-open
```

Advanced users can authenticate with an existing Odiseo MCP API key instead:

```bash
odiseo login --key seoap_your_key
```

API keys can be scoped to a site and a narrower permission set. Browser OAuth
and device authorization represent the complete organization membership.

### `odiseo mcp install`

Installs an authenticated Streamable HTTP server definition:

```bash
odiseo mcp install codex
odiseo mcp install claude
odiseo mcp install cursor
odiseo mcp install openclaw
```

The default endpoint is `https://odiseo.help/api/mcp`. Override it for a local
or self-hosted environment:

```bash
odiseo mcp install cursor --endpoint http://localhost:3000/api/mcp
```

Client behavior:

| Client | Installation method |
| --- | --- |
| Cursor | Merges `odiseo` into `~/.cursor/mcp.json` |
| Codex | Replaces only `[mcp_servers.odiseo]` in `~/.codex/config.toml` |
| Claude Code | Runs `claude mcp add` in user scope |
| OpenClaw | Runs `openclaw mcp set` with Streamable HTTP transport |

Cursor and Codex config files are written atomically with mode `0600`. Claude
Code and OpenClaw own and protect their respective configuration stores.

### `odiseo mcp doctor`

Sends a real MCP `initialize` request with the stored credential:

```bash
odiseo mcp doctor
odiseo doctor
```

It reports the MCP server name, protocol version, and latency. It also gives
specific guidance for expired credentials, missing subscription access, and
HTTP authentication failures.

### `odiseo logout`

Removes the credential stored by this CLI. Client configurations are left in
place so you can re-run `odiseo login` and `odiseo mcp install <client>`
without losing unrelated settings.

## Connect without the CLI

Every supported client can also use Odiseo's native MCP OAuth discovery. Add
only this URL:

```text
https://odiseo.help/api/mcp
```

For example:

```bash
codex mcp add odiseo --url https://odiseo.help/api/mcp
codex mcp login odiseo

claude mcp add --transport http odiseo https://odiseo.help/api/mcp

openclaw mcp set odiseo \
  '{"url":"https://odiseo.help/api/mcp","transport":"streamable-http","auth":"oauth"}'
openclaw mcp login odiseo
```

Cursor users can use the **Add to Cursor** button on
[odiseo.help/mcp](https://odiseo.help/mcp).

## Security

- The CLI never prints a saved bearer token.
- File writes are atomic and use owner-only permissions where supported.
- Child processes are launched directly, never through a shell.
- OAuth/device credentials grant access to the authorized organization.
- Publishing and approval tools remain high-impact actions: agents should call
  them only after an explicit user instruction.
- Use a site-scoped `seoap_` API key when a narrower long-lived credential is
  preferable.

If a credential is exposed, revoke it in Odiseo and run `odiseo login` again.

## Development

```bash
npm install
npm run typecheck
npm test
```

Build output is generated in `dist/`. The package has no runtime dependencies.

## License

MIT
