Skip to content

CLI Reference

MCC ships a management CLI for administering users, browsing tools, and running the MCP server.

mcc [OPTIONS] COMMAND [ARGS]...

Global options

Option Description
-e, --env Dynaconf environment to activate (e.g. development, production)
-v, --verbose Enable debug logging

The --env flag sets the active Dynaconf environment, enabling environment-layered config in your settings files:

mcc -e production mcp serve
mcc -e staging tool list

Environment variables

Tool files and settings files are configured via environment variables (or .env), since they must be resolved before the CLI parses arguments.

Variable Description
MCC_TOOL_FILES Semicolon-separated paths to tool YAML files or directories to load on startup.
MCC_SETTINGS_FILES Semicolon-separated paths to additional settings YAML files (merged after defaults).
MCC_SKIP_AUTOLOAD Set to skip automatic tool loading at startup.
# Load extra tools
MCC_TOOL_FILES="mytools.yaml;tools/extras/" mcc tool list

# Load additional settings
MCC_SETTINGS_FILES="staging.yaml;secrets.yaml" mcc mcp serve

Any individual setting can also be overridden with the MCC_ prefix (e.g. MCC_AUTH=dangerous).


mcc init

Create the Elasticsearch/OpenSearch indices mcc needs, if they don't exist yet. Safe to re-run — existing indices are left untouched.

mcc init

Creates the users and keys indices, plus the audit indices when audit_tool_index / audit_search_index are set. The tool index is not created here; run mcc tool reindex for that. Run mcc init once against a fresh cluster, before mcc user add.


mcc user

Manage users and their permissions.

add

Create a new user.

mcc user add -u <username> [--email EMAIL] [-g GROUP ...] [-t TOOL ...]
Option Description
-u, --username GitHub username (required)
-e, --email User's email address
-g, --group Group to grant (repeatable)
-t, --tool Tool key to grant (repeatable)
mcc user add -u alice --email alice@example.com -g engineering

list

List all users with their groups and tool grants.

mcc user list

remove

Delete a user.

mcc user remove <username>

grant

Grant a user group membership or an explicit tool permission.

mcc user grant <username> [-g GROUP ...] [-t TOOL ...]

At least one -g or -t is required. Both flags are repeatable.

mcc user grant alice -g engineering        # group membership
mcc user grant alice -g admin              # full admin access
mcc user grant alice -t admin.shell        # specific tool
mcc user grant alice -g data -g ml         # multiple groups at once

revoke

Remove group membership or tool grants from a user.

mcc user revoke <username> [-g GROUP ...] [-t TOOL ...]

At least one -g or -t is required. Both flags are repeatable.


mcc tool

Browse and call catalog tools.

list

List all registered tools.

mcc tool list [-l]
Option Description
-l, --long Show full signatures instead of just keys

info

Print the full signature of a tool by key.

mcc tool info <tool-key>
mcc tool info admin.shell

call

Invoke a tool by key and print the result.

mcc tool call <tool-key> [key=value ...] [--json JSON]
Argument Description
tool-key Exact tool key (e.g. admin.shell, public.request)
key=value Parameters as positional key=value pairs (repeatable)
--json Parameters as a JSON object string
mcc tool call admin.auth.users.list_users
mcc tool call admin.shell command="ls -la"
mcc tool call my.tool name=foo count=3
mcc tool call my.tool --json '{"name": "foo", "count": 3}'

Output is syntax-highlighted JSON for dicts and lists, plain text otherwise.


reindex

Reload tool YAML files from disk and reindex them in Elasticsearch (or OpenSearch). This is the only operation that ever touches the tool index — server startup and every other mcc command leave it untouched. It's a full rebuild (drop, recreate, bulk-write every tool), not an incremental update, so run it once after first standing up your search backend and again whenever your tool YAML changes.

mcc tool reindex

mcc mcp

Start the MCP server and install it in Claude clients.

serve

Start the MCP server.

mcc mcp serve [-t stdio|http] [-h HOST] [-p PORT]
Option Default Description
-t, --transport stdio Transport protocol (stdio or http)
-h, --host 0.0.0.0 Host to bind (HTTP only)
-p, --port 8000 Port to bind (HTTP only)
mcc mcp serve                              # stdio (default, for Claude Desktop / Claude Code)
mcc mcp serve -t http                      # HTTP on 0.0.0.0:8000
mcc mcp serve -t http -p 9000

install

Register MCC as an MCP server in a client's config. Most install subcommands mount the current project in editable mode so local changes are picked up immediately.

Common options available on all install subcommands:

Option Description
--env KEY=VALUE Set an environment variable (repeatable)
--env-file FILE Load environment variables from a .env file

claude-code

mcc mcp install claude-code [--env KEY=VALUE] [--env-file FILE]
mcc mcp install claude-code --env-file .env

claude-desktop

mcc mcp install claude-desktop [--env KEY=VALUE] [--env-file FILE]
mcc mcp install claude-desktop --env-file .env

cursor

mcc mcp install cursor [--env KEY=VALUE] [--env-file FILE]
mcc mcp install cursor --env-file .env

gemini-cli

mcc mcp install gemini-cli [--env KEY=VALUE] [--env-file FILE]
mcc mcp install gemini-cli --env-file .env

goose

mcc mcp install goose [--env KEY=VALUE] [--env-file FILE]

Goose and env vars

Goose installs via a deeplink that does not carry environment variables. Use mcc mcp install mcp-json to generate a full config for manual installation if you need env vars set.

mcp-json

Print the MCP JSON config snippet — useful for manual installation or other clients.

mcc mcp install mcp-json [--env KEY=VALUE] [--env-file FILE] [--copy]
Option Description
--copy Copy output to clipboard instead of printing
mcc mcp install mcp-json
mcc mcp install mcp-json --copy