Skip to content

Releases: emiliano-go/gpg-mcp

Release list

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 25 Oct 16:48
v0.1.0
406b686

v0.1.0

First public release of gpg-mcp, a security-focused MCP server for GnuPG. Private keys stay in gpg-agent, passphrases go only to pinentry, and high-risk operations require explicit human approval.

Added

  • Typed MCP tools for signing, verification, encryption, decryption and key management. The server exposes a fixed tool surface with no raw GnuPG command tool.
  • Isolated keyring and first-run setup. gpg-mcp init creates a 0700 keyring and a 0600 config; gpg-mcp doctor checks the binary, keyring and policy.
  • Human approval and destructive confirmation. High-risk operations use MCP elicitation with a local zenity fallback; destructive operations require the fingerprint suffix.
  • Revocation and import controls. Certificates are validated in an ephemeral keyring; generic imports reject secret and revocation material.
  • Actual-key decryption checks. The key GnuPG reports is checked against the allow-list; symmetric and public-key routes are separate.
  • Audit ledger. Records carry approval, intent and outcome phases; audit_required defaults to true.
  • Filesystem hardening. Config, keyring and audit paths reject symlinked or unsafe ancestors; audit files are tightened to 0600.
  • Bounded process handling. Status output, stdout and stderr are capped; timeouts kill the process group.
  • PyPI and MCP Registry packaging. Install with uvx gpg-mcp@0.1.0 serve, uv tool install gpg-mcp==0.1.0, pipx, or pip.

Security

  • No private key export. --export-secret-keys, --export-secret-subkeys and --export-secret-ssh-key are unreachable.
  • No passphrase path. The server never accepts a passphrase; gpg-agent asks through pinentry.
  • No raw execution. No arbitrary argv, homedir override or short key IDs.
  • No hidden recipient bypass. Mixed and hidden recipients are refused by default.
  • No silent verification downgrade. Expired, revoked or missing-key signatures are never policy-acceptable.

Stats

  • 21 commits
  • 29 files changed, +4778 / -386
  • 135 tests, 1 skipped
  • Package version 0.1.0 (Beta)

Full Changelog: https://github.com/emiliano-go/gpg-mcp/commits/v0.1.0