Class: Mcp::Secrets

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

Overview

CRUD operations for MCP server secrets stored in the encrypted secrets table. Secrets live under the mcp namespace:

Mcp::Secrets.set("linear_api_key", "sk-xxx")
Mcp::Secrets.get("linear_api_key") #=> "sk-xxx"

Referenced in mcp.toml via ${credential:key_name} syntax, resolved at runtime by Config#interpolate_credentials.

Examples:

Storing a secret

Mcp::Secrets.set("linear_api_key", "sk-xxx")

Retrieving a secret

Mcp::Secrets.get("linear_api_key") #=> "sk-xxx"

Constant Summary collapse

NAMESPACE =
"mcp"
VALID_KEY_PATTERN =

Keys must be interpolatable via $credential:key_name in mcp.toml.

/\A\w+\z/

Class Method Summary collapse

Class Method Details

.get(key) ⇒ String?

Retrieves a secret from encrypted storage.

Parameters:

  • key (String)

    secret identifier

Returns:

  • (String, nil)

    secret value or nil if not found



41
42
43
# File 'lib/mcp/secrets.rb', line 41

def get(key)
  CredentialStore.read(NAMESPACE, key)
end

.listArray<String>

Lists all stored MCP secret keys (not values).

Returns:

  • (Array<String>)

    secret names



48
49
50
# File 'lib/mcp/secrets.rb', line 48

def list
  CredentialStore.list(NAMESPACE)
end

.remove(key) ⇒ void

This method returns an undefined value.

Removes a secret from encrypted storage.

Parameters:

  • key (String)

    secret identifier to remove



56
57
58
# File 'lib/mcp/secrets.rb', line 56

def remove(key)
  CredentialStore.remove(NAMESPACE, key)
end

.set(key, value) ⇒ void

This method returns an undefined value.

Stores a secret in encrypted storage.

Parameters:

  • key (String)

    secret identifier (e.g. “linear_api_key”)

  • value (String)

    secret value

Raises:

  • (ArgumentError)

    if key contains characters that cannot be referenced via ${credential:key_name} syntax



32
33
34
35
# File 'lib/mcp/secrets.rb', line 32

def set(key, value)
  validate_key!(key)
  CredentialStore.write(NAMESPACE, key => value)
end