Skip to content

CLI Reference

MCP Hangar provides a comprehensive command-line interface for managing MCP providers.

Installation

bash
pip install mcp-hangar
# or
uv pip install mcp-hangar

Synopsis

bash
mcp-hangar [OPTIONS] COMMAND [ARGS]...

Global Options

These options are available for all commands:

OptionShortTypeDefaultEnv VariableDescription
--config-cPATH-MCP_CONFIGPath to config.yaml file
--verbose-vFLAGfalse-Show verbose output including debug information
--quiet-qFLAGfalse-Suppress non-essential output
--json-FLAGfalse-Output in JSON format for scripting
--version-VFLAG--Show version and exit
--help-FLAG--Show help message and exit

Commands

CommandDescription
initInteractive setup wizard
statusShow provider health dashboard
addAdd provider from registry
removeRemove provider from configuration
serveStart the MCP server
completionGenerate shell completion scripts

init

Interactive setup wizard for MCP Hangar. Guides you through provider selection and configuration in under 5 minutes.

Synopsis

bash
mcp-hangar init [OPTIONS]

Options

OptionShortTypeDefaultDescription
--non-interactive-yFLAGfalseRun without prompts, using defaults
--bundle-bTEXT-Provider bundle to install
--providers-TEXT-Comma-separated list of providers
--config-path-PATH-Custom path for config file
--claude-config-PATH-Custom path to Claude Desktop config
--skip-claude-FLAGfalseSkip Claude Desktop config modification
--reset-FLAGfalseReset existing configuration

Provider Bundles

BundleProvidersUse Case
starterfilesystem, fetch, memoryGeneral use, getting started
developerfilesystem, fetch, memory, github, gitSoftware development
datafilesystem, fetch, memory, sqlite, postgresData analysis

Examples

bash
# Interactive setup
mcp-hangar init

# Install starter bundle
mcp-hangar init --bundle starter

# Install specific providers
mcp-hangar init --providers filesystem,github,sqlite

# Non-interactive with developer bundle
mcp-hangar init -y --bundle developer

# Custom config location
mcp-hangar init --config-path ~/my-config.yaml

# Skip Claude Desktop integration
mcp-hangar init --skip-claude

What It Does

  1. Detects Claude Desktop installation
  2. Presents provider categories for selection
  3. Collects required configuration (API keys, paths)
  4. Generates config.yaml file
  5. Updates Claude Desktop configuration
  6. Shows next steps

status

Display health dashboard of all configured providers with real-time updates.

Synopsis

bash
mcp-hangar status [OPTIONS] [PROVIDER]

Arguments

ArgumentRequiredDescription
PROVIDERNoShow detailed status for specific provider

Options

OptionShortTypeDefaultDescription
--watch-wFLAGfalseContinuously update the display
--interval-iFLOAT2.0Update interval in seconds (with --watch)
--details-dFLAGfalseShow additional columns (mode, memory, uptime)

Provider States

StateIndicatorDescription
READYOK (green)Provider is running and healthy
COLD-- (dim)Provider not started
INITIALIZING.. (cyan)Provider starting up
DEGRADED!! (yellow)Provider has issues
DEADXX (red)Provider failed/crashed

Examples

bash
# Show all providers
mcp-hangar status

# Watch mode with live updates
mcp-hangar status --watch

# Faster refresh rate
mcp-hangar status -w -i 0.5

# Show detailed information
mcp-hangar status --details

# Single provider details
mcp-hangar status github

# JSON output for scripting
mcp-hangar --json status

Output Columns

Standard view:

  • Provider name
  • State indicator
  • Tools count

Detailed view (--details):

  • Provider name
  • State indicator
  • Mode (subprocess/docker/remote)
  • Tools count
  • Memory usage
  • Uptime

add

Add a provider from the MCP Registry to your configuration.

Synopsis

bash
mcp-hangar add [OPTIONS] NAME

Arguments

ArgumentRequiredDescription
NAMEYesProvider name or search query

Options

OptionShortTypeDefaultDescription
--search-sFLAGfalseSearch registry instead of exact match
--yes-yFLAGfalseSkip confirmation prompts
--no-reload-FLAGfalseDon't hot-reload running server

Available Providers

ProviderDescriptionRequires Config
filesystemFile system accessYes (allowed paths)
fetchHTTP requestsNo
memoryKey-value storageNo
githubGitHub APIYes (token)
gitGit operationsNo
sqliteSQLite databasesYes (database path)
postgresPostgreSQL databasesYes (connection string)
brave-searchBrave Search APIYes (API key)
puppeteerBrowser automationNo
slackSlack integrationYes (token)
google-driveGoogle Drive accessYes (credentials)
google-mapsGoogle Maps APIYes (API key)
sentrySentry error trackingYes (token)
raygunRaygun monitoringYes (API key)
everartEverart APIYes (API key)
sequential-thinkingReasoning chainsNo

Examples

bash
# Add by exact name
mcp-hangar add github

# Search for providers
mcp-hangar add --search database

# Skip confirmation
mcp-hangar add filesystem -y

# Add without hot-reload
mcp-hangar add postgres --no-reload

Configuration Prompts

When adding a provider that requires configuration, you'll be prompted for:

  • Secrets (API keys, tokens): Hidden input, stored securely
  • Paths (directories, files): Path validation
  • Text (URLs, names): Standard input

