OpsecForge
NPM · OPSECFORGE-MCP
Local MCP tools that keep secrets out of agent context: redact files, scan commits, verify webhooks.
Available components
Last scanned (21 hours ago)
Scores higher than 65% of npm servers
Category Security
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. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- No production dependencies, so there is no dependency health to assess. View diagnostics → Pass
Provenance & Transparency97
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to cyberdroid2077/opsecforge-tools). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 2 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability68
- AI-judged instruction clarity (excellent).Pass
- 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. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 6 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 7 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
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.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 14 Oct 26 80
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 16 Oct 2026 · Analysed npm/opsecforge-mcp@0.1.1
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | cyberdroid2077/opsecforge-tools |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/cyberdroid2077/opsecforge-tools/.github/workflows/release-mcp.yml@refs/tags/mcp-v0.1.1 |
| Rekor log index | 3248734384 |
| Predicate type | SLSA build provenance https://slsa.dev/provenance/v1 |
| Subject digest | sha512:6f61b21475e91eea011dd963a96d08707d01cd7dbf6dd90979d3a9b2101f6fd4aff74885bd715b5fc3b104b9f9047c1f81df1209194024d0c18093f97 |
Background: How many MCP packages publish verified provenance →
Dependencies 0 packages
| Packages resolved | 0 |
|---|---|
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
file_checksum Compute and compare a file checksum ~139
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.
| Name | Type | Req | Description |
|---|---|---|---|
| algorithm | string | yes | Digest algorithm. |
| expected | string | – | Optional expected digest (hex; "sha256:<hex>" and sha256sum-style "<hex> name" are accepted) to compare against. |
| path | string | yes | Path of the file to hash (regular file, up to 32 MiB). |
No output schema declared.
No examples provided.
inspect_jwt Decode a JWT and flag risks ~205
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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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. |
No output schema declared.
No examples provided.
redact_file Redact a local file ~195
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.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | Path of the local text file to read (absolute, relative to the server working directory, or starting with ~/). |
No output schema declared.
No examples provided.
redact_text Redact text already in context ~137
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.
| Name | Type | Req | Description |
|---|---|---|---|
| text | string | yes | Text to redact. NOTE: this text is already in your context; see the tool description. |
No output schema declared.
No examples provided.
scan_secrets Scan files or staged changes for secrets ~181
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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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. |
No output schema declared.
No examples provided.
verify_webhook Verify a webhook signature offline ~338
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.
| Name | Type | Req | Description |
|---|---|---|---|
| algorithm | string | – | HMAC hash for provider "generic" (default sha256). Not used by github or stripe. |
| body_path | string | yes | Path to a file holding the RAW request body exactly as received (not re-serialized). Read as bytes, up to 10 MiB. |
| provider | string | yes | 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 | yes | NAME of the environment variable that holds the signing secret (for example GITHUB_WEBHOOK_SECRET). Never the secret itself. |
| signature | string | yes | 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). |
No output schema declared.
No examples provided.
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.
npm · opsecforge-mcp
claude mcp add cyberdroid2077-opsecforge -- npx -y opsecforge-mcp
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.