Authentication
The MCP server supports both auth modes the Contree API exposes — the same twocontree-cli recognises:
- IAM (recommended). Token + Project header. Sends
Authorization: Bearer <iam-token>andProject: <project-id>. Default URL:https://api.tokenfactory.nebius.com/sandboxes. Use this for new deployments; the standardNEBIUS_API_KEY/NEBIUS_AI_PROJECTenv vars are honoured. - JWT (legacy). Token only. Sends
Authorization: Bearer <jwt-token>. Used by thecontree.devPoC deployment. No project required.
type = iam | jwt line picks the scheme; the client class
that issues backend requests is wired accordingly at startup.
Profile File (Recommended)
contree-mcp reads the same profile file that
contree-cli
writes, so a single login covers both tools. Install the CLI and run
contree auth:
~/.config/contree/auth.ini with mode 0600. Override
the directory with CONTREE_HOME.
The file is INI-format with one [profile:<name>] section per
credential set and a [DEFAULT] profile = <name> line selecting the
active profile:
contree auth switch <name>, or
per-invocation with --profile <name> / CONTREE_PROFILE=<name>.
type = iam requires project; type = jwt does not.
Environment Variables (Per-Invocation Overrides)
For one-off overrides without touching the profile file:Precedence (important)
Field-by-field, highest first:- CLI flags —
--token,--project,--url,--profile. CONTREE_*env vars —CONTREE_TOKEN/CONTREE_PROJECT/CONTREE_URL/CONTREE_PROFILE. MCP-specific; always layered on top of the profile.NEBIUS_*env vars —NEBIUS_API_KEY+NEBIUS_AI_PROJECT, recognised only when both are set (a complete IAM credential). A loneNEBIUS_API_KEYset ambiently for the Nebius SDK or terraform provider is ignored, and the MCP server logs aninfoline explaining why.- Active profile from
auth.ini. Picked by, in order,--profile→CONTREE_PROFILE→ the file’s[DEFAULT] profile = ....
contree-mcp(no args) loads the active profile, even if your shell hasNEBIUS_API_KEYset for other tools.CONTREE_TOKEN=NEW contree-mcprotates the token but reuses the profile’sprojectandurl— handy for short-lived tokens.contree-mcp --token X --project Ypopulates token + project from the CLI;urlandauth_typestill come from the loaded profile unless--url/--auth-typeare also supplied.- With no profile loaded and an incomplete
CONTREE_TOKEN/--token, the server stops with “No API token configured” rather than running with half-set credentials.
* NEBIUS_* are read only when both are set.
Tokens passed via env may appear in process listings — prefer the
profile file for routine use.
Server Options
| Option | Environment Variable | Default | Description |
|---|---|---|---|
| - | CONTREE_HOME | $XDG_CONFIG_HOME/contree (typically ~/.config/contree) | Directory containing auth.ini and MCP state |
--profile | CONTREE_PROFILE | active profile from auth.ini | Profile to use |
--token | CONTREE_TOKEN | from profile | API token (overrides profile) |
--url | CONTREE_URL | from profile | API base URL (overrides profile) |
--project | CONTREE_PROJECT | from profile | Project ID for IAM auth |
--mode | - | stdio | stdio or http |
--http-port | - | 9452 | HTTP mode port |
--http-listen | - | 127.0.0.1 | HTTP mode bind address |
--log-level | - | warning | Logging level |
--version / -V | - | - | Print the User-Agent the server emits and exit |
| - | CONTREE_NO_UPDATE_CHECK | unset | Disable the daily PyPI update check (set to any value) |
Cache Configuration
| Option | Default |
|---|---|
--cache-files | $CONTREE_HOME/mcp/files.db (typically ~/.config/contree/mcp/files.db) |
--cache-general | $CONTREE_HOME/mcp/cache.db (typically ~/.config/contree/mcp/cache.db) |
--cache-prune-days | 60 |
Client Configuration Examples
With credentials stored in~/.config/contree/auth.ini, MCP client
configs are minimal:
Claude Code
HTTP Mode
For network access from other machines:http://localhost:9452/ for interactive documentation with setup guides, tool reference, and best practices.