Environment variables are detected automatically. If GITHUB_TOKEN is set, you'll be asked whether to use it.


remove

Remove a provider from your configuration.

Synopsis

bash
mcp-hangar remove [OPTIONS] NAME

Arguments

ArgumentRequiredDescription
NAMEYesProvider name to remove

Options

OptionShortTypeDefaultDescription
--yes-yFLAGfalseSkip confirmation prompt
--keep-running-FLAGfalseDon't stop running provider instance

Examples

bash
# Remove with confirmation
mcp-hangar remove github

# Remove without confirmation
mcp-hangar remove filesystem -y

# Remove from config but keep running
mcp-hangar remove postgres --keep-running

Behavior

  1. Validates provider exists in configuration
  2. Prompts for confirmation (unless -y)
  3. Stops running instance (unless --keep-running)
  4. Removes from config.yaml
  5. Attempts hot-reload of server

serve

Start the MCP Hangar server. This is the default command when no subcommand is specified.

Synopsis

bash
mcp-hangar serve [OPTIONS]
# or simply:
mcp-hangar [OPTIONS]

Options

OptionShortTypeDefaultEnv VariableDescription
--http-FLAGfalseMCP_MODE=httpRun in HTTP mode
--host-TEXT0.0.0.0MCP_HTTP_HOSTHTTP server host
--port-pINT8000MCP_HTTP_PORTHTTP server port
--log-file-PATH--Path to log file
--log-level-TEXTINFOMCP_LOG_LEVELLog level
--json-logs-FLAGfalseMCP_JSON_LOGSFormat logs as JSON

Transport Modes

stdio (default)

JSON-RPC over stdin/stdout. Used by Claude Desktop and similar clients.

bash
mcp-hangar serve
mcp-hangar --config config.yaml serve

HTTP

HTTP server with Streamable HTTP transport. Used by LM Studio and web clients.

bash
mcp-hangar serve --http
mcp-hangar serve --http --port 9000
mcp-hangar serve --http --host 127.0.0.1 --port 8080

HTTP Endpoints

When running in HTTP mode:

EndpointMethodDescription
/mcpPOST/GETMCP protocol endpoint
/health/liveGETLiveness probe
/health/readyGETReadiness probe
/health/startupGETStartup probe
/metricsGETPrometheus metrics

Log Levels

  • DEBUG - Detailed debugging information
  • INFO - General operational information (default)
  • WARNING - Warning messages
  • ERROR - Error messages only
  • CRITICAL - Critical errors only

Examples

bash
# stdio mode (for Claude Desktop)
mcp-hangar serve

# HTTP mode on default port
mcp-hangar serve --http

# HTTP mode with custom port
mcp-hangar serve --http -p 9000

# With debug logging
mcp-hangar serve --log-level DEBUG

# With log file
mcp-hangar serve --log-file /var/log/mcp-hangar.log

# JSON logs for log aggregation
mcp-hangar serve --json-logs

# Full production setup
mcp-hangar serve --http --host 0.0.0.0 --port 8000 \
  --log-level INFO --json-logs --log-file /var/log/mcp.log

completion

Generate shell completion scripts for tab-completion support.

Synopsis

bash
mcp-hangar completion COMMAND

Subcommands

CommandDescription
bashGenerate bash completion script
zshGenerate zsh completion script
fishGenerate fish completion script
installAuto-install completion for detected shell

Installation

Bash

bash
# System-wide
mcp-hangar completion bash | sudo tee /etc/bash_completion.d/mcp-hangar

# User-only
mcp-hangar completion bash >> ~/.bashrc

Zsh

bash
# Add to fpath
mcp-hangar completion zsh > ~/.zfunc/_mcp-hangar

# Add to .zshrc if not already present:
# fpath=(~/.zfunc $fpath)
# autoload -Uz compinit && compinit

Fish

bash
mcp-hangar completion fish > ~/.config/fish/completions/mcp-hangar.fish

Auto-install

bash
# Detect shell and install
mcp-hangar completion install

# Specify shell
mcp-hangar completion install zsh

Configuration File

Default Locations

The CLI searches for configuration in this order:

  1. --config option
  2. MCP_CONFIG environment variable
  3. ~/.config/mcp-hangar/config.yaml
  4. ./config.yaml (current directory)

Example Configuration

yaml
providers:
  filesystem:
    mode: subprocess
    command:
      - npx
      - -y
      - "@modelcontextprotocol/server-filesystem"
      - "/home/user/documents"

  github:
    mode: subprocess
    command:
      - npx
      - -y
      - "@modelcontextprotocol/server-github"
    env:
      GITHUB_TOKEN: ${GITHUB_TOKEN}

  my-api:
    mode: remote
    endpoint: https://api.example.com/mcp

logging:
  level: INFO
  json_format: false

event_store:
  enabled: true
  driver: sqlite
  path: data/events.db

Environment Variables

VariableDescriptionDefault
MCP_CONFIGPath to configuration file-
MCP_MODEServer mode (stdio or http)stdio
MCP_HTTP_HOSTHTTP server host0.0.0.0
MCP_HTTP_PORTHTTP server port8000
MCP_LOG_LEVELLog levelINFO
MCP_JSON_LOGSEnable JSON loggingfalse

Exit Codes

CodeMeaning
0Success
1User error (invalid input, missing file, permission denied)
2System error (network failure, provider crash)
130Interrupted by user (Ctrl+C)

See Also

Released under the MIT License.