Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Descripción del creador (original en inglés)
Local MCP tools that keep secrets out of agent context: redact files, scan commits, verify webhooks.
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.
Necesitas
¿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": {
"opsecforge": {
"command": "npx",
"args": [
"-y",
"opsecforge-mcp"
]
}
}
}Ejecuta esto en tu terminal
claude mcp add opsecforge -- npx -y opsecforge-mcpPégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"opsecforge": {
"command": "npx",
"args": [
"-y",
"opsecforge-mcp"
]
}
}
}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": {
"opsecforge": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"opsecforge-mcp"
]
}
}
}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.
Esta 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 6 nov 2026
El nombre en el registro se verificó con la cuenta de GitHub cyberdroid2077, 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.1.1) llegó al registro hace 23 días.
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, Fomu MCP
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.
Kenya government form guides: checklists, draft letters, eCitizen, Huduma, timelines. Sample data.
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.
A local MCP server (stdio) for AI coding agents such as Claude Code, Codex and Cursor. It helps keep secrets out of the model context: the agent passes a file path or an environment variable name, the work happens on your machine, and only redacted or derived results come back.
Read the limitations below before relying on this. Redaction is heuristic, the Claude Code hook is a best-effort guard rather than a sandbox, and Codex and Cursor have no hook at all.
Requires Node.js 20 or newer.
/plugin marketplace add cyberdroid2077/opsecforge-tools
/plugin install opsecforge@opsecforge
The plugin adds three things:
npx -y opsecforge-mcp@0.1), exposed as mcp__plugin_opsecforge_opsecforge__*;PreToolUse hook that blocks Read, Grep and Bash calls that would directly read .env, *.pem, *.key, id_rsa*, id_ed25519*, credentials, *.p12 and similar files, and tells the model to use redact_file instead (.env.example, .env.sample, .env.template and *.pub are allowed);The hook's onFailure: "block" setting needs a recent Claude Code (v2.1.295 or later according to the hooks documentation). On older versions a hook that times out may be skipped instead of blocking.
claude mcp add opsecforge -- npx -y opsecforge-mcp
Add to ~/.codex/config.toml:
[mcp_servers.opsecforge]
command = "npx" args = ["-y", "opsecforge-mcp"]
(or codex mcp add opsecforge -- npx -y opsecforge-mcp).
Add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):
{
"mcpServers": { "opsecforge": { "type": "stdio", "command": "npx", "args": ["-y", "opsecforge-mcp"] } } }
verify_webhook and inspect_jwt read secrets from environment variables by name. The variable must exist in the environment of the MCP server process. Export it in the shell that starts the agent, or add an env entry to the server's configuration in your client. Do not paste the secret into chat and do not commit it.
Optional hardening: set OPSECFORGE_MCP_ROOTS to a path-delimiter-separated list of directories (for example /home/me/projects) and the file tools refuse paths outside them.
Every tool is read-only, runs locally, and returns readable errors instead of crashing the server.
redact_file({ path })Reads a local text file and returns it with secrets replaced by [REDACTED], plus a findings summary: type, count and line numbers (of the original file). Original values are never returned, and no part of a value is shown. The response starts with a notice that the original values did not leave the machine or reach the model.
Only regular files (no directories, pipes, devices), at most 1 MiB; larger files fail with an explicit message. Binary files are refused. Detects, among others: private key blocks (including unterminated ones, which are masked from BEGIN to the end of the text), sensitive named fields (password, token, secret, *_KEY, ...), Authorization / cookie / API-key headers, URL credentials, AWS, Stripe, GitHub, GitLab, Slack, Google, OpenAI, Anthropic and SendGrid key formats, and JWT-shaped strings.
scan_secrets({ paths?, staged? })Pre-commit check. Scans files or directories (paths) and/or only the lines added in git diff --cached (staged: true). Lists file:line, the secret type and a masked preview: the first 4 characters for values of 20 or more characters, otherwise just …. Never returns an original value. Directory scans skip .git, node_modules, build output and symlinks, read at most 2000 files of at most 1 MiB, and skip binaries.
redact_text({ text })Redacts text the agent already has, for example before pasting logs into an issue or ticket. That text is already in the model context; this tool cannot take it back out. It only produces a safer copy to share outward. To keep a secret out of the context in the first place, use redact_file with a path.
verify_webhook({ provider, body_path, secret_env, signature, algorithm?, tolerance_seconds? })Verifies a github (X-Hub-Signature-256), stripe (Stripe-Signature) or generic HMAC (hex or base64, sha1/sha256/sha512) signature offline.
secret_env. There is no plaintext secret parameter; any unknown parameter (for example secret) is rejected with an explanation, and the value is not echoed.body_path as raw bytes (up to 10 MiB). Save it exactly as received.whsec_ signing secret is needed.inspect_jwt({ token_env?, token? })Decodes a JWT and returns the header, the claims, time-claim status (exp, nbf, iat, auth_time) and risk notes: alg: none, HMAC algorithms that cannot be verified offline, a missing exp, jku/jwk/x5u headers. Decoding is not verification: the tool has no key and never checks the signature. Prefer token_env (the variable name) so the raw token does not pass through the model; a token parameter is already in the context. Claim values under secret-looking field names are masked, but the claims you get back are in the context either way.
file_checksum({ path, algorithm, expected? })SHA-256 or SHA-512 of a local file (up to 32 MiB), optionally compared with an expected value ( , sha256: and sha256sum output are accepted). A match proves only that the file equals whatever the expected value came from.
python app.py that opens .env, make, docker compose config), grep -r over a directory that contains a .env, commands that use shell variables or command output as file names (cat "$FILE", find . -name .env | xargs cat), or anything a language runtime does inside a program. Treat it as a speed bump that catches the common, accidental case.Read deny rules for your secret paths in settings.json (check the permissions documentation for the exact pattern syntax), for example: { "permissions": { "deny": ["Read(./.env)", "Read(./.env.local)", "Read(**/*.pem)", "Read(~/.ssh/**)"] } }
Deny rules also have gaps and can produce prompts or false positives; test them.
redact_text and inspect_jwt with token cannot keep what you hand them out of the context.scan_secrets is not a replacement for a dedicated scanner with a maintained rule set in CI.Browser-local versions of these checks and the background behind them, all at opsecforge.com:
MIT