Skip to main content

Command Reference

Complete reference for all MCPProxy CLI commands.

Global Flags

These flags are available for all commands:

FlagDescription
--configPath to configuration file
--log-levelLog level (debug, info, warn, error)
--data-dir, -dData directory path (default: ~/.mcpproxy)
--log-to-fileEnable logging to file in standard OS location
--log-dirCustom log directory path (overrides standard OS location)
--helpShow help for command

Execution Modes

CLI commands like tools list, call tool, code exec, and auth login support two execution modes:

Daemon Mode (Default)

When mcpproxy serve is running, CLI commands automatically connect to it via Unix socket (macOS/Linux) or named pipe (Windows). This provides:

  • Fast execution - Daemon is already loaded with connections established
  • Shared state - OAuth tokens, server connections, and search indices are shared
  • Real-time sync - Changes made via CLI reflect immediately in daemon

Detection: CLI checks for socket at ~/.mcpproxy/mcpproxy.sock (Unix) or \\.\pipe\mcpproxy-<username> (Windows).

# Start daemon
mcpproxy serve &

# These commands use daemon mode automatically
mcpproxy tools list --server=github-server # Fast - uses daemon
mcpproxy auth login --server=oauth-server # OAuth tokens shared with daemon
mcpproxy call tool --tool-name=github:search # Uses daemon's connection pool

Standalone Mode (Direct Connection)

When no daemon is detected, CLI commands create direct connections to upstream MCP servers. This is useful for:

  • Debugging - Full control over connection with verbose logging
  • Isolated testing - Independent of daemon state
  • Single-use operations - No need to run persistent daemon
# Stop daemon to use standalone mode
pkill -f "mcpproxy serve"

# Now commands connect directly to upstream servers
mcpproxy tools list --server=github-server --log-level=debug
mcpproxy tools list --server=github-server --trace-transport # Full HTTP/SSE tracing
Forcing Standalone Mode

To debug a specific server connection without stopping the daemon:

# Use a different data directory (creates isolated socket path)
mcpproxy tools list --server=github-server --data-dir=/tmp/debug-session

# Or set empty endpoint to skip socket detection
MCPPROXY_TRAY_ENDPOINT="" mcpproxy tools list --server=github-server

Mode Comparison

AspectDaemon ModeStandalone Mode
StartupFast (< 1s)Slower (2-5s, initializes components)
OAuth TokensShared globallyIsolated per command
Server StatePersistentEphemeral
DebuggingLimited visibilityFull component tracing
Use CaseProduction / Normal useDebugging / Testing

Environment Variables

VariableDescription
MCPPROXY_TRAY_ENDPOINTOverride socket path. Set to empty string "" to force standalone mode

Examples:

# Custom socket endpoint
MCPPROXY_TRAY_ENDPOINT="unix:///tmp/custom.sock" mcpproxy tools list --server=myserver

# Force standalone mode (skip daemon)
MCPPROXY_TRAY_ENDPOINT="" mcpproxy tools list --server=myserver --log-level=trace
auth status requires daemon

The auth status command requires a running daemon since it queries the daemon's OAuth state:

mcpproxy auth status --server=oauth-server
# Error: auth status requires running daemon. Start with: mcpproxy serve

Server Commands

serve

Start the MCPProxy server:

