Class: Anima::CLI::Mcp::Secrets

Inherits:
Thor
  • Object
show all
Defined in:
lib/anima/cli/mcp/secrets.rb

Overview

CLI commands for managing MCP secrets stored in the encrypted secrets table. Secrets are referenced in mcp.toml via ${credential:key_name} syntax.

Examples:

Store a secret

anima mcp secrets set linear_api_key=sk-xxx

List stored secret names

anima mcp secrets list

Remove a secret

anima mcp secrets remove linear_api_key

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.exit_on_failure?Boolean

Returns:

  • (Boolean)


21
22
23
# File 'lib/anima/cli/mcp/secrets.rb', line 21

def self.exit_on_failure?
  true
end

Instance Method Details

#listObject



41
42
43
44
45
46
47
48
49
50
51
# File 'lib/anima/cli/mcp/secrets.rb', line 41

def list
  keys = require_mcp_secrets.list

  if keys.empty?
    say "No MCP secrets stored.", :yellow
    say "Add one with: anima mcp secrets set KEY=VALUE"
    return
  end

  keys.each { |key| say "  #{key}" }
end

#remove(key) ⇒ Object



54
55
56
57
58
59
60
61
62
63
# File 'lib/anima/cli/mcp/secrets.rb', line 54

def remove(key)
  secrets = require_mcp_secrets
  unless secrets.list.include?(key)
    say "Error: secret '#{key}' not found", :red
    exit 1
  end

  secrets.remove(key)
  say "Removed secret '#{key}'.", :green
end

#set(pair) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/anima/cli/mcp/secrets.rb', line 26

def set(pair)
  key, value = pair.split("=", 2)
  unless value
    say "Error: expected KEY=VALUE format, got '#{pair}'", :red
    exit 1
  end

  require_mcp_secrets.set(key, value)
  say "Stored secret '#{key}'.", :green
rescue ArgumentError => argument_error
  say "Error: #{argument_error.message}", :red
  exit 1
end