Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Descripción del creador (original en inglés)
Local keystore + MCP server. Claude can sign EVM transactions but never sees the private key.
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
Elige la app de IA que usas y copia la configuración.
SIGIL_HOME, SIGIL_CONTROL_SOCKNecesitas
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json
{
"mcpServers": {
"sigil": {
"command": "npx",
"args": [
"-y",
"sigild"
],
"env": {
"SIGIL_HOME": "your-value",
"SIGIL_CONTROL_SOCK": "your-value"
}
}
}
}Ejecuta esto en tu terminal
claude mcp add sigil --env SIGIL_HOME=your-value --env SIGIL_CONTROL_SOCK=your-value -- npx -y sigildCompleta los valores vacíos antes de ejecutarlo.
Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"sigil": {
"command": "npx",
"args": [
"-y",
"sigild"
],
"env": {
"SIGIL_HOME": "your-value",
"SIGIL_CONTROL_SOCK": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"sigil": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"sigild"
],
"env": {
"SIGIL_HOME": "your-value",
"SIGIL_CONTROL_SOCK": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
SIGIL_HOME envSIGIL_CONTROL_SOCK envEsta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 7 nov 2026
El nombre en el registro se verificó con la cuenta de GitHub cdrn, dueña del repo
Todavía no hemos leído este repo en GitHub
Todavía no hemos leído este repo en GitHub
Este se ejecuta en tu computadora; no hay endpoint en internet
Se ejecuta en tu computadora y usa ajustes locales en su lugar
Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
El registro no indica ninguna clave obligatoria, aunque algunos servidores te piden iniciar sesión la primera vez que los usas.
Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).
El repo de GitHub cambió por última vez –, y la última versión (0.0.6) llegó al registro hace 6 meses.
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Node.js en tu computadora.
En la misma categoría: Spec Driven Development, Remote Desktop Commander, Detailing Manager
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Connect your auto detailing studio's tasks, cars, clients and revenue to Claude or ChatGPT.
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
Claude can sign, but never see.
sigil is a local signing tool and Claude Code integration that lets agentic coding tools use private keys without ever putting key material in the model's context window.
Status: pre-alpha. The MCP server, CLI, unlock flow, ward hooks, policy engine (static checks), out-of-band confirmation via ntfy, Solana signing, and the JSON-RPC signing proxy (Foundry/Hardhat) all work end-to-end. Rolling-window value caps and EIP-712 domain allowlists landed in the policy engine, but have not been through a release yet. Until v0.1.0 ships — with the supply-chain attestations promised for it — do not use this with real funds yet. Build plan lives in the tracking issue.
One MCP server process, four bins (plus a legacy sigild alias), six runtime deps (all pinned, zero transitive):
mcpServers config; it dies when Claude exits. Holds unlocked keys in process memory (zeroized on shutdown, sigil lock, or unlock-failure; mlock against swap is planned). Keys at rest are encrypted with XChaCha20-Poly1305 and an Argon2id-derived key. Signs over stdio using a DIY MCP wire protocol (~200 lines, no SDK dep). Claude never sees key material — only opaque handles like evm:executor.init, status, portal new/add/list/qr/remove, policy show/init, unlock, lock.sigil-mcp boots locked: empty in-memory handle table, no keys loaded. Sign methods return DAEMON_LOCKED (-32003) with a "run sigil unlock" message until you push the passphrase in from a separate terminal via sigil unlock. That CLI connects to a per-session Unix socket at ~/.sigil/control/ .sock (0600) that sigil-mcp opens at startup — and fans out to every such socket so one sigil unlock reaches all open windows. After unlock, signs work for the rest of the session; sigil lock zeroizes the table without killing the process.
Sign methods exposed today: EIP-191 personal_sign, EIP-1559 + legacy transactions, EIP-712 typed data, plus Solana (ed25519) message + transaction signing — see Solana support below.
npm install -g sigild
This drops four binaries on your $PATH: sigil, sigil-mcp, sigil-hook-pre, sigil-hook-post (plus sigild, a legacy alias for sigil-mcp). (The package name on npm is sigild for legacy reasons; the bins do not include a daemon any more.)
Requires Node 22+, macOS or Linux. (The CLI ↔ session control channel uses Unix domain sockets; Windows is untested and currently unsupported.)
# 1. Wire sigil into Claude Code (project-scoped). Pass --user to do it globally.
sigil init
sigil portal new evm:bot
#
sigil portal add evm:bot --key-file ./private.hex
#
sigil unlock
sigil lock
If you close Claude Code, sigil-mcp exits and its memory is wiped. Open a new session and sigil unlock again — the encrypted keyfiles on disk persist.
sigil init [--user]
Project scope: writes the ward hooks to /.claude/settings.json and the MCP server registration to /.mcp.json. --user: writes hooks to ~/.claude/settings.json and the MCP server registration to ~/.claude.json. (Claude Code CLI reads MCP configs from .mcp.json / ~/.claude.json — not from settings.json.) Idempotent — preserves your unrelated settings, and on upgrade migrates any stale mcpServers.sigil entry out of settings.json.
sigil portal new [--strict] Generate a fresh secp256k1 key inside sigil, encrypt with your passphrase, write it to ~/.sigil/keys/ .sigil (mode 0600). No plaintext key ever lands on disk. Use this when you want a clean hot wallet for a bot (vs importing an existing key from a file). Also writes ~/.sigil/policy/ .toml — permissive by default, or --strict for a locked-down template.
sigil portal add --key-file [--no-remove-source] [--strict] Import an existing private key. Encrypts it with your passphrase and stores at ~/.sigil/keys/ .sigil (mode 0600). Handle format is : where kind is "evm". The source key file is deleted by default — pass --no-remove-source to keep it. Also writes ~/.sigil/policy/ .toml — permissive by default (signs anything), or --strict for a locked-down template you fill in before signs succeed.
sigil policy show Print the current policy file for a portal. Validates schema; exits 1 if the file is missing or malformed.
sigil policy init [--strict] Provision a policy file for an existing portal whose policy is missing (e.g. a keyfile from an older sigil version, or one you manually deleted). Refuses to overwrite — edit the file directly or remove it first. Defaults to permissive; --strict writes the locked-down template.
sigil rpc init --upstream [--port ] Enable the JSON-RPC signing proxy for a portal: generates a strong auth token and appends the [rpc] block to ~/.sigil/config.toml (refuses if one exists; preserves the rest of the file). Prints the ready-to-paste authenticated endpoint and forge invocation. Restart Claude Code sessions to pick it up.
sigil portal list List the encrypted keyfiles on disk with their derived addresses (EVM + Solana). Requires the passphrase.
sigil portal qr Render a portal's address as a terminal QR code (for funding it from a phone wallet). Requires the passphrase.
sigil portal remove Delete a keyfile from disk.
sigil unlock Prompt for the passphrase and push it to every running sigil-mcp at once (one per Claude window). After unlock, sign calls succeed for the rest of each session. Idempotent — sessions already unlocked are left as-is. Fails if no sigil-mcp is running (start a Claude Code session first).
sigil lock Tell every running sigil-mcp to zeroize and clear its in-memory keys. Re-unlock with sigil unlock — the sigil-mcp processes keep running.
sigil status Report which sigil-mcp sessions are running (one entry per window, with PID, unlocked flag, and loaded portals) and how many keyfiles exist on disk. Does not require the passphrase.
Set SIGIL_HOME to override ~/.sigil. Set SIGIL_CONTROL_DIR to override the control-socket directory.
Each Claude Code window spawns its own sigil-mcp, and each binds its own control socket at ~/.sigil/control/ .sock. They share the on-disk keyfiles + audit log but keep separate in-memory handle tables.
sigil unlock / lock / status fan out across every socket in ~/.sigil/control/, so a single sigil unlock loads keys into all currently-open windows — no more guessing which process the CLI reaches. Sockets left behind by hard-killed sessions are detected and cleaned up automatically on the next CLI call.
Each window still holds its own decrypted keys only for its own lifetime: closing a window zeroizes that session's keys, and a window opened *after* you unlock starts locked (run sigil unlock again to include it). Keys never outlive the Claude sessions that use them — a deliberate property from #23.
OS-keychain integration (planned, v0.3) will make unlock zero-touch for users who set it up.
After upgrading sigil, restart every Claude window's `sigil-mcp` (reconnect the MCP server or reopen the window, then sigil unlock again). A running sigil-mcp never reloads code, and daemons from different versions must not share ~/.sigil/audit.log: the lock protocol and the writer's chain checks are version-specific. ps -ax | grep sigil-mcp shows stragglers.
Once a portal is unlocked, signing authority over its key is real. To bound the blast radius of a successful prompt injection, every portal has a policy file at ~/.sigil/policy/ .toml. Two modes:
Permissive (default for sigil portal add): no rules. Sign anything the agent asks. The key isolation guarantees still hold — your key never enters the agent's context — but the unlocked portal can be made to sign whatever an attacker can get the agent to ask for. Useful for: testnet bots, demo flows, anyone who only cares about the context-window protection.
Strict (opt in with --strict): every sign request is checked. Generated template:
mode = "strict"
chain_ids = [1] # allowed chain IDs allow_to = [] # allowed destination addresses (lowercase 0x) max_value_wei = "0" # per-tx cap, in wei, as decimal string allowed_selectors = [] # 4-byte function selectors, e.g. "0xa9059cbb"
allow_contract_creation = false # deploys (to = null); when true, every
allow_message_signing = false # EIP-191 personal_sign (e.g. SIWE) allow_typed_data = false # EIP-712 (Permit, OpenSea — can be financial) typed_data_verifying_contracts = [] # when allowed: domain.verifyingContract allowlist typed_data_primary_types = [] # when allowed: primaryType allowlist ("Permit", …)
max_value_per_hour_wei = "100000000000000000" # 0.1 ETH / hour max_value_per_day_wei = "1000000000000000000" # 1 ETH / day
require_confirm_above_wei = "10000000000000000" # 0.01 ETH
A failed rule throws POLICY_DENIED (-32001) back to the agent with the human-readable reason ("tx denied — value X exceeds max_value_wei Y"), and the deny is a
Solo se muestra el principio; lee el resto en el repo