mcpproxy serve [flags]
FlagDescriptionDefault
--listenAddress to listen on127.0.0.1:8080
--api-keyAPI key for authenticationauto-generated
--enable-socketEnable Unix socket/named pipetrue
--tray-endpointTray endpoint override (unix:///path/socket.sock or npipe:////./pipe/name)-
--debug-searchEnable debug search toolfalse
--tool-response-limitTool response limit in characters (0 = disabled)0
--read-onlyEnable read-only modefalse
--disable-managementDisable management featuresfalse
--allow-server-addAllow adding new serverstrue
--allow-server-removeAllow removing serverstrue
--enable-promptsEnable prompts for user inputtrue

doctor

Run health diagnostics:

mcpproxy doctor

Checks for:

  • Upstream server connection errors
  • OAuth authentication requirements
  • Missing secrets
  • Runtime warnings
  • Docker isolation status

Upstream Management

upstream list

List all configured servers:

mcpproxy upstream list [flags]
FlagDescriptionDefault
--output, -oOutput format: table, jsontable

upstream logs

View server logs:

mcpproxy upstream logs <server-name> [flags]
FlagDescription
--tailNumber of lines to show
--followFollow log output

upstream restart

Restart a server:

mcpproxy upstream restart <server-name>
mcpproxy upstream restart --all

upstream enable/disable

Enable or disable a server:

mcpproxy upstream enable <server-name>
mcpproxy upstream disable <server-name>

Server Discovery

search-servers

Search MCP registries for available servers:

mcpproxy search-servers [flags]
FlagDescription
-r, --registryRegistry ID or name to search (exact match)
-s, --searchSearch term for server name/description
-t, --tagFilter servers by tag/category
-l, --limitMaximum results (default: 10, max: 50)
--list-registriesList all known registries

Tool Commands

tools list

List available tools:

mcpproxy tools list [flags]
FlagDescriptionDefault
--serverFilter by server name-
--timeout, -tConnection timeout30s
--output, -oOutput format: table, json, yamltable
--trace-transportEnable detailed HTTP/SSE frame-by-frame tracingfalse

call tool

Execute a tool:

mcpproxy call tool <server:tool> [flags]
FlagDescriptionDefault
--inputJSON input data for the tool{}
--output, -oOutput format: pretty, jsonpretty

Code Execution

code exec

Execute JavaScript code:

mcpproxy code exec [flags]
FlagDescriptionDefault
--codeJavaScript code to execute-
--filePath to JavaScript file (alternative to --code)-
--inputJSON input data{}
--input-filePath to JSON file containing input data-
--max-tool-callsMaximum tool calls (0 = unlimited)0
--allowed-serversComma-separated list of allowed servers-

Example:

mcpproxy code exec --code="({ result: input.value * 2 })" --input='{"value": 21}'

See Code Execution for detailed documentation.

Authentication

auth login

Authenticate with an OAuth server:

mcpproxy auth login [flags]
FlagDescriptionDefault
--serverServer name to authenticate with (required)-
--timeoutAuthentication timeout5m

auth status

Check authentication status:

mcpproxy auth status [flags]
FlagDescription
--server, -sServer name to check status for
--allShow status for all servers

auth logout

Clear OAuth token and disconnect from a server:

mcpproxy auth logout [flags]
FlagDescriptionDefault
-s, --serverServer name to logout from (required)-
--timeoutLogout timeout30s

Secrets Management

secrets set

Store a secret in the system keyring:

mcpproxy secrets set <key> <value> [flags]
FlagDescription
--typeSecret type (api-key, oauth-token, password)
--from-envRead value from environment variable
--from-stdinRead value from stdin

Examples:

mcpproxy secrets set github-token "ghp_abc123" --type=oauth-token
mcpproxy secrets set api-key --from-env=MY_API_KEY
echo "secret-value" | mcpproxy secrets set db-password --from-stdin

secrets get

Retrieve a secret:

mcpproxy secrets get <key> [flags]
FlagDescription
--typeSecret type filter
--maskedShow masked value (first/last 4 chars)

secrets del

Delete a secret:

mcpproxy secrets del <key> [flags]
FlagDescription
--typeSecret type filter

secrets list

List all stored secrets:

mcpproxy secrets list [flags]
FlagDescription
--jsonOutput in JSON format
--allShow all secret metadata

secrets migrate

Migrate secrets between storage backends:

mcpproxy secrets migrate [flags]
FlagDescriptionDefault
--dry-runShow what would be migrated without executingfalse
--auto-approveSkip confirmation promptsfalse
--fromSource storage backend-
--toTarget storage backend-

Certificate Management

trust-cert

Install a trusted certificate:

mcpproxy trust-cert <certificate-path> [flags]
FlagDescriptionDefault
--forceInstall certificate without confirmationfalse
--keychainTarget keychain: 'system' or 'login'system

Example:

mcpproxy trust-cert /path/to/cert.pem --keychain=system