connect

connect is a command for coding agents from Viindoo/odoo-mcp-client. It costs 33 tokens per session (2,562 once invoked), scanned B, original, MIT.

A setup command that connects Claude Code to an Odoo Semantic MCP server using a server address and API key. Odoo is business software, and MCP is a way for an AI tool to call an external service.

In plain words
What is it for?
Registering the Odoo Semantic server, supplying its API key, and configuring the connection for use in Claude Code.
Why use it?
It handles the connection details needed when the server does not load correctly after installation. It also checks whether the server can be reached.

Command

Part of the odoo-semantic-mcp plugin — 1 command shipped together

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add commands/viindoo/odoo-mcp-client/connect
Clone the repo
git clone --depth 1 https://github.com/Viindoo/odoo-mcp-client

Or install odoo-semantic-mcp, the plugin that ships this one along with the rest of its 1 command.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for connect

README.md
[![agentmods](https://agentmods.dev/badge/commands/viindoo/odoo-mcp-client/connect.svg)](https://agentmods.dev/commands/viindoo/odoo-mcp-client/connect)
Your own site
<a href="https://agentmods.dev/commands/viindoo/odoo-mcp-client/connect"><img src="https://agentmods.dev/badge/commands/viindoo/odoo-mcp-client/connect.svg" alt="Measured on agentmods" height="20"></a>
Per session 33 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 2,562 The whole file, excluding the scripts and references it only reads on demand.
Security scan B 2 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00033 $0.02562
Opus 5 $0.00016 $0.01281
Sonnet 5 $0.00007 $0.00512
Haiku 4.5 $0.00003 $0.00256

Measured yesterday against content hash 4e06dda88eab, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade B, and why

connect scanned grade B with 2 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Reads agent configuration directoriesmediumAgent snooping

.claude/, .codex/, .gemini/ hold keys, settings and other credentials a mod has no legitimate need for.

Ask the user: `Auto-allow every mcp__odoo-semantic__* tool in ~/.claude/settings.json? [Y/n]`.

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

(anthropics/claude-code#46426 - "not planned"). Use `curl` via the `Bash`
plugins/odoo-semantic-mcp/commands/connect.md · 183 lines

How it starts

The opening of the file, as written. The whole thing — 183 lines — stays where its author put it; the contents beside it link to each section on GitHub.

/odoo-semantic-mcp:connect

Interactive command to connect Claude Code to your Odoo Semantic MCP server.

Run this after claude plugin install - userConfig values are not always prompted at install time. Without this step the odoo-semantic-mcp plugin's .mcp.json template cannot resolve and the odoo-semantic MCP server silently fails to load.

Steps for the AI agent

  1. Ask user for MCP server URL. Default: https://odoo-semantic.viindoo.com/mcp.

  2. Ask user to paste their API key. Must match ^osm_[A-Za-z0-9_-]+$. Re-prompt on format mismatch. Do not echo the key back in plain text.

  3. Run the following with the Bash tool (substitute <URL> and <KEY>):

    claude mcp add --scope user --transport http odoo-semantic <URL> \
      --header "X-API-Key: <KEY>"
    

    If claude mcp add reports the name already exists, run claude mcp remove odoo-semantic --scope user first, then retry. If exit code is non-zero for any other reason, report stderr to the user and stop.

    Then harden the entry against a hung server: Claude Code's default per-tool-call timeout (MCP_TOOL_TIMEOUT) is ~28 hours, so if OSM accepts the connection but stalls mid-request the agent would block effectively forever instead of falling back to reading source. claude mcp add has no timeout flag, so set a 90s (90000 ms) per-server timeout directly in ~/.claude.json (the file claude mcp add --scope user just wrote to). Run this exact block with the Bash tool - it backs up, refuses to corrupt invalid JSON, only touches the odoo-semantic entry, and is idempotent. Copy the fenced block verbatim without re-indenting - the heredoc body must start at column 0.

    CLAUDE_JSON="$HOME/.claude.json"
    python3 - "$CLAUDE_JSON" <<'PY'
    import json, os, sys, time, shutil
    p = sys.argv[1]
    if not os.path.exists(p):
        print(f"⚠ {p} not found - skipping timeout hardening (entry may be in another scope).")
        sys.exit(0)
    try:
        with open(p) as f:
            data = json.load(f)
    except json.JSONDecodeError as e:
        print(f"✗ {p} is not valid JSON ({e}). Refusing to overwrite.", file=sys.stderr)
        sys.exit(2)
    srv = (data.get("mcpServers") or {}).get("odoo-semantic")
    if not isinstance(srv, dict):
        print("⚠ mcpServers.odoo-semantic not found in ~/.claude.json - skipping (re-run step 3 first).")
        sys.exit(0)
    if srv.get("timeout") == 90000:
        print("✓ odoo-semantic timeout already 90000 ms - no change.")
        sys.exit(0)
    shutil.copy2(p, f"{p}.bak.{int(time.time())}")
    srv["timeout"] = 90000
    with open(p, "w") as f:
        json.dump(data, f, indent=2)
        f.write("\n")
    print("✓ Set odoo-semantic per-tool-call timeout to 90000 ms in ~/.claude.json.")
    PY
    

    On exit code 2 (invalid JSON): surface the stderr line verbatim and stop; do not retry or delete the file. A (exit 0) is non-fatal - registration may have used a different scope; continue. On : continue to step 4.

  4. Verify the server is reachable and the key is accepted via HTTP probe. Do not try to call the MCP tool model_inspect here - Claude Code v2.x does not hot-reload MCP servers, so odoo-semantic is invisible to the AI agent until the user restarts the session (anthropics/claude-code#46426 - "not planned"). Use curl via the Bash tool instead. Substitute <URL> (full URL ending in /mcp) and <KEY>:

    BASE_URL=$(echo "<URL>" | sed 's:/mcp/*$::')
    curl -sfo /dev/null "${BASE_URL}/health" \
      || { echo "✗ Server unreachable at ${BASE_URL}/health"; exit 1; }
    STATUS=$(curl -s -o /dev/null -w "%{http_code}" \
      -H "X-API-Key: <KEY>" "${BASE_URL}/mcp")
    case "$STATUS" in
      401|403) echo "✗ API key rejected (HTTP $STATUS)"; exit 1 ;;
      *)       echo "✓ Server reachable, key accepted (HTTP $STATUS)" ;;
    esac
    

    The MCP endpoint returns 401/403 only for missing or invalid keys. A valid key reaches the FastMCP handler, which responds 200/202/405/406 to a plain GET - any of those is success for the purposes of this probe.

    • On : continue to step 5.
    • On : surface the curl output and stop. Common fixes: VPN/firewall, server restarted with server-side key rotation, key revoked on the server.

Read the full file on GitHub · 183 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. yesterday First seen · 183 lines · 33 tokens per session scan B 4e06dda88eab

Subscribe to this mod's changes

connect is a command published in the GitHub repository Viindoo/odoo-mcp-client (8 stars, last pushed 2d ago), licensed MIT. It adds 33 tokens to every session and 2,562 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it B with 2 findings (reads agent configuration directories, makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.