tridentchain-mcp on PyPI
TridentChain Security
Local-first vulnerability scanner for project dependencies, developer tools, and IDE extensions.
Uses multi-source intelligence (OSV, NVD, GHSA, Sonatype) with KEV/EPSS prioritization.
No API key required for default usage.
Public repo: https://github.com/DevInder1/supply-chain-scanner-public
Install (plug and play)
pip3 install tridentchain-security
npm install -g @tridentchain/security-cli
tridentchain-security --helpAgents & MCP (Claude, Cursor, VS Code, Windsurf, Zed):
Pick whichever install path fits:
# Option A — pip (needs Python 3.10+)
pip3 install -U "tridentchain-security>=0.1.4" "tridentchain-mcp>=0.1.4"
# Option B — uvx (no manual Python install; uv handles it)
uvx tridentchain-mcp
# Option C — Docker (no Python needed, fully sandboxed)
docker pull ghcr.io/devinder1/tridentchain-mcp:latest
# Then in your MCP config, replace `python3 -m tridentchain_mcp` with:
# command: docker
# args: ["run", "--rm", "-i", "-v", "$PWD:/workspace", "ghcr.io/devinder1/tridentchain-mcp:latest"]What you can do: docs/CAPABILITIES.md
Full guide: docs/INSTALL_AND_USE.md
Cross-platform (macOS / Linux / Windows): docs/CROSS_PLATFORM.md
(PyPI: tridentchain-security · npm: @tridentchain/security-cli)
tridentchain-security --scan all --project-path . --output-dir scanner-outputRelated MCP server: GoThreatScope
Use in your own Python app
from scanner import run_scan
summary = run_scan(
project_path=".",
scan="all",
run_profile="full", # no API key required
output_dir="scanner-output",
)
print(summary["summary"])Scan profiles
Profile | Description |
| Project + system + extensions. OSV + NVD without keys. |
| Faster project-focused scan. |
| Local advisory DB only, no network. |
Power-user | Add |
Desktop app (individual application)
No repo clone required if the pip package is installed:
pip3 install tridentchain-security
cd apps/desktop && npm install && npm run startSee apps/desktop/README.md and docs/DISTRIBUTION_VERIFICATION.md.
AI / automation (Claude, OpenAI, Cursor, VS Code, Windsurf, …)
One install, every agent: pip install "tridentchain-security>=0.1.2" tridentchain-mcp
Guide | Description |
Claude · OpenAI · Cursor · VS Code · Windsurf · Zed · MCP · CLI | |
Everything you can do today | |
MCP + unified tools design |
./scripts/setup-agent-mcp.sh cursor # prints setup for your agentPhase 2 — Claude MCP: pip install tridentchain-mcp · Setup guide · Plugin
Phase 3 — OpenAI + Cursor: examples/openai/ · Cursor setup · .cursor/mcp.json.example
Phase 4 — VS Code (Anthropic MCP): Open repo → MCP ready · VS Code setup · ./scripts/vscode-mcp-install-link.sh · extension
Phase 5 — Validate: tridentchain-security --validate · MCP validate_after_patch · CAPABILITIES.md
Unified tool layer: from scanner.integrations import execute_tool, get_tool_definitions, to_openai_tools
Development
git clone https://github.com/DevInder1/supply-chain-scanner-public.git
cd supply-chain-scanner-public
python3 -m pip install -e .
tridentchain-security --help
python3 -m unittest scanner.tests.test_matcher_ranges -vInstall & use: docs/INSTALL_AND_USE.md
Cross-platform: docs/CROSS_PLATFORM.md
CLI contract: docs/cli-contract.md
Publishing: docs/PUBLISHING.md
Optional API keys (power users)
Variable | Purpose |
| Higher NVD rate limits |
| GHSA advisories |
| Sonatype Guide advisories |
Set in .env or environment variables.
License
MIT — see LICENSE
Available Tools
3 toolsscan_fullA
Comprehensive scan covering THREE surfaces in one call that project-only scanners cannot reach: (1) project dependencies (npm, PyPI), (2) OS/system packages (Homebrew on macOS, apt/dnf on Linux), and (3) installed IDE extensions (VS Code marketplace + JetBrains plugins). Use this whenever the user asks for "complete coverage", a "full audit", scanning their "whole machine" or "system", or wants to check IDE extensions — these are a growing attack vector and most other vulnerability scanners miss them entirely. Slower than scan_project; pick scan_project for fast project-only checks. Findings are ranked by EPSS exploit probability and CISA KEV presence so the user sees what attackers are actually using first. Returns JSON plus HTML reports under output_dir.
| Name | Required | Description | Default |
|---|---|---|---|
| output_dir | No | ||
| run_profile | No | full | |
| max_findings | No | ||
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, so the description correctly implies a non-destructive scanning operation. The description adds context about output format (JSON + HTML), ranking criteria (EPSS, CISA KEV), and surfaced areas, but does not detail side effects or required permissions beyond what annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with numbered points and a comparison. It is front-loaded with the core purpose. However, it could be slightly more concise by removing redundant phrasing like 'these are a growing attack vector' which adds color but not essential instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the tool (4 parameters, multiple surfaces), the description covers the scanning scope and output format adequately. It lacks parameter details and does not leverage the output schema (though not shown). The comparison with scan_project adds completeness. However, the missing parameter explanations reduce usability.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate for missing parameter documentation. However, it only mentions project_path implicitly via the surfaces and output_dir in reports. It does not explain the purpose of output_dir, run_profile, or max_findings, leaving the agent unsure how to set them correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a comprehensive scan covering project dependencies, OS packages, and IDE extensions. It explicitly distinguishes from scan_project by noting that scan_full covers three surfaces that project-only scanners cannot reach.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use this tool (e.g., 'complete coverage', 'full audit') and when to use scan_project instead ('fast project-only checks'). Includes specific user request patterns and a warning about slower speed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_projectA
Scan project dependencies for CVEs and rank findings by REAL-WORLD EXPLOITATION RISK using EPSS (exploit probability) and the CISA KEV (Known Exploited Vulnerabilities) catalog — not just CVSS severity. Best for: when the user wants to know which CVEs to fix FIRST, asks about supply-chain risk in an IDE/conversational context, or wants to pair with validate_after_patch for a confirmed-fix workflow. Covers npm and PyPI manifests + lockfiles. For comprehensive coverage that also includes OS packages and IDE extensions, prefer scan_full. Returns JSON with status, EPSS-ranked findings list, and paths to HTML reports written under output_dir.
| Name | Required | Description | Default |
|---|---|---|---|
| output_dir | No | ||
| run_profile | No | full | |
| max_findings | No | ||
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate openWorldHint (external access) and non-destructive. Description adds that it writes HTML reports to output_dir, which is a behavioral side effect. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with purpose and usage. Efficient, but could be slightly tighter. Length is justified by the added context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage, results (JSON+HTML), and alternatives. Output schema exists, so return values are documented elsewhere. Missing parameter descriptions are a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 4 parameters with 0% description coverage. Description only explains output_dir (reports written there). Other parameters like run_profile and max_findings are not described, so partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool scans project dependencies for CVEs and ranks by EPSS/KEV risk. It distinguishes from sibling scan_full by noting scope difference (npm/PyPI vs OS packages). Specific verb 'scan' and resource 'project dependencies' are present.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit best-for: wanting to fix CVEs first, supply-chain risk, pairing with validate_after_patch. Also recommends scan_full for broader coverage. Provides clear when-to-use and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_after_patchARead-only
Confirm that dependency upgrades actually resolved the CVEs they were supposed
to fix. Use this whenever the user says they ran npm update, pip install -U,
or applied a patch and wants verification — chain it with two scan_project calls
(before/after) or pass two saved scan JSON results. This is unique to TridentChain;
most other supply-chain scanners only report findings without a verifiable
post-patch loop. Returns resolved_count, remaining_count, new_count, and
validation_passed (true only when new findings == 0 and at least one was resolved).
| Name | Required | Description | Default |
|---|---|---|---|
| baseline_json | Yes | ||
| after_patch_json | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, and openWorldHint. The description adds behavioral details: it compares two inputs and outputs resolved_count, remaining_count, new_count, and validation_passed, with condition for validation_passed. This adds value beyond annotations, but could include more on error behavior or input validation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two sentences, front-loaded with the core purpose, followed by usage guidance and return value explanation. No extraneous information; every sentence is necessary and effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's specific role, the description covers when to use, how to chain with siblings, and what outputs to expect. It is fairly complete but could mention input format expectations (e.g., must be output from scan_project) and handle cases of invalid input.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions are absent (0% coverage). The description compensates by explaining that baseline_json and after_patch_json are scan results from before and after patch, and that they should be JSON strings. This provides essential meaning beyond the schema's bare field definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's purpose: confirming that dependency upgrades resolved CVEs. It specifies the action (validate), resource (dependency upgrades/CVEs), and distinguishes from siblings by noting uniqueness to TridentChain and referencing chainable usage with scan_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description gives clear when-to-use scenarios (after npm update, pip install -U, or patch application) and how to use it (chain with two scan_project calls or pass saved JSON results). It mentions uniqueness but lacks explicit when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
3 tool updates
v0.1.5- First observed
scan_full - First observed
scan_project - First observed
validate_after_patch
TDQS
Each tool has a clearly distinct purpose: scan_project for project-only dependencies, scan_full for comprehensive coverage including system and IDE extensions, and validate_after_patch for post-patch verification. Descriptions explicitly differentiate use cases.
All tool names follow a consistent verb_noun snake_case pattern: scan_project, scan_full, validate_after_patch. The naming is predictable and descriptive.
With 3 tools, the server is minimal but well-scoped for its vulnerability scanning and validation domain. Each tool earns its place, though the count is on the lower end.
The server covers the core workflow: scanning project or full system and validating fixes. Minor gaps exist, such as lacking a tool to configure output paths or list past scans, but the primary use cases are handled.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
CVE lookups (NVD) and dependency-manifest audits (OSV) for AI agents. No API keys.
31CVE lookups (NVD) and dependency-manifest audits (OSV) for AI agents. No API keys.
Deep security scans of repos you own from your editor: dependency CVEs, SAST, git-history secrets.
Threat intel + your scans/findings/Shield posture. CVE, EPSS, KEV, package vuln lookup, DAST.
Related MCP Servers
- AlicenseAqualityDmaintenanceAutomatically scans project dependencies (npm, Composer) for security vulnerabilities using the OSV.dev database, providing real-time alerts and detailed remediation guidance directly in your IDE.1111MIT
- AlicenseNot gradedqualityCmaintenanceGo-based SBOM, vulnerability, and secret scanner with MCP support.3Apache 2.0
- AlicenseNot gradedqualityAmaintenanceScans MCP servers for prompt injection, supply chain attacks, excessive permissions, and code execution risks. Includes an offline blacklist that catches known-compromised packages like LiteLLM 1.82.7/1.82.8 and Trivy with zero latency.19MIT
- FlicenseNot gradedqualityCmaintenanceScans Python, Node.js, Java/Spring, and PHP dependency manifests for known vulnerabilities using OSV and GitHub Advisory APIs.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/DevInder1/supply-chain-scanner-public'
If you have feedback or need assistance with the MCP directory API, please join our Discord server