# OpsecForge (npm · opsecforge-mcp)

Local MCP tools that keep secrets out of agent context: redact files, scan commits, verify webhooks.

- Trust score: 80/100 (high trust)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-16

## Components

- npm · `opsecforge-mcp`: 80/100 (this document), [markdown](https://verifymcp.io/servers/cyberdroid2077-opsecforge/opsecforge-mcp.md), [page](https://verifymcp.io/servers/cyberdroid2077-opsecforge/opsecforge-mcp)

## Channel facts

- Registry: `npm`
- Package: `opsecforge-mcp`
- Version: `0.1.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-16.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - No production dependencies, so there is no dependency health to assess.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to cyberdroid2077/opsecforge-tools).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 2 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 68/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1333 tokens (~222/item across 6 items; 6 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 6 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 7 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### How do I install the OpsecForge MCP server?

OpsecForge runs locally as an npm package, launched with npx -y opsecforge-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add cyberdroid2077-opsecforge -- npx -y opsecforge-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "cyberdroid2077-opsecforge": {
      "command": "npx",
      "args": [
        "-y",
        "opsecforge-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "cyberdroid2077-opsecforge": {
      "command": "npx",
      "args": [
        "-y",
        "opsecforge-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add cyberdroid2077-opsecforge -- npx -y opsecforge-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "cyberdroid2077-opsecforge": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "opsecforge-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add cyberdroid2077-opsecforge --command npx --arg -y --arg opsecforge-mcp
```

### Hermes

```yaml
mcp_servers:
  cyberdroid2077-opsecforge:
    command: "npx"
    args: ["-y", "opsecforge-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "cyberdroid2077-opsecforge": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "opsecforge-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add cyberdroid2077-opsecforge -t stdio -c npx -a -y opsecforge-mcp
```

### Other

```json
{
  "mcpServers": {
    "cyberdroid2077-opsecforge": {
      "command": "npx",
      "args": [
        "-y",
        "opsecforge-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-14 (score 80)

First indexed and scored.

## MCP tools (6)

### `redact_file` (~195 tokens)

Redact a local file

Reads a local text file on this machine and returns its content with secrets (API keys, tokens, passwords, private keys, connection-string credentials, JWTs, cookies) replaced by [REDACTED], plus a findings summary (type, count, line numbers). The original values are read inside the local MCP server process only and are never returned, so use this instead of Read or cat for .env files, config files, logs, key files and similar. Pass a path, not file contents. Only regular files are accepted (no directories, pipes or devices), up to 1 MiB, and binary files are refused. The response starts with a notice that the original values did not leave the machine or reach the model. Redaction is heuristic and can miss custom formats.

Input parameters:

- `path` (string, required): Path of the local text file to read (absolute, relative to the server working directory, or starting with ~/).

### `scan_secrets` (~181 tokens)

Scan files or staged changes for secrets

Pre-commit check. Scans files or directories (paths) and/or the lines added in the staged git diff (staged: true) for known secret patterns. Lists only file:line, the secret type and a masked preview (at most the first 4 characters of values of 20+ characters; short values are shown as an ellipsis), never the original value. Provide paths, staged, or both. Heuristic: a clean result is not proof that nothing sensitive is present.

Input parameters:

- `paths` (array): Files or directories to scan. Directories are walked recursively (skipping .git, node_modules, build output and symlinks; at most 2000 files).
- `staged` (boolean): When true, scan only the lines added in `git diff --cached` (the staged changes) in the server working directory.

### `redact_text` (~137 tokens)

Redact text already in context

Redacts secrets in text you ALREADY HAVE (for example before pasting logs into an issue, ticket, chat message or commit message) and returns the redacted copy with a findings summary. Honest limitation: the text you pass as the argument is already in the model context, and calling this tool does not remove it from there; it only produces a safer copy to share outward. To avoid putting a secret into the context at all, use redact_file with a path instead. Heuristic: can miss custom formats.

Input parameters:

- `text` (string, required): Text to redact. NOTE: this text is already in your context; see the tool description.

### `verify_webhook` (~338 tokens)

Verify a webhook signature offline

Verifies a GitHub, Stripe or generic HMAC webhook signature locally and explains why a mismatch happened. The signing secret is read ONLY from the environment variable named in secret_env; there is no parameter for a plaintext secret and one is rejected if supplied. The body is read as raw bytes from body_path. Returns match / no match plus diagnostics: whether the signature header is well-formed, whether the Stripe timestamp is outside the tolerance, whether the body looks reformatted (trailing newline, CRLF, re-serialized or pretty-printed JSON) and common secret mistakes (whitespace, wrong key type). It sends nothing over the network and never returns the secret or a computed signature.

Input parameters:

- `algorithm` (string): HMAC hash for provider "generic" (default sha256). Not used by github or stripe.
- `body_path` (string, required): Path to a file holding the RAW request body exactly as received (not re-serialized). Read as bytes, up to 10 MiB.
- `provider` (string, required): github: X-Hub-Signature-256 (sha256=<hex>). stripe: Stripe-Signature header (t=...,v1=...). generic: plain HMAC over the body, hex (or base64) signature.
- `secret_env` (string, required): NAME of the environment variable that holds the signing secret (for example GITHUB_WEBHOOK_SECRET). Never the secret itself.
- `signature` (string, required): The signature header value as received. It is not a secret.
- `tolerance_seconds` (number): Stripe only: maximum allowed age of the signed timestamp in seconds (default 300).

### `inspect_jwt` (~205 tokens)

Decode a JWT and flag risks

Decodes a JWT locally and returns its header, claims (field values whose names look like secrets are masked), time-claim status (exp, nbf, iat) and risk notes such as alg none, HMAC algorithms that cannot be verified offline, missing exp, and jku/jwk/x5u key-injection headers. DECODING IS NOT VERIFICATION: this tool has no key, never checks the signature and cannot tell you the token is genuine. Prefer token_env (the NAME of an environment variable) so the raw token does not pass through the model; a token passed as `token` is already in the context. The claims returned are in the model context either way.

Input parameters:

- `token` (string): The JWT itself. Passing it here puts it in the model context; use token_env when possible.
- `token_env` (string): NAME of an environment variable that holds the JWT. Preferred: the raw token then never passes through the model.

### `file_checksum` (~139 tokens)

Compute and compare a file checksum

Computes the SHA-256 or SHA-512 digest of a local file (regular file, up to 32 MiB) and optionally compares it with an expected value. A match proves only that the file equals whatever the expected value was taken from, so it is only as trustworthy as the source of that value.

Input parameters:

- `algorithm` (string, required): Digest algorithm.
- `expected` (string): Optional expected digest (hex; "sha256:<hex>" and sha256sum-style "<hex>  name" are accepted) to compare against.
- `path` (string, required): Path of the file to hash (regular file, up to 32 MiB).

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/cyberdroid2077-opsecforge/opsecforge-mcp#diagnostics

## Score history

- 2026-10-16: 80
- 2026-10-15: 80
- 2026-10-14: 80

## Common questions

### What is the OpsecForge MCP server?

OpsecForge is an MCP server listed in the public MCP registry as io.github.cyberdroid2077/opsecforge. Local MCP tools that keep secrets out of agent context: redact files, scan commits, verify webhooks. This page covers its npm package (opsecforge-mcp).

### Is the OpsecForge MCP server safe to use?

OpsecForge scores 80 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 16 October 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the OpsecForge MCP server expose?

OpsecForge exposes 6 tools: redact_file, scan_secrets, redact_text, verify_webhook, inspect_jwt, file_checksum. Their descriptions and schemas cost roughly 1,195 tokens of context every time the server is loaded.

### Is the OpsecForge MCP server still maintained?

OpsecForge is still listed as active in the MCP registry. We last reached this channel on 16 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the OpsecForge MCP server under?

OpsecForge declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/opsecforge-mcp
- Socket report: https://socket.dev/npm/package/opsecforge-mcp
- Repository: https://github.com/cyberdroid2077/opsecforge-tools
- Website: https://www.opsecforge.com/
- Changelog RSS feed: https://verifymcp.io/servers/cyberdroid2077-opsecforge/opsecforge-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/cyberdroid2077-opsecforge/opsecforge-mcp.json
- HTML version of this page: https://verifymcp.io/servers/cyberdroid2077-opsecforge/opsecforge-mcp
