Install guide / Gemini CLI / Antigravity CLI

Connect Normi to Gemini CLI and Antigravity CLI

Add Normi to Google's command-line agent: Gemini CLI, or Antigravity CLI (agy), which replaces it for individual accounts. The agent can then query DVF sales, DPE energy ratings and the BDNB from the terminal.

https://mcp.normi.fr/mcp

Configurations checked on 10 October 2026 against the official Gemini CLI and Antigravity documentation. Gemini CLI MCP documentation

Before you start

  • A Normi account: sign in with Google, 500 free credits a month.
  • For the API-key connection or the STDIO package: a normi_… key, created in Dashboard → Tokens. It is shown only once.
  • For the STDIO package: Node.js 18 or later (npx).
Gemini CLI or Antigravity CLI?
Google replaced Gemini CLI with Antigravity CLI (agy) for individual accounts on 18 June 2026. Gemini CLI is still used with Gemini Code Assist Standard/Enterprise or Vertex AI. Both are covered below.

Gemini CLI: remote connection (HTTP Streamable)Recommended

Add the server, then run /mcp auth normi inside Gemini CLI: it opens the Normi sign-in in your browser. --scope user writes to ~/.gemini/settings.json (all projects); without it, the config goes into the project's .gemini/settings.json.

gemini mcp add --transport http --scope user normi https://mcp.normi.fr/mcp
# then, inside Gemini CLI:
/mcp auth normi

With an API key, without a browser:

export NORMI_API_KEY=normi_YOUR_TOKEN
gemini mcp add --transport http --scope user \
  --header "Authorization: Bearer $NORMI_API_KEY" normi https://mcp.normi.fr/mcp

Or directly in the file. Gemini CLI uses httpUrl for HTTP Streamable (url means SSE) and replaces $NORMI_API_KEY with the environment variable:

File: ~/.gemini/settings.json

{
  "mcpServers": {
    "normi": {
      "httpUrl": "https://mcp.normi.fr/mcp",
      "headers": {
        "Authorization": "Bearer $NORMI_API_KEY"
      }
    }
  }
}

Gemini CLI: STDIO package

A local alternative: the npm package @normi/mcp-dvf relays calls to the same Normi server.

File: ~/.gemini/settings.json

{
  "mcpServers": {
    "normi": {
      "command": "npx",
      "args": ["-y", "@normi/mcp-dvf"],
      "env": {
        "NORMI_API_KEY": "$NORMI_API_KEY"
      }
    }
  }
}

Antigravity CLI (agy)

Antigravity reads ~/.gemini/config/mcp_config.json (global) or .agents/mcp_config.json (project). A remote server is declared with serverUrl. Normi supports dynamic client registration, so Antigravity handles OAuth with no other setting. Start authentication from the agent settings (Customizations tab → Authenticate), then check with /mcp.

File: ~/.gemini/config/mcp_config.json

{
  "mcpServers": {
    "normi": {
      "serverUrl": "https://mcp.normi.fr/mcp"
    }
  }
}

With an API key. Antigravity's documentation doesn't describe environment-variable substitution in this file, so don't commit it if it contains the key.

{
  "mcpServers": {
    "normi": {
      "serverUrl": "https://mcp.normi.fr/mcp",
      "headers": {
        "Authorization": "Bearer normi_YOUR_TOKEN"
      }
    }
  }
}

A first prompt to try

“Using Normi, did houses resold within two years in Nantes make a profit?”

The agent calls detect_flips (10 credits). An excerpt of the real response, captured on 10 October 2026 against the 2014–2025 DVF data:

{
  "commune": "NANTES",
  "periode": { "mois": 24, "date_debut": "2023-12-31", "date_fin": "2025-12-31" },
  "type_local": "Maison",
  "transactions_revente": 1967,
  "flips_detectes": 50,
  "taux_de_flip": 2.54,
  "marge_brute_mediane": -11500,
  "marge_mediane_pct": -3.31,
  "duree_detention_mediane_jours": 624
}

Not at the median: over 24 months, 50 of the 1,967 house resales in Nantes are quick resales (2.54%), with a median gross margin of -€11,500 (-3.3%) after about 21 months of ownership. Normi only returns aggregates, never an address. The response fields are in French because the API's field names are.

Troubleshooting

/mcp shows Normi as “Disconnected”↓
Gemini CLI: run /mcp auth normi for the OAuth sign-in, or check that NORMI_API_KEY is exported in the shell. A STDIO server stays disconnected in an untrusted folder: trust the folder or use the remote connection.
Antigravity CLI ignores the server↓
Antigravity only accepts serverUrl for a remote server: Gemini CLI's url and httpUrl fields are not recognised. Reopen /mcp and reload the configuration after editing.
Gemini CLI stops responding with a personal Google account↓
Since 18 June 2026, Gemini CLI no longer serves individual accounts (Google AI Pro, Ultra, free Code Assist). Switch to Antigravity CLI: on first launch, agy offers to import your Gemini CLI MCP servers. Then check that the Normi entry uses serverUrl.
Expired OAuth token↓
Gemini CLI: run /mcp auth normi again. Antigravity refreshes tokens by itself; if that fails, restart authentication from the agent settings (Customizations tab).
Error 401 — Unauthorized↓
API key: it is missing, mistyped or revoked (the normi_ prefix is part of the key). Check that the environment variable is visible to the client. OAuth: access has expired or been revoked; reconnect from the client.
“no active API key” (403) on every call↓
Your account no longer has an active key. Create one in the dashboard: an OAuth connection resumes on the next call, a key-based config needs the new key.
Insufficient credits↓
The message comes back in the tool response, not as HTTP 402. The free plan tops up to 500 credits on the 1st of each month; you can also buy credits from the dashboard.
Error 429 — Rate limited↓
You are over your plan's requests-per-minute limit. Wait a few seconds, or cap how many calls your agent makes in parallel.

Next steps