Skip to main content
Glama
Agnuxo1

enigmagent-mcp

by Agnuxo1

enigmagent-mcp 2.0.0

enigmagent-mcp is a local encrypted vault server for MCP-capable clients. It stores secret values with an Argon2id-derived AES-256-GCM key and keeps the vault file encrypted at rest.

Version 2.0.0 makes the security boundary explicit:

  • MCP starts in metadata-only mode. Raw secret resolution is disabled unless the operator passes --allow-raw-resolve or sets ENIGMAGENT_ALLOW_RAW_RESOLVE=1.

  • REST binds to 127.0.0.1 and requires a 32–256 character Bearer token.

  • REST requests have bounded headers, bodies, and timeouts; responses do not include arbitrary exception messages or permissive browser CORS.

  • Vault writes use a temporary file, flush, replacement, and a recovery backup.

  • Version 1 vaults remain readable. New vaults use format version 2 and the versioned KDF context enigma/v2.

Raw resolution is deliberately an opt-in escape hatch. A caller-declared origin is not proof of the network destination, and a trusted MCP client can still pass returned plaintext to its model. Do not enable raw resolution for an untrusted client or a shared process.

Install and run

npx enigmagent-mcp@2.0.0 --vault ./my.vault.json

The first run prompts for the existing vault credentials when attached to a terminal. For a trusted headless process, set ENIGMAGENT_USER and ENIGMAGENT_PASS in its private environment. The server does not print either value.

Related MCP server: mcp-keyward

MCP modes

The stdio transport implements bounded JSON-RPC MCP initialization, ping, tools/list, and tools/call. The default tool is:

  • enigmagent_list: names, domains, and creation timestamps only.

With explicit raw-resolution opt-in, it additionally exposes:

  • enigmagent_resolve: returns a value only when the requested origin matches the entry's domain binding.

The origin is normalized and limited to HTTP(S) URLs without embedded user credentials. Notifications, malformed JSON, oversized frames, invalid tool arguments, and calls before initialization are handled without terminating the process.

Authenticated REST

set ENIGMAGENT_API_TOKEN=use-a-random-32-character-token-or-longer
npx enigmagent-mcp@2.0.0 --mode rest --port 3737 --vault ./my.vault.json

GET /health is a minimal unauthenticated liveness check. GET /status and GET /list require Authorization: Bearer <token>. POST /resolve also requires the token, JSON content type, and the explicit raw-resolution flag. The service rejects browser-origin requests and binds only to loopback.

Client configuration adapters

integrations.js provides tested configuration builders for Claude Desktop, Cursor, Continue, Cline, Open WebUI, AnythingLLM, LM Studio, Zed, Goose, and Windsurf. They are maintained configuration examples using the standard MCP stdio command; they are not upstream plugins, endorsements, or claims of adoption by those projects.

Development and verification

npm ci
npm test
npm run check
npm run benchmark
npm pack --dry-run

The tests cover encrypted-at-rest behavior, domain matching, wrong credentials, version-1 migration reads, backup recovery, bounded MCP framing and session ordering, authenticated REST, and all ten configuration adapters. The benchmark uses synthetic data and reports create/add/resolve latency without printing a secret.

Release contents

The historical 1.0.5 tree is preserved in versions/1.0.5/ with its source archive and SHA-256 manifest. The 2.0.0 release is represented consistently in package.json, server.json, and manifest.json; publication remains subject to the repository's CI and release checks.

Scope and threat model

This project protects vault contents from ordinary plaintext-at-rest exposure and from accidental return by the metadata listing tool. It does not protect against a compromised operating system, a process with access to the unlocked memory, malicious client code, side channels, swap/core dumps, or an operator who explicitly enables raw resolution for an untrusted model. Review SECURITY.md in the main EnigmAgent project for broader ecosystem guidance.

MIT licensed. See LICENSE.

Available Tools

2 tools
enigmagent_listA

List all secret names and their bound domains. Never returns actual secret values.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite no annotations, the description discloses a key behavioral trait: it never returns secret values, which informs the agent about safety and limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise with two sentences, front-loaded with the core purpose, and no superfluous text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with no parameters and no output schema, the description covers the essential purpose and a critical behavioral constraint, though pagination or ordering details are absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so baseline 4 is appropriate as per instructions; no additional param info needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it lists secret names and bound domains, and explicitly distinguishes from a value-returning tool by stating 'Never returns actual secret values.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus the sibling 'enigmagent_resolve', but the description's emphasis on listing metadata implies usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

enigmagent_resolveA

Resolve a secret placeholder from the EnigmAgent vault. Returns the decrypted value. Domain binding is enforced: the origin must match the secret's bound domain.

ParametersJSON Schema
NameRequiredDescriptionDefault
placeholderYesThe secret name to resolve. Supports {{NAME}}, {{LOGIN:domain}}, {{DOC:filename}} syntax (pass without the braces).
originYesThe requesting origin URL (e.g. https://api.example.com). Must match the secret's domain binding.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description correctly notes returns decrypted value and domain enforcement, but lacks details on error conditions (e.g., mismatch) or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description mentions return value but omits error handling or detailed result format. Adequate for a simple tool but could be more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds valuable context to both parameters: placeholder syntax variants and origin requirement, going beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Resolve' and the resource 'secret placeholder from the EnigmAgent vault', and distinguishes from sibling 'enigmagent_list' by specifying it returns the decrypted value.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the domain binding and placeholder syntax, but does not explicitly state when to use this tool versus alternatives or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv0.1.0
    • First observedenigmagent_list
    • First observedenigmagent_resolve

TDQS

A3.9/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have completely distinct purposes: one lists secret names and domains, the other resolves placeholder values. There is no ambiguity between them.

Naming Consistency5/5

Both tools share a consistent 'enigmagent_' prefix followed by a verb ('list', 'resolve'), following a predictable verb_noun pattern.

Tool Count3/5

With only 2 tools, the set is on the low end of what is reasonable. While each tool is distinct, the total number feels minimal for a secret management server.

Completeness2/5

The tool surface lacks basic CRUD operations like create, update, or delete secrets. Agents can only list and resolve, which is insufficient for comprehensive secret management.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    OS keychain secrets for AI coding agents, over MCP. Anchors credentials to the native vault (macOS Keychain, Linux Secret Service, Windows Credential Vault) and exposes them through 44 policy-governed tools: per-environment values, TTL, linked rotation, encrypted transfer bundles, redacted exec, and a tamper-evident audit log. Local-first, no cloud account.
    46
    145 npm
    4
    AGPL 3.0
  • A
    license
    A
    quality
    D
    maintenance
    Encrypted secrets vault that blinds AI agents to API keys. Stores secrets in AES-256-GCM encrypted SQLite vault, resolves them at runtime via MCP values never appear in LLM conversation transcripts. Sandbox .env files with deterministic fakes.
    7
    54 npm
    3
    MIT