mcp-dependency-drift-audit
Checks connection security before approval. Ensures package updates don't cause unexpected issues.
What it does
This tool checks configuration files (like `.mcp.json`) to ensure references to software packages (npm/npx) don't unexpectedly change after review. It does this by reading the files without executing them, helping maintain consistency and security.
When to use it
- ✓Before approving an AI configuration file.
- ✓When adding security checks to code updates.
- ✓During security reviews of AI configurations.
Example of what to ask your AI
“Check the AI configurations in this project to ensure dependencies won't change after I review them.”
Want more? Open the sections below.
How to use
The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.
Skill link
Ready-to-paste message
How it works
The tool reads AI configuration files and analyzes package references. It identifies if these references might point to different versions in the future, without running any AI server code.
Installation
Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.
In the terminal (Claude Code, Codex, Cursor), in your project folder:
npx skills add sickn33/agentic-awesome-skills --skill mcp-dependency-drift-auditOr download just the file:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/mcp-dependency-drift-audit/SKILL.md -o SKILL.mdTechnical content (original SKILL.md)
Original text by the author, straight from GitHub.
MCP Dependency Drift Audit
Overview
Audit Model Context Protocol configuration files for npm/npx package references that can resolve to different code after the configuration was reviewed. The workflow is deliberately static: it reads config text, classifies version selectors, and recommends reproducibility fixes without starting discovered MCP servers.
Dependency mutability is a review-boundary signal, not proof that a package is malicious, vulnerable, or compromised.
When to Use This Skill
- Before approving
.mcp.json, Cursor, VS Code, GitHub Copilot, Claude, or Windsurf MCP configuration. - When adding an MCP configuration gate to pull requests or CI.
- During an AI-agent security review where npm/npx-backed MCP servers are configured.
- When checking whether a previously reviewed MCP config can silently resolve to newer package code.
How It Works
Step 1: Locate and read MCP configs without executing them
Inspect known project paths such as .mcp.json, .github/mcp.json, .cursor/mcp.json, .vscode/mcp.json, and .windsurf/mcp.json, plus any MCP config explicitly supplied by the user.
Read them as text/JSON only. Never run a discovered command or args value as part of this audit. Stay inside the requested workspace by default; only include user-level/global MCP configuration if the user explicitly asks for machine-wide scope.
Step 2: Use MCP Drift Check when already available
If mcp-drift-check is already installed, use the workspace-scoped mode from the intended repo root:
mcp-drift-check scan-workspace --markdown
For CI evidence:
mcp-drift-check scan-workspace --sarif mcp-drift.sarif --markdown
If the scanner is not installed, explain that the following command fetches the open-source scanner from GitHub and get user approval before running it:
uvx --from git+https://github.com/tomelias10/mcp-drift-check mcp-drift-check scan-workspace --markdown
If the user declines network access or installation, continue with the manual rules below.
Step 3: Apply the manual static rules
For npm/npx-style package selectors:
| Selector | Classification | Reason |
|---|---|---|
package@1.2.3 |
SAFE | Exact package version is reproducible. |
bare package or @scope/package |
HIGH | A later resolution can select different package code. |
package@latest |
HIGH | The selector is explicitly mutable. |
package@^1.2.0, ~1.2.0, >=1.2.0, wildcard |
MEDIUM | Resolution can change within the allowed range. |
| local path, script, binary, unknown executable | REVIEW | npm version-drift rules do not establish update behavior. |
Treat -y / --yes as context only. It suppresses interactive confirmation but is not a vulnerability by itself.
Step 4: Recommend remediation without inventing versions
For mutable npm/npx references, recommend pinning to an exact version that the team has actually reviewed and then updating that pin deliberately.
Do not guess the version to pin. If registry lookup is needed, explain that it requires network access and ask before querying it.
Pinning improves reproducibility. It does not establish package provenance, vulnerability status, authorization safety, prompt-injection resistance, or runtime isolation.
Step 5: Produce a bounded report
Return:
| Config | MCP server | Package/reference | Classification | Why | Recommended next step |
|---|
Then state:
- No MCP servers were executed during the audit.
- Mutable dependency references are review/reproducibility signals, not breach claims.
- A clean dependency-drift result is not a complete MCP security assessment.
Examples
Example 1: Audit before approval
User: Audit this repo's MCP config before we approve it. Do not run any MCP servers.
Expected shape:
.mcp.json | browser | @example/browser-mcp@latest | HIGH
Reason: @latest can resolve to different package code later.
Next step: pin the exact version your team reviews and update it deliberately.
No MCP servers were executed.
Example 2: Add a CI gate
For GitHub Actions:
- uses: actions/checkout@v4
- uses: tomelias10/mcp-drift-check@v0
MCP Drift Check can also emit SARIF 2.1.0 for GitHub Code Scanning. The action defaults to workspace-only discovery; machine-wide user-level scanning remains an explicit scan-all choice.
Best Practices
…
FAQ
What is dependency 'drift'?
It's when a reference to a software package (like a version number) can change over time, pointing to different code than what was originally reviewed and approved.
Does this tool run any AI code?
No, it only reads configuration files and analyzes package references. It does not execute any AI servers.
What does 'pinning' a version mean?
It means specifying an exact version number for a software package, rather than using generic references like 'latest' or version ranges. This ensures the same package version is always used.
Details
Original description by the author
Statically audit MCP configs for mutable npm/npx package references before approval or CI, without executing discovered MCP servers.
Popularity
- GitHub stars
- 48k
- Ranking position
- #3572
- License
- MIT
- Updated
- 10/15/2026
Comments
- …
More skills from this repository
00-andruia-consultant
Helps your agent start or improve AI projects. It analyzes code, suggests tools, and creates action plans in Spanish.
sickn33/agentic-awesome-skills
007
Lets your agent perform security audits and threat modeling. It's useful for protecting projects against attacks and vulnerabilities.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Helps your agent create or improve AI tools. It defines how tools work, writes documentation, and validates the structure.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Lets your agent create a summary about a specific industry. It's useful for understanding the context, rules, usage patterns, and risks of a project, using reliable sources.
sickn33/agentic-awesome-skills
Similar skills
speech
Helps your agent turn text into spoken audio. It's useful for creating narration, lecture audio, or quick voiceovers.
nexu-io/open-design
Docker Hub Automation
Makes your agent automate operations on Docker Hub. It manages repositories, teams, and webhooks for your containers.
ComposioHQ/awesome-claude-skills
New Relic Automation
Helps your agent automate tasks in New Relic. It can manage alerts, monitor applications, and set up notifications.
ComposioHQ/awesome-claude-skills