sops-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SOPS_AGE_KEY | No | Age private key — required for any mutation tool (rotate, add, update, rename, delete) | |
| SOPS_MCP_HOST | No | Bind host for SSE transport | 127.0.0.1 |
| SOPS_MCP_PORT | No | Bind port for SSE transport | 55090 |
| SOPS_MCP_API_TOKEN | No | API token for SSE authentication. Required when SSE transport binds to 0.0.0.0. | |
| SOPS_MCP_LOG_LEVEL | No | Log level | WARNING |
| SOPS_MCP_TRANSPORT | No | Transport: stdio or sse | stdio |
| SOPS_AGE_RECIPIENTS | No | Alternative to SOPS_MCP_AGE_PUBLIC_KEY. Must be set if SOPS_MCP_AGE_PUBLIC_KEY is not set. | |
| SOPS_MCP_SOPS_BINARY | No | Path to sops binary | sops |
| SOPS_MCP_ALLOWED_HOSTS | No | Comma-separated allowlist for the SSE Host header (DNS rebinding protection) | 127.0.0.1,127.0.0.1:*,localhost,localhost:* |
| SOPS_MCP_AGE_PUBLIC_KEY | No | Age public key for encryption. Must be set if SOPS_AGE_RECIPIENTS is not set. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| sops_create_secretsA | Generate and encrypt secrets as SOPS YAML. Returns encrypted content for the client to write to disk. Supports three sources: 'generated' (cryptographic randomness), 'external' (user-provided values), and 'derived' (computed from another key in the same file via a transform such as pbkdf2_sha512_authelia). Derived secret plaintexts are returned in the response so they can be copied into config files. |
| sops_list_secretsA | List key names and metadata from a SOPS-encrypted file. No decryption needed — reads key names from encrypted YAML and metadata from the _meta_unencrypted block. |
| sops_rotate_generatedA | Re-generate 'generated' secrets with new random values while preserving 'external' secrets. Requires a private key for the target domain. |
| sops_add_secretsA | Add new secrets to an existing SOPS-encrypted file. Decrypts the file, merges in new secrets, and re-encrypts — preserving all existing values and metadata. Rejects keys that already exist in the file. Supports generated, external, and derived sources. Requires a private key for the target domain. |
| sops_add_metadataA | Add _meta_unencrypted metadata to an existing SOPS-encrypted file that lacks it. Decrypts the file, adds metadata, and re-encrypts preserving original plaintext values. Requires a private key for the target domain. |
| sops_delete_secretsA | Delete one or more keys from an existing SOPS-encrypted file. Removes both the encrypted value and the _meta_unencrypted entry. Rejects deletion of keys that other derived secrets depend on unless those dependents are also in the delete list. Requires a private key for the domain. |
| sops_rename_secretA | Rename a key in an existing SOPS-encrypted file. Preserves the value, source type, and metadata. Updates 'from' references in any derived secrets that depend on the renamed key. Requires a private key for the target domain. |
| sops_update_externalA | Replace the value of an 'external' secret (e.g. after the user rotated an upstream API key). Rejects attempts to update 'generated' or 'derived' secrets — use sops_rotate_generated for those. Recomputes any derived secrets that reference this key. Requires a private key for the domain. |
| sops_create_oidc_secretA | Convenience tool: create an Authelia-compatible OIDC client secret. Generates KEY_NAME as a 64-char alphanumeric 'generated' secret AND KEY_NAME_HASH as a 'derived' PBKDF2-SHA512 hash of it, stored together in a new encrypted file. The hash is returned in the response for pasting into Authelia's configuration.yml. Equivalent to calling sops_create_secrets with one generated and one derived (pbkdf2_sha512_authelia) entry. |
| sops_create_k8s_secretA | Create a Kubernetes Secret manifest (apiVersion v1, kind Secret) with its values under stringData, SOPS-encrypted so that only data/stringData is ciphertext and apiVersion, kind, metadata and type stay readable. The result decrypts with sops -d, ksops or Flux straight into an applyable manifest; commit it exactly as returned. Secrets take the same sources as sops_create_secrets. The file is create-only: every other mutation tool refuses it, so to change or rotate anything, call this tool again with the full set. Metadata (domain, sources, generation parameters, never a value) goes in the sops-mcp.privacyplaybook.com/meta annotation. |
| sops_list_domainsA | List the key domains this server is configured with: their names, age recipients (public keys), how many private keys the server holds for each, and whether the domain can decrypt or only encrypt. Never returns private key material. |
| sops_rekeyA | Re-encrypt a SOPS file onto the current recipient list of the named domain, updating its recorded domain. This is the tool to run after a domain's recipients change, and the way to clear the 'recipients do not match' refusal from the other mutation tools. It changes who can read the file, so 'domain' is required rather than inferred. Requires a private key for that domain. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 12 tools
Most tools have clearly distinct purposes: create/add/delete/rename/rotate/update/rekey target different lifecycle operations, and descriptions explicitly define boundaries. The main overlap is the convenience tools sops_create_oidc_secret and sops_create_k8s_secret versus generic sops_create_secrets, though their specialized outputs make the distinction workable.
Every tool uses the same sops_ prefix, snake_case, and action-oriented naming, generally verb_noun (create_secrets, list_domains, delete_secrets). The few shorter names like sops_rekey are still predictable and consistent with the set.
With 12 tools, the server stays within a well-scoped range for a SOPS secrets manager. Each tool corresponds to a meaningful operation, and even the convenience tools earn their place by producing specialized outputs.
The surface covers the main SOPS lifecycle: create, list, add, delete, rename, rotate, update external values, rekey, metadata, and Kubernetes/OIDC specializations. Minor gaps remain, such as no direct tool for retrieving/decrypting an existing secret value or updating/removing existing metadata.