vike
Client setup

Claude Desktop

Declare vike-cli mcp as a local command in claude_desktop_config.json, and get the node keys somewhere a GUI-launched process can actually see them.

vike-cli mcp is not a URL and cannot be added as a connector: it is a local process Claude Desktop launches and speaks stdio to. Declare it in the config file instead.

The config file

Settings → Developer → Edit Config opens it, at ~/Library/Application Support/Claude/claude_desktop_config.json on macOS and %APPDATA%\Claude\claude_desktop_config.json on Windows.

{
  "mcpServers": {
    "vike-trader": {
      "command": "vike-cli",
      "args": ["mcp", "--node", "127.0.0.1:7879"]
    }
  }
}

Then quit Claude Desktop completely and start it again — the config is read at launch, not on save.

Both flags are optional and both only widen what the tools can reach: --node <host:port> is the running vike-tradehub the live tools observe and control (no default), and --addr <host:port> is the vike-datahub the backtest tools ship profiles to (default 127.0.0.1:7878). With neither, the four offline tools — validate_strategy, discover_params, list_templates, list_indicators — still work, so a flag-less entry is a fine first step.

Give the binary an absolute path if it is not found

Claude Desktop launches the server from the application, which does not inherit the PATH your shell exports. If the entry fails to start, replace "vike-cli" with the binary's full path — /usr/local/bin/vike-cli, or C:\\Users\\you\\vike\\bin\\vike-cli.exe. Note the doubled backslashes: this is JSON.

The node keys

That same launch context is why the keys usually belong in the credential store rather than your shell profile. vike-cli reads VIKE_TRADEHUB_OBSERVE_KEY and VIKE_TRADEHUB_CONTROL_KEY from the process environment first and then from <project>/settings/secrets.env — the same file the daemon itself reads — and a GUI-launched child sees none of your terminal's exports. The resolver is crates/vike-cli/src/cmd/nodekeys.rs's resolve.

If you would rather pin them to this one client, the entry takes an env block:

{
  "mcpServers": {
    "vike-trader": {
      "command": "vike-cli",
      "args": ["mcp", "--node", "127.0.0.1:7879"],
      "env": { "VIKE_TRADEHUB_OBSERVE_KEY": "..." }
    }
  }
}

The process environment wins over the store, per key, so an env entry here overrides a stored value of the same name and leaves the other key resolving from the store. Consider what each key buys before writing it into a file: the observe key reads, the control key places orders.

Verify

list the vike strategy templates

calls list_templates, which needs no key, no node and no network — so it answers exactly one question: is Claude Desktop launching the binary and speaking the protocol to it. With a node configured, follow it with "show me the node snapshot" to prove the observe key as well.

If vike-trader never appears under the hammer icon, the config file did not parse or the binary did not start. Claude Desktop writes each server's stderr to its own log — mcp-server-vike-trader.log under ~/Library/Logs/Claude (macOS) or %APPDATA%\Claude\logs (Windows) — and vike-cli is careful to keep every diagnostic on stderr, because its stdout is a protocol.

The data server too

Claude Desktop can hold both Vike servers at once. The hosted data server is a URL, so it is added in the UI as a connector rather than in this file — Data client setup → Claude Desktop walks it. If you do add a second entry to mcpServers, give it a different name: a client keys its servers by name and the second vike would replace the first.

On this page