feat: implement v2 3-tier architecture (mcpctl → mcplocal → mcpd)
- Rename local-proxy to mcplocal with HTTP server, LLM pipeline, mcpd discovery
- Add LLM pre-processing: token estimation, filter cache, metrics, Gemini CLI + DeepSeek providers
- Add mcpd auth (login/logout) and MCP proxy endpoints
- Update CLI: dual URLs (mcplocalUrl/mcpdUrl), auth commands, --direct flag
- Add tiered health monitoring, shell completions, e2e integration tests
- 57 test files, 597 tests passing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 11:42:06 +00:00
# mcpctl fish completions
2026-02-23 19:16:36 +00:00
# Erase any stale completions from previous versions
complete -c mcpctl -e
2026-02-25 23:56:23 +00:00
set -l commands status login logout config get describe delete logs create edit apply patch backup restore mcp console approve help
2026-02-23 19:08:29 +00:00
set -l project_commands attach-server detach-server get describe delete logs create edit help
feat: implement v2 3-tier architecture (mcpctl → mcplocal → mcpd)
- Rename local-proxy to mcplocal with HTTP server, LLM pipeline, mcpd discovery
- Add LLM pre-processing: token estimation, filter cache, metrics, Gemini CLI + DeepSeek providers
- Add mcpd auth (login/logout) and MCP proxy endpoints
- Update CLI: dual URLs (mcplocalUrl/mcpdUrl), auth commands, --direct flag
- Add tiered health monitoring, shell completions, e2e integration tests
- 57 test files, 597 tests passing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 11:42:06 +00:00
# Disable file completions by default
complete -c mcpctl -f
# Global options
complete -c mcpctl -s v -l version -d 'Show version'
2026-02-23 12:00:31 +00:00
complete -c mcpctl -l daemon-url -d 'mcplocal daemon URL' -x
complete -c mcpctl -l direct -d 'Bypass mcplocal, connect directly to mcpd'
2026-02-23 19:08:29 +00:00
complete -c mcpctl -l project -d 'Target project context' -x
feat: implement v2 3-tier architecture (mcpctl → mcplocal → mcpd)
- Rename local-proxy to mcplocal with HTTP server, LLM pipeline, mcpd discovery
- Add LLM pre-processing: token estimation, filter cache, metrics, Gemini CLI + DeepSeek providers
- Add mcpd auth (login/logout) and MCP proxy endpoints
- Update CLI: dual URLs (mcplocalUrl/mcpdUrl), auth commands, --direct flag
- Add tiered health monitoring, shell completions, e2e integration tests
- 57 test files, 597 tests passing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 11:42:06 +00:00
complete -c mcpctl -s h -l help -d 'Show help'
2026-02-23 19:08:29 +00:00
# Helper: check if --project was given
function __mcpctl_has_project
set -l tokens ( commandline -opc )
for i in ( seq ( count $tokens ) )
if test " $tokens [ $i ] " = "--project"
return 0
end
end
return 1
end
# Helper: check if a resource type has been selected after get/describe/delete/edit
2026-02-25 00:21:31 +00:00
set -l resources servers instances secrets templates projects users groups rbac prompts promptrequests
feat: gated project experience & prompt intelligence
Implements the full gated session flow and prompt intelligence system:
- Prisma schema: add gated, priority, summary, chapters, linkTarget fields
- Session gate: state machine (gated → begin_session → ungated) with LLM-powered
tool selection based on prompt index
- Tag matcher: intelligent prompt-to-tool matching with project/server/action tags
- LLM selector: tiered provider selection (fast for gating, heavy for complex tasks)
- Link resolver: cross-project MCP resource references (project/server:uri format)
- Prompt summary service: LLM-generated summaries and chapter extraction
- System project bootstrap: ensures default project exists on startup
- Structural link health checks: enrichWithLinkStatus on prompt GET endpoints
- CLI: create prompt --priority/--link, create project --gated/--no-gated,
describe project shows prompts section, get prompts shows PRI/LINK/STATUS
- Apply/edit: priority, linkTarget, gated fields supported
- Shell completions: fish updated with new flags
- 1,253 tests passing across all packages
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 23:22:42 +00:00
# All accepted resource aliases (plural + singular + short forms)
set -l resource_aliases servers server srv instances instance inst secrets secret sec templates template tpl projects project proj users user groups group rbac rbac-definition rbac-binding prompts prompt promptrequests promptrequest pr
feat: implement v2 3-tier architecture (mcpctl → mcplocal → mcpd)
- Rename local-proxy to mcplocal with HTTP server, LLM pipeline, mcpd discovery
- Add LLM pre-processing: token estimation, filter cache, metrics, Gemini CLI + DeepSeek providers
- Add mcpd auth (login/logout) and MCP proxy endpoints
- Update CLI: dual URLs (mcplocalUrl/mcpdUrl), auth commands, --direct flag
- Add tiered health monitoring, shell completions, e2e integration tests
- 57 test files, 597 tests passing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 11:42:06 +00:00
2026-02-23 19:08:29 +00:00
function __mcpctl_needs_resource_type
set -l tokens ( commandline -opc )
set -l found_cmd false
for tok in $tokens
if $found_cmd
feat: gated project experience & prompt intelligence
Implements the full gated session flow and prompt intelligence system:
- Prisma schema: add gated, priority, summary, chapters, linkTarget fields
- Session gate: state machine (gated → begin_session → ungated) with LLM-powered
tool selection based on prompt index
- Tag matcher: intelligent prompt-to-tool matching with project/server/action tags
- LLM selector: tiered provider selection (fast for gating, heavy for complex tasks)
- Link resolver: cross-project MCP resource references (project/server:uri format)
- Prompt summary service: LLM-generated summaries and chapter extraction
- System project bootstrap: ensures default project exists on startup
- Structural link health checks: enrichWithLinkStatus on prompt GET endpoints
- CLI: create prompt --priority/--link, create project --gated/--no-gated,
describe project shows prompts section, get prompts shows PRI/LINK/STATUS
- Apply/edit: priority, linkTarget, gated fields supported
- Shell completions: fish updated with new flags
- 1,253 tests passing across all packages
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 23:22:42 +00:00
# Check if next token after get/describe/delete/edit is a resource type or alias
if contains -- $tok $resource_aliases
2026-02-23 19:08:29 +00:00
return 1 # resource type already present
end
end
feat: gated project experience & prompt intelligence
Implements the full gated session flow and prompt intelligence system:
- Prisma schema: add gated, priority, summary, chapters, linkTarget fields
- Session gate: state machine (gated → begin_session → ungated) with LLM-powered
tool selection based on prompt index
- Tag matcher: intelligent prompt-to-tool matching with project/server/action tags
- LLM selector: tiered provider selection (fast for gating, heavy for complex tasks)
- Link resolver: cross-project MCP resource references (project/server:uri format)
- Prompt summary service: LLM-generated summaries and chapter extraction
- System project bootstrap: ensures default project exists on startup
- Structural link health checks: enrichWithLinkStatus on prompt GET endpoints
- CLI: create prompt --priority/--link, create project --gated/--no-gated,
describe project shows prompts section, get prompts shows PRI/LINK/STATUS
- Apply/edit: priority, linkTarget, gated fields supported
- Shell completions: fish updated with new flags
- 1,253 tests passing across all packages
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 23:22:42 +00:00
if contains -- $tok get describe delete edit patch
2026-02-23 19:08:29 +00:00
set found_cmd true
end
end
if $found_cmd
return 0 # command found but no resource type yet
end
return 1
end
feat: gated project experience & prompt intelligence
Implements the full gated session flow and prompt intelligence system:
- Prisma schema: add gated, priority, summary, chapters, linkTarget fields
- Session gate: state machine (gated → begin_session → ungated) with LLM-powered
tool selection based on prompt index
- Tag matcher: intelligent prompt-to-tool matching with project/server/action tags
- LLM selector: tiered provider selection (fast for gating, heavy for complex tasks)
- Link resolver: cross-project MCP resource references (project/server:uri format)
- Prompt summary service: LLM-generated summaries and chapter extraction
- System project bootstrap: ensures default project exists on startup
- Structural link health checks: enrichWithLinkStatus on prompt GET endpoints
- CLI: create prompt --priority/--link, create project --gated/--no-gated,
describe project shows prompts section, get prompts shows PRI/LINK/STATUS
- Apply/edit: priority, linkTarget, gated fields supported
- Shell completions: fish updated with new flags
- 1,253 tests passing across all packages
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 23:22:42 +00:00
# Map any resource alias to the canonical plural form for API calls
function __mcpctl_resolve_resource
switch $argv [ 1 ]
case server srv servers; echo servers
case instance inst instances; echo instances
case secret sec secrets; echo secrets
case template tpl templates; echo templates
case project proj projects; echo projects
case user users; echo users
case group groups; echo groups
case rbac rbac-definition rbac-binding; echo rbac
case prompt prompts; echo prompts
case promptrequest promptrequests pr; echo promptrequests
case '*' ; echo $argv [ 1 ]
end
end
2026-02-23 19:08:29 +00:00
function __mcpctl_get_resource_type
set -l tokens ( commandline -opc )
set -l found_cmd false
for tok in $tokens
if $found_cmd
feat: gated project experience & prompt intelligence
Implements the full gated session flow and prompt intelligence system:
- Prisma schema: add gated, priority, summary, chapters, linkTarget fields
- Session gate: state machine (gated → begin_session → ungated) with LLM-powered
tool selection based on prompt index
- Tag matcher: intelligent prompt-to-tool matching with project/server/action tags
- LLM selector: tiered provider selection (fast for gating, heavy for complex tasks)
- Link resolver: cross-project MCP resource references (project/server:uri format)
- Prompt summary service: LLM-generated summaries and chapter extraction
- System project bootstrap: ensures default project exists on startup
- Structural link health checks: enrichWithLinkStatus on prompt GET endpoints
- CLI: create prompt --priority/--link, create project --gated/--no-gated,
describe project shows prompts section, get prompts shows PRI/LINK/STATUS
- Apply/edit: priority, linkTarget, gated fields supported
- Shell completions: fish updated with new flags
- 1,253 tests passing across all packages
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 23:22:42 +00:00
if contains -- $tok $resource_aliases
__mcpctl_resolve_resource $tok
2026-02-23 19:08:29 +00:00
return
end
end
feat: gated project experience & prompt intelligence
Implements the full gated session flow and prompt intelligence system:
- Prisma schema: add gated, priority, summary, chapters, linkTarget fields
- Session gate: state machine (gated → begin_session → ungated) with LLM-powered
tool selection based on prompt index
- Tag matcher: intelligent prompt-to-tool matching with project/server/action tags
- LLM selector: tiered provider selection (fast for gating, heavy for complex tasks)
- Link resolver: cross-project MCP resource references (project/server:uri format)
- Prompt summary service: LLM-generated summaries and chapter extraction
- System project bootstrap: ensures default project exists on startup
- Structural link health checks: enrichWithLinkStatus on prompt GET endpoints
- CLI: create prompt --priority/--link, create project --gated/--no-gated,
describe project shows prompts section, get prompts shows PRI/LINK/STATUS
- Apply/edit: priority, linkTarget, gated fields supported
- Shell completions: fish updated with new flags
- 1,253 tests passing across all packages
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 23:22:42 +00:00
if contains -- $tok get describe delete edit patch
2026-02-23 19:08:29 +00:00
set found_cmd true
end
end
end
2026-02-23 19:23:21 +00:00
# Fetch resource names dynamically from the API (jq extracts only top-level names)
2026-02-23 19:08:29 +00:00
function __mcpctl_resource_names
set -l resource ( __mcpctl_get_resource_type )
if test -z " $resource "
return
end
2026-02-23 19:32:18 +00:00
# Instances don't have a name field — use server.name instead
if test " $resource " = "instances"
mcpctl get instances -o json 2 > /dev/null | jq -r '.[][].server.name' 2 > /dev/null
feat: gated project experience & prompt intelligence
Implements the full gated session flow and prompt intelligence system:
- Prisma schema: add gated, priority, summary, chapters, linkTarget fields
- Session gate: state machine (gated → begin_session → ungated) with LLM-powered
tool selection based on prompt index
- Tag matcher: intelligent prompt-to-tool matching with project/server/action tags
- LLM selector: tiered provider selection (fast for gating, heavy for complex tasks)
- Link resolver: cross-project MCP resource references (project/server:uri format)
- Prompt summary service: LLM-generated summaries and chapter extraction
- System project bootstrap: ensures default project exists on startup
- Structural link health checks: enrichWithLinkStatus on prompt GET endpoints
- CLI: create prompt --priority/--link, create project --gated/--no-gated,
describe project shows prompts section, get prompts shows PRI/LINK/STATUS
- Apply/edit: priority, linkTarget, gated fields supported
- Shell completions: fish updated with new flags
- 1,253 tests passing across all packages
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 23:22:42 +00:00
else if test " $resource " = "prompts" -o " $resource " = "promptrequests"
# Use -A to include all projects, not just global
mcpctl get $resource -A -o json 2 > /dev/null | jq -r '.[][].name' 2 > /dev/null
2026-02-23 19:32:18 +00:00
else
mcpctl get $resource -o json 2 > /dev/null | jq -r '.[][].name' 2 > /dev/null
end
2026-02-23 19:08:29 +00:00
end
# Fetch project names for --project value
function __mcpctl_project_names
2026-02-23 19:26:47 +00:00
mcpctl get projects -o json 2 > /dev/null | jq -r '.[][].name' 2 > /dev/null
2026-02-23 19:08:29 +00:00
end
2026-02-23 19:32:18 +00:00
# Helper: get the --project value from the command line
function __mcpctl_get_project_value
set -l tokens ( commandline -opc )
for i in ( seq ( count $tokens ) )
if test " $tokens [ $i ] " = "--project" ; and test $i -lt ( count $tokens )
echo $tokens [ ( math $i + 1 ) ]
return
end
end
end
# Servers currently attached to the project (for detach-server)
function __mcpctl_project_servers
set -l proj ( __mcpctl_get_project_value )
if test -z " $proj "
return
end
mcpctl --project $proj get servers -o json 2 > /dev/null | jq -r '.[][].name' 2 > /dev/null
end
# Servers NOT attached to the project (for attach-server)
function __mcpctl_available_servers
set -l proj ( __mcpctl_get_project_value )
if test -z " $proj "
# No project — show all servers
mcpctl get servers -o json 2 > /dev/null | jq -r '.[][].name' 2 > /dev/null
return
end
set -l all ( mcpctl get servers -o json 2 > /dev/null | jq -r '.[][].name' 2 > /dev/null)
set -l attached ( mcpctl --project $proj get servers -o json 2 > /dev/null | jq -r '.[][].name' 2 > /dev/null)
for s in $all
if not contains -- $s $attached
echo $s
end
end
end
2026-02-23 19:08:29 +00:00
# --project value completion
complete -c mcpctl -l project -xa '(__mcpctl_project_names)'
# Top-level commands (without --project)
complete -c mcpctl -n " not __mcpctl_has_project; and not __fish_seen_subcommand_from $commands " -a status -d 'Show status and connectivity'
complete -c mcpctl -n " not __mcpctl_has_project; and not __fish_seen_subcommand_from $commands " -a login -d 'Authenticate with mcpd'
complete -c mcpctl -n " not __mcpctl_has_project; and not __fish_seen_subcommand_from $commands " -a logout -d 'Log out'
complete -c mcpctl -n " not __mcpctl_has_project; and not __fish_seen_subcommand_from $commands " -a config -d 'Manage configuration'
complete -c mcpctl -n " not __mcpctl_has_project; and not __fish_seen_subcommand_from $commands " -a get -d 'List resources'
complete -c mcpctl -n " not __mcpctl_has_project; and not __fish_seen_subcommand_from $commands " -a describe -d 'Show resource details'
complete -c mcpctl -n " not __mcpctl_has_project; and not __fish_seen_subcommand_from $commands " -a delete -d 'Delete a resource'
complete -c mcpctl -n " not __mcpctl_has_project; and not __fish_seen_subcommand_from $commands " -a logs -d 'Get instance logs'
complete -c mcpctl -n " not __mcpctl_has_project; and not __fish_seen_subcommand_from $commands " -a create -d 'Create a resource'
complete -c mcpctl -n " not __mcpctl_has_project; and not __fish_seen_subcommand_from $commands " -a edit -d 'Edit a resource'
complete -c mcpctl -n " not __mcpctl_has_project; and not __fish_seen_subcommand_from $commands " -a apply -d 'Apply configuration from file'
complete -c mcpctl -n " not __mcpctl_has_project; and not __fish_seen_subcommand_from $commands " -a backup -d 'Backup configuration'
complete -c mcpctl -n " not __mcpctl_has_project; and not __fish_seen_subcommand_from $commands " -a restore -d 'Restore from backup'
feat: gated project experience & prompt intelligence
Implements the full gated session flow and prompt intelligence system:
- Prisma schema: add gated, priority, summary, chapters, linkTarget fields
- Session gate: state machine (gated → begin_session → ungated) with LLM-powered
tool selection based on prompt index
- Tag matcher: intelligent prompt-to-tool matching with project/server/action tags
- LLM selector: tiered provider selection (fast for gating, heavy for complex tasks)
- Link resolver: cross-project MCP resource references (project/server:uri format)
- Prompt summary service: LLM-generated summaries and chapter extraction
- System project bootstrap: ensures default project exists on startup
- Structural link health checks: enrichWithLinkStatus on prompt GET endpoints
- CLI: create prompt --priority/--link, create project --gated/--no-gated,
describe project shows prompts section, get prompts shows PRI/LINK/STATUS
- Apply/edit: priority, linkTarget, gated fields supported
- Shell completions: fish updated with new flags
- 1,253 tests passing across all packages
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 23:22:42 +00:00
complete -c mcpctl -n " not __mcpctl_has_project; and not __fish_seen_subcommand_from $commands " -a patch -d 'Patch a resource field'
2026-02-25 23:56:23 +00:00
complete -c mcpctl -n " not __mcpctl_has_project; and not __fish_seen_subcommand_from $commands " -a console -d 'Interactive MCP console'
2026-02-25 00:21:31 +00:00
complete -c mcpctl -n " not __mcpctl_has_project; and not __fish_seen_subcommand_from $commands " -a approve -d 'Approve a prompt request'
2026-02-23 19:08:29 +00:00
complete -c mcpctl -n " not __mcpctl_has_project; and not __fish_seen_subcommand_from $commands " -a help -d 'Show help'
# Project-scoped commands (with --project)
complete -c mcpctl -n " __mcpctl_has_project; and not __fish_seen_subcommand_from $project_commands " -a attach-server -d 'Attach a server to the project'
complete -c mcpctl -n " __mcpctl_has_project; and not __fish_seen_subcommand_from $project_commands " -a detach-server -d 'Detach a server from the project'
complete -c mcpctl -n " __mcpctl_has_project; and not __fish_seen_subcommand_from $project_commands " -a get -d 'List resources (scoped to project)'
complete -c mcpctl -n " __mcpctl_has_project; and not __fish_seen_subcommand_from $project_commands " -a describe -d 'Show resource details'
complete -c mcpctl -n " __mcpctl_has_project; and not __fish_seen_subcommand_from $project_commands " -a delete -d 'Delete a resource'
complete -c mcpctl -n " __mcpctl_has_project; and not __fish_seen_subcommand_from $project_commands " -a logs -d 'Get instance logs'
complete -c mcpctl -n " __mcpctl_has_project; and not __fish_seen_subcommand_from $project_commands " -a create -d 'Create a resource'
complete -c mcpctl -n " __mcpctl_has_project; and not __fish_seen_subcommand_from $project_commands " -a edit -d 'Edit a resource'
complete -c mcpctl -n " __mcpctl_has_project; and not __fish_seen_subcommand_from $project_commands " -a help -d 'Show help'
# Resource types — only when resource type not yet selected
feat: gated project experience & prompt intelligence
Implements the full gated session flow and prompt intelligence system:
- Prisma schema: add gated, priority, summary, chapters, linkTarget fields
- Session gate: state machine (gated → begin_session → ungated) with LLM-powered
tool selection based on prompt index
- Tag matcher: intelligent prompt-to-tool matching with project/server/action tags
- LLM selector: tiered provider selection (fast for gating, heavy for complex tasks)
- Link resolver: cross-project MCP resource references (project/server:uri format)
- Prompt summary service: LLM-generated summaries and chapter extraction
- System project bootstrap: ensures default project exists on startup
- Structural link health checks: enrichWithLinkStatus on prompt GET endpoints
- CLI: create prompt --priority/--link, create project --gated/--no-gated,
describe project shows prompts section, get prompts shows PRI/LINK/STATUS
- Apply/edit: priority, linkTarget, gated fields supported
- Shell completions: fish updated with new flags
- 1,253 tests passing across all packages
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 23:22:42 +00:00
complete -c mcpctl -n "__fish_seen_subcommand_from get describe delete patch; and __mcpctl_needs_resource_type" -a " $resources " -d 'Resource type'
complete -c mcpctl -n "__fish_seen_subcommand_from edit; and __mcpctl_needs_resource_type" -a 'servers secrets projects groups rbac prompts promptrequests' -d 'Resource type'
2026-02-23 19:08:29 +00:00
# Resource names — after resource type is selected
feat: gated project experience & prompt intelligence
Implements the full gated session flow and prompt intelligence system:
- Prisma schema: add gated, priority, summary, chapters, linkTarget fields
- Session gate: state machine (gated → begin_session → ungated) with LLM-powered
tool selection based on prompt index
- Tag matcher: intelligent prompt-to-tool matching with project/server/action tags
- LLM selector: tiered provider selection (fast for gating, heavy for complex tasks)
- Link resolver: cross-project MCP resource references (project/server:uri format)
- Prompt summary service: LLM-generated summaries and chapter extraction
- System project bootstrap: ensures default project exists on startup
- Structural link health checks: enrichWithLinkStatus on prompt GET endpoints
- CLI: create prompt --priority/--link, create project --gated/--no-gated,
describe project shows prompts section, get prompts shows PRI/LINK/STATUS
- Apply/edit: priority, linkTarget, gated fields supported
- Shell completions: fish updated with new flags
- 1,253 tests passing across all packages
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 23:22:42 +00:00
complete -c mcpctl -n "__fish_seen_subcommand_from get describe delete edit patch; and not __mcpctl_needs_resource_type" -a '(__mcpctl_resource_names)' -d 'Resource name'
2026-02-23 19:08:29 +00:00
2026-02-23 19:36:45 +00:00
# Helper: check if attach-server/detach-server already has a server argument
function __mcpctl_needs_server_arg
set -l tokens ( commandline -opc )
set -l found_cmd false
for tok in $tokens
if $found_cmd
if not string match -q -- '-*' $tok
return 1 # server arg already present
end
end
if contains -- $tok attach-server detach-server
set found_cmd true
end
end
if $found_cmd
return 0 # command found but no server arg yet
end
return 1
end
# attach-server: show servers NOT in the project (only if no server arg yet)
complete -c mcpctl -n "__fish_seen_subcommand_from attach-server; and __mcpctl_needs_server_arg" -a '(__mcpctl_available_servers)' -d 'Server'
2026-02-23 19:32:18 +00:00
2026-02-23 19:36:45 +00:00
# detach-server: show servers IN the project (only if no server arg yet)
complete -c mcpctl -n "__fish_seen_subcommand_from detach-server; and __mcpctl_needs_server_arg" -a '(__mcpctl_project_servers)' -d 'Server'
2026-02-23 19:32:18 +00:00
2026-02-23 19:08:29 +00:00
# get/describe options
2026-02-23 12:00:31 +00:00
complete -c mcpctl -n "__fish_seen_subcommand_from get" -s o -l output -d 'Output format' -xa 'table json yaml'
feat: gated project experience & prompt intelligence
Implements the full gated session flow and prompt intelligence system:
- Prisma schema: add gated, priority, summary, chapters, linkTarget fields
- Session gate: state machine (gated → begin_session → ungated) with LLM-powered
tool selection based on prompt index
- Tag matcher: intelligent prompt-to-tool matching with project/server/action tags
- LLM selector: tiered provider selection (fast for gating, heavy for complex tasks)
- Link resolver: cross-project MCP resource references (project/server:uri format)
- Prompt summary service: LLM-generated summaries and chapter extraction
- System project bootstrap: ensures default project exists on startup
- Structural link health checks: enrichWithLinkStatus on prompt GET endpoints
- CLI: create prompt --priority/--link, create project --gated/--no-gated,
describe project shows prompts section, get prompts shows PRI/LINK/STATUS
- Apply/edit: priority, linkTarget, gated fields supported
- Shell completions: fish updated with new flags
- 1,253 tests passing across all packages
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 23:22:42 +00:00
complete -c mcpctl -n "__fish_seen_subcommand_from get" -l project -d 'Filter by project' -xa '(__mcpctl_project_names)'
complete -c mcpctl -n "__fish_seen_subcommand_from get" -s A -l all -d 'Show all resources across projects'
2026-02-23 12:00:31 +00:00
complete -c mcpctl -n "__fish_seen_subcommand_from describe" -s o -l output -d 'Output format' -xa 'detail json yaml'
complete -c mcpctl -n "__fish_seen_subcommand_from describe" -l show-values -d 'Show secret values'
feat: implement v2 3-tier architecture (mcpctl → mcplocal → mcpd)
- Rename local-proxy to mcplocal with HTTP server, LLM pipeline, mcpd discovery
- Add LLM pre-processing: token estimation, filter cache, metrics, Gemini CLI + DeepSeek providers
- Add mcpd auth (login/logout) and MCP proxy endpoints
- Update CLI: dual URLs (mcplocalUrl/mcpdUrl), auth commands, --direct flag
- Add tiered health monitoring, shell completions, e2e integration tests
- 57 test files, 597 tests passing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 11:42:06 +00:00
2026-02-23 12:00:31 +00:00
# login options
complete -c mcpctl -n "__fish_seen_subcommand_from login" -l url -d 'mcpd URL' -x
complete -c mcpctl -n "__fish_seen_subcommand_from login" -l email -d 'Email address' -x
complete -c mcpctl -n "__fish_seen_subcommand_from login" -l password -d 'Password' -x
# config subcommands
2026-02-25 00:21:31 +00:00
set -l config_cmds view set path reset claude claude-generate setup impersonate
2026-02-23 12:00:31 +00:00
complete -c mcpctl -n " __fish_seen_subcommand_from config; and not __fish_seen_subcommand_from $config_cmds " -a view -d 'Show configuration'
complete -c mcpctl -n " __fish_seen_subcommand_from config; and not __fish_seen_subcommand_from $config_cmds " -a set -d 'Set a config value'
complete -c mcpctl -n " __fish_seen_subcommand_from config; and not __fish_seen_subcommand_from $config_cmds " -a path -d 'Show config file path'
complete -c mcpctl -n " __fish_seen_subcommand_from config; and not __fish_seen_subcommand_from $config_cmds " -a reset -d 'Reset to defaults'
2026-02-24 00:52:05 +00:00
complete -c mcpctl -n " __fish_seen_subcommand_from config; and not __fish_seen_subcommand_from $config_cmds " -a claude -d 'Generate .mcp.json for project'
2026-02-25 00:21:31 +00:00
complete -c mcpctl -n " __fish_seen_subcommand_from config; and not __fish_seen_subcommand_from $config_cmds " -a setup -d 'Configure LLM provider'
2026-02-23 12:00:31 +00:00
complete -c mcpctl -n " __fish_seen_subcommand_from config; and not __fish_seen_subcommand_from $config_cmds " -a impersonate -d 'Impersonate a user'
feat: implement v2 3-tier architecture (mcpctl → mcplocal → mcpd)
- Rename local-proxy to mcplocal with HTTP server, LLM pipeline, mcpd discovery
- Add LLM pre-processing: token estimation, filter cache, metrics, Gemini CLI + DeepSeek providers
- Add mcpd auth (login/logout) and MCP proxy endpoints
- Update CLI: dual URLs (mcplocalUrl/mcpdUrl), auth commands, --direct flag
- Add tiered health monitoring, shell completions, e2e integration tests
- 57 test files, 597 tests passing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 11:42:06 +00:00
2026-02-23 12:00:31 +00:00
# create subcommands
2026-02-25 00:21:31 +00:00
set -l create_cmds server secret project user group rbac prompt promptrequest
2026-02-23 12:00:31 +00:00
complete -c mcpctl -n " __fish_seen_subcommand_from create; and not __fish_seen_subcommand_from $create_cmds " -a server -d 'Create a server'
complete -c mcpctl -n " __fish_seen_subcommand_from create; and not __fish_seen_subcommand_from $create_cmds " -a secret -d 'Create a secret'
complete -c mcpctl -n " __fish_seen_subcommand_from create; and not __fish_seen_subcommand_from $create_cmds " -a project -d 'Create a project'
complete -c mcpctl -n " __fish_seen_subcommand_from create; and not __fish_seen_subcommand_from $create_cmds " -a user -d 'Create a user'
complete -c mcpctl -n " __fish_seen_subcommand_from create; and not __fish_seen_subcommand_from $create_cmds " -a group -d 'Create a group'
complete -c mcpctl -n " __fish_seen_subcommand_from create; and not __fish_seen_subcommand_from $create_cmds " -a rbac -d 'Create an RBAC binding'
2026-02-25 00:21:31 +00:00
complete -c mcpctl -n " __fish_seen_subcommand_from create; and not __fish_seen_subcommand_from $create_cmds " -a prompt -d 'Create an approved prompt'
complete -c mcpctl -n " __fish_seen_subcommand_from create; and not __fish_seen_subcommand_from $create_cmds " -a promptrequest -d 'Create a prompt request'
feat: implement v2 3-tier architecture (mcpctl → mcplocal → mcpd)
- Rename local-proxy to mcplocal with HTTP server, LLM pipeline, mcpd discovery
- Add LLM pre-processing: token estimation, filter cache, metrics, Gemini CLI + DeepSeek providers
- Add mcpd auth (login/logout) and MCP proxy endpoints
- Update CLI: dual URLs (mcplocalUrl/mcpdUrl), auth commands, --direct flag
- Add tiered health monitoring, shell completions, e2e integration tests
- 57 test files, 597 tests passing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 11:42:06 +00:00
feat: gated project experience & prompt intelligence
Implements the full gated session flow and prompt intelligence system:
- Prisma schema: add gated, priority, summary, chapters, linkTarget fields
- Session gate: state machine (gated → begin_session → ungated) with LLM-powered
tool selection based on prompt index
- Tag matcher: intelligent prompt-to-tool matching with project/server/action tags
- LLM selector: tiered provider selection (fast for gating, heavy for complex tasks)
- Link resolver: cross-project MCP resource references (project/server:uri format)
- Prompt summary service: LLM-generated summaries and chapter extraction
- System project bootstrap: ensures default project exists on startup
- Structural link health checks: enrichWithLinkStatus on prompt GET endpoints
- CLI: create prompt --priority/--link, create project --gated/--no-gated,
describe project shows prompts section, get prompts shows PRI/LINK/STATUS
- Apply/edit: priority, linkTarget, gated fields supported
- Shell completions: fish updated with new flags
- 1,253 tests passing across all packages
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 23:22:42 +00:00
# create prompt/promptrequest options
complete -c mcpctl -n "__fish_seen_subcommand_from create; and __fish_seen_subcommand_from prompt promptrequest" -l project -d 'Project name' -xa '(__mcpctl_project_names)'
complete -c mcpctl -n "__fish_seen_subcommand_from create; and __fish_seen_subcommand_from prompt promptrequest" -l content -d 'Prompt content text' -x
complete -c mcpctl -n "__fish_seen_subcommand_from create; and __fish_seen_subcommand_from prompt promptrequest" -l content-file -d 'Read content from file' -rF
complete -c mcpctl -n "__fish_seen_subcommand_from create; and __fish_seen_subcommand_from prompt promptrequest" -l priority -d 'Priority 1-10' -xa '(seq 1 10)'
complete -c mcpctl -n "__fish_seen_subcommand_from create; and __fish_seen_subcommand_from prompt" -l link -d 'Link to MCP resource (project/server:uri)' -x
# create project --gated/--no-gated
complete -c mcpctl -n "__fish_seen_subcommand_from create; and __fish_seen_subcommand_from project" -l gated -d 'Enable gated sessions'
complete -c mcpctl -n "__fish_seen_subcommand_from create; and __fish_seen_subcommand_from project" -l no-gated -d 'Disable gated sessions'
# logs: takes a server/instance name, then options
function __mcpctl_instance_names
mcpctl get instances -o json 2 > /dev/null | jq -r '.[][].server.name' 2 > /dev/null
end
complete -c mcpctl -n "__fish_seen_subcommand_from logs" -a '(__mcpctl_instance_names)' -d 'Server name'
2026-02-23 12:00:31 +00:00
complete -c mcpctl -n "__fish_seen_subcommand_from logs" -l tail -d 'Number of lines' -x
complete -c mcpctl -n "__fish_seen_subcommand_from logs" -l since -d 'Since timestamp' -x
complete -c mcpctl -n "__fish_seen_subcommand_from logs" -s f -l follow -d 'Follow log output'
feat: implement v2 3-tier architecture (mcpctl → mcplocal → mcpd)
- Rename local-proxy to mcplocal with HTTP server, LLM pipeline, mcpd discovery
- Add LLM pre-processing: token estimation, filter cache, metrics, Gemini CLI + DeepSeek providers
- Add mcpd auth (login/logout) and MCP proxy endpoints
- Update CLI: dual URLs (mcplocalUrl/mcpdUrl), auth commands, --direct flag
- Add tiered health monitoring, shell completions, e2e integration tests
- 57 test files, 597 tests passing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 11:42:06 +00:00
# backup options
complete -c mcpctl -n "__fish_seen_subcommand_from backup" -s o -l output -d 'Output file' -rF
complete -c mcpctl -n "__fish_seen_subcommand_from backup" -s p -l password -d 'Encryption password' -x
# restore options
complete -c mcpctl -n "__fish_seen_subcommand_from restore" -s i -l input -d 'Input file' -rF
complete -c mcpctl -n "__fish_seen_subcommand_from restore" -s p -l password -d 'Decryption password' -x
complete -c mcpctl -n "__fish_seen_subcommand_from restore" -s c -l conflict -d 'Conflict strategy' -xa 'skip overwrite fail'
feat: gated project experience & prompt intelligence
Implements the full gated session flow and prompt intelligence system:
- Prisma schema: add gated, priority, summary, chapters, linkTarget fields
- Session gate: state machine (gated → begin_session → ungated) with LLM-powered
tool selection based on prompt index
- Tag matcher: intelligent prompt-to-tool matching with project/server/action tags
- LLM selector: tiered provider selection (fast for gating, heavy for complex tasks)
- Link resolver: cross-project MCP resource references (project/server:uri format)
- Prompt summary service: LLM-generated summaries and chapter extraction
- System project bootstrap: ensures default project exists on startup
- Structural link health checks: enrichWithLinkStatus on prompt GET endpoints
- CLI: create prompt --priority/--link, create project --gated/--no-gated,
describe project shows prompts section, get prompts shows PRI/LINK/STATUS
- Apply/edit: priority, linkTarget, gated fields supported
- Shell completions: fish updated with new flags
- 1,253 tests passing across all packages
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 23:22:42 +00:00
# approve: first arg is resource type, second is name
function __mcpctl_approve_needs_type
set -l tokens ( commandline -opc )
set -l found false
for tok in $tokens
if $found
if contains -- $tok promptrequest promptrequests
return 1 # type already given
end
end
if test " $tok " = "approve"
set found true
end
end
if $found
return 0 # approve found but no type yet
end
return 1
end
function __mcpctl_approve_needs_name
set -l tokens ( commandline -opc )
set -l found_type false
for tok in $tokens
if $found_type
# next non-flag token after type is the name
if not string match -q -- '-*' $tok
return 1 # name already given
end
end
if contains -- $tok promptrequest promptrequests
set found_type true
end
end
if $found_type
return 0 # type given but no name yet
end
return 1
end
function __mcpctl_promptrequest_names
mcpctl get promptrequests -A -o json 2 > /dev/null | jq -r '.[][].name' 2 > /dev/null
end
complete -c mcpctl -n "__fish_seen_subcommand_from approve; and __mcpctl_approve_needs_type" -a 'promptrequest' -d 'Resource type'
complete -c mcpctl -n "__fish_seen_subcommand_from approve; and __mcpctl_approve_needs_name" -a '(__mcpctl_promptrequest_names)' -d 'Prompt request name'
2026-02-25 00:21:31 +00:00
2026-02-25 23:56:23 +00:00
# console: takes a project name as first argument
function __mcpctl_console_needs_project
set -l tokens ( commandline -opc )
set -l found false
for tok in $tokens
if $found
if not string match -q -- '-*' $tok
return 1 # project arg already present
end
end
if test " $tok " = "console"
set found true
end
end
if $found
return 0 # console found but no project yet
end
return 1
end
complete -c mcpctl -n "__fish_seen_subcommand_from console; and __mcpctl_console_needs_project" -a '(__mcpctl_project_names)' -d 'Project name'
feat: implement v2 3-tier architecture (mcpctl → mcplocal → mcpd)
- Rename local-proxy to mcplocal with HTTP server, LLM pipeline, mcpd discovery
- Add LLM pre-processing: token estimation, filter cache, metrics, Gemini CLI + DeepSeek providers
- Add mcpd auth (login/logout) and MCP proxy endpoints
- Update CLI: dual URLs (mcplocalUrl/mcpdUrl), auth commands, --direct flag
- Add tiered health monitoring, shell completions, e2e integration tests
- 57 test files, 597 tests passing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 11:42:06 +00:00
# apply takes a file
2026-02-23 12:00:31 +00:00
complete -c mcpctl -n "__fish_seen_subcommand_from apply" -s f -l file -d 'Configuration file' -rF
feat: implement v2 3-tier architecture (mcpctl → mcplocal → mcpd)
- Rename local-proxy to mcplocal with HTTP server, LLM pipeline, mcpd discovery
- Add LLM pre-processing: token estimation, filter cache, metrics, Gemini CLI + DeepSeek providers
- Add mcpd auth (login/logout) and MCP proxy endpoints
- Update CLI: dual URLs (mcplocalUrl/mcpdUrl), auth commands, --direct flag
- Add tiered health monitoring, shell completions, e2e integration tests
- 57 test files, 597 tests passing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 11:42:06 +00:00
complete -c mcpctl -n "__fish_seen_subcommand_from apply" -F
# help completions
complete -c mcpctl -n "__fish_seen_subcommand_from help" -a " $commands "