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.
Client setup
Add the local vike-cli mcp stdio server to Claude Desktop, Claude Code, Cursor, Gemini CLI, VS Code, Codex CLI, Amazon Q Developer CLI or Windsurf, or drive it from a script.
Claude Code
One claude mcp add, with the double dash that hands vike-cli its own flags — and the one client that does inherit your shell's exports.