keep-me-secure-mcp
Checks PHP Composer lockfiles for installed package versions with known public security advisories, returning patch verdicts, urgency, findings, and Composer upgrade commands.
Checks JavaScript projects using supported lockfiles against public security advisories, reporting vulnerable packages and remediation guidance.
Scans npm lockfiles for vulnerable installed package versions and returns findings, urgency, and npm upgrade guidance.
Supports PHP projects by checking Composer-based dependencies for known vulnerabilities and recommending patches.
Scans pnpm lockfiles for vulnerable package versions and returns advisory findings and remediation advice.
Scans Python Poetry lockfiles for vulnerable dependencies and returns patch verdicts and upgrade guidance.
Supports Python projects using pip, Poetry, or uv by checking lockfiles for known vulnerabilities and recommending patches.
Scans Yarn lockfiles for vulnerable package versions and returns patch verdicts, urgency, and upgrade guidance.
This server has a remotely hosted endpoint. Open its connector listing for connection details, authentication requirements, and setup instructions:
keep-me-secure-mcp
An MCP server that tells your coding agent whether your installed packages need patching.
Every day when you start coding, it checks your lockfiles against public security advisories. You can also ask your agent directly: "Do I need to patch any of my PHP packages?" The answer is yes, no or unknown, with advice on what to do.
Supports PHP (Composer), JavaScript (npm, pnpm, Yarn) and Python (pip, Poetry, uv).
Setup
You need Docker. Run this in your project:
docker run --rm --user "$(id -u):$(id -g)" -v "$PWD:/workspace" ghcr.io/robertkeus/keep-me-secure-mcp:latest initThis adds or updates three files:
File | Purpose |
| Registers the MCP server |
| Claude Code hook that runs the check when a session starts |
| Tells other agents to run the check at the start of a session |
The config pins the image version, so a new release never reaches your project unannounced. Run the command again to upgrade.
An MCP server can't start itself, so the hook and the AGENTS.md rule are what make the check happen each day. Agents that use their own config file need the .mcp.json entry copied there.
Related MCP server: VulScan-MCP
Tools
Tool | Question it answers | Input |
| Do I need to patch anything? |
|
| Is this exact version safe? |
|
Example result, shortened:
{
"verdict": "yes",
"urgency": "today",
"findings": [{
"package": "guzzlehttp/guzzle",
"installed": "7.4.0",
"fixed_in": "7.15.2",
"direct": true,
"severity": "HIGH",
"exploited": false,
"advice": "Upgrade guzzlehttp/guzzle to 7.15.2 or later.",
"command": "composer update guzzlehttp/guzzle --with-dependencies"
}],
"coverage": { "scanned": 2, "private": ["acme/internal"], "unchecked": [] }
}Verdicts
yes: at least one installed version has a known advisory.no: every package was checked and none has a known advisory.unknown: the check was incomplete, for example a missing lockfile, an unsupported ecosystem or a failed lookup.coverage.uncheckedsays why. Don't read this as safe.
Urgency
now: a malicious package, or a vulnerability in the CISA KEV list of actively exploited issues.today: critical, high or unrated severity.this_week: everything else.
For malicious packages, upgrading isn't enough. The advice is to remove the package, rotate secrets and check for changes it may have made.
Data and privacy
Names and versions of public packages are sent to OSV.dev. When something is affected, CVE ids go to FIRST EPSS. The CISA KEV feed is downloaded.
Packages from private registries, git or local paths are not sent anywhere. They're listed in
coverage.privateand aren't checked.Results are cached per day in the
kms-cacheDocker volume. A lockfile change triggers a new check.
Security
The container gets your project read-only, runs as a non-root user with a read-only filesystem and no capabilities.
It never installs or upgrades anything. The agent proposes a command and you approve it.
Images are published with provenance and an SBOM.
Advisory text is shortened, flattened and labelled
summary_untrusted, because it's third-party text that reaches your agent. Advice and commands are built only from validated package names and versions.
To report a vulnerability, see SECURITY.md.
Limits
A
nomeans no known issue atchecked_at. OSV can lag behind an incident by a few hours.It doesn't check whether your code actually reaches the vulnerable function.
For a transitive dependency, the fix may have to come from upgrading its parent package.
Development
docker compose builddocker compose run --rm testdocker compose run --rm -e LIVE=1 testTo try it on a vulnerable project:
PROJECT_DIR=./test/fixtures/php docker compose run --rm -T mcp checkPushing a v* tag publishes the image to GHCR.
This server cannot be deployed
Maintenance
Related MCP Connectors
Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.
Scan any MCP server for tool-poisoning, security, auth & license. Trust score before install.
Patchwire is a free, read-only MCP server for security advisories on modern JS, AI and web3 stacks. It reads maintainers' own advisories and vendor security posts every hour, often days before they reach the GitHub Advisory Database, and returns vulnerable ranges, fixed versions per release line and the conditions that make each flaw exploitable. Send package names, never versions. No account, no key.
Supply chain security: free npm lockfile malware check, paid scan of packages, skills, MCP servers.
Related MCP Servers
- AlicenseAqualityBmaintenanceAn MCP server that scans your lockfiles (npm, PyPI, Go, Rust, Ruby, PHP) for known vulnerabilities, enriches with EPSS exploit probability scores, and recommends fix versions. $14/mo — not per-seat.91MIT
- FlicenseNot gradedqualityDmaintenanceMCP server that scans project dependencies for security vulnerabilities (CVEs) and provides fix instructions directly in VS Code via Copilot.3-
- AlicenseAqualityDmaintenanceAn MCP server that gives AI assistants the ability to check open-source packages for vulnerabilities, enrich findings with real-world exploit intelligence, and statically analyse whether vulnerable code is actually reachable in your project.31Apache 2.0
- AlicenseNot gradedqualityDmaintenanceMCP server that checks npm and PyPI package health, providing maintenance signals, version info, CVE counts, and alternative suggestions.MIT