Server data from the Official MCP Registry
MCP server for auditing Magento projects: update compatibility, module quality, dependency security
About
MCP server for auditing Magento projects: update compatibility, module quality, dependency security
Security Report
Valid MCP server (0 strong, 2 medium validity signals). 1 known CVE in dependencies Package registry verified. Imported from the Official MCP Registry.
4 files analyzed · 2 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
Permissions Required
This plugin requests these system permissions. Most are normal for its category.
How to Install
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-michalper-mcp-magento-audit": {
"args": [
"mcp-magento-audit"
],
"command": "uvx"
}
}
}Documentation
View on GitHubFrom the project's GitHub README.
mcp-magento-audit

An MCP server giving an AI agent tools to assess a Magento 2 / Adobe Commerce project along three axes: compatibility with a target PHP and Magento version, quality of custom modules, and dependency security.
It answers the question that never stops coming up in Magento agencies: "can we bump this client to a newer version, what's blocking it, and where do we start?"
Status: early stage. Built on evenings/weekends. All eight planned tools (
get_project_status,check_updates,scan_module_risk,audit_security,check_outdated_packages,fetch_release_notes,build_upgrade_plan,build_fleet_overview) are working. SeeROADMAP.mdfor what's next.
How this differs from composer audit
composer audit and composer outdated are built into Composer and do their job well —
audit_security and check_outdated_packages actually shell out to them rather than
reimplementing a CVE database or version comparison. This server targets what plain
Composer doesn't give you:
- It doesn't see
app/code. Custom modules don't exist on Packagist, so they get zero coverage from vulnerability databases — and that's exactly the code agencies write.scan_module_riskcovers that side withphpcs/phpstan/rectorinstead. - It doesn't combine axes. Nobody gets one answer: this module blocks the upgrade,
has an open CVE, is abandoned by its author, and has the worst complexity in the
project — fix this one first.
build_upgrade_plandoes, foldingaudit_security's advisories in alongside composer-constraint and code-quality blockers. - It doesn't aggregate across projects. "Which of our twenty stores can be upgraded
today" requires stitching results together from many directories by hand.
build_fleet_overviewruns the composer-constraint check across every project path given to it in one call — a fast first pass, not a replacement for a fullbuild_upgrade_planper project.
What this server doesn't pretend to be: there's no clean dataset of "module X works
with Magento 2.4.8". Results are derived from declarations in composer.json, a code
scan, and the vendor's own release notes — this is a decision-support tool, not an
oracle. Upgrading a production store still requires testing, not just a report.
Install
git clone https://github.com/michalper/mcp-magento-audit.git
cd mcp-magento-audit
python3.12 -m venv .venv
.venv/bin/pip install -e ".[dev]"
Connecting to Claude Code
{
"mcpServers": {
"magento-audit": {
"command": "/path/to/mcp-magento-audit/.venv/bin/mcp-magento-audit"
}
}
}
Projects that develop inside Docker/DDEV/Warden/Lando
scan_module_risk (phpcs/phpstan/rector), check_updates's code_compatibility signal, and
audit_security/check_outdated_packages all shell out to the project's own vendor/bin/*
and composer. If that project only has PHP/Composer available inside a dev container
— common for Magento — and this MCP server runs on the host, every one of those checks
will correctly report scanned=false with a reason rather than silently being wrong, but
that's easy to misread as "found nothing" instead of "couldn't check".
Set MCP_MAGENTO_AUDIT_EXEC_PREFIX to wrap every one of those calls in a command that
runs it inside the container instead, e.g.:
export MCP_MAGENTO_AUDIT_EXEC_PREFIX="ddev exec --"
# or: export MCP_MAGENTO_AUDIT_EXEC_PREFIX="docker compose exec -T app"
This assumes the usual bind-mount setup (the project directory mirrors the same
relative layout inside the container, just under a different root) — host-absolute
paths like vendor/bin/phpcs are rewritten relative to the project root before being
wrapped, and composer resolves against the container's own PATH rather than the
host's. If that assumption doesn't hold for a given setup, running this server from
inside the dev container directly (no prefix needed) is the more reliable fallback.
Rate limits on GitHub API calls
fetch_release_notes calls the GitHub REST API, capped at 60 requests/hour per IP when
unauthenticated — easily hit from a shared office/CI IP running build_fleet_overview or
build_upgrade_plan across many projects. Set GITHUB_TOKEN (or GH_TOKEN) in the
environment to raise that to 5000/hour; a read-only, no-scope token is enough, since this
only ever reads public release data.
Example

An agent calling build_upgrade_plan against a store that has one abandoned, PHP-7-only
package and no phpstan.neon of its own (trimmed — the real result also includes
release_notes, and the full update_check/scan_module_risk results each blocker was
derived from):
{
"ready": false,
"unverified": [
"phpstan: no phpstan.neon(.dist) in project — skipping static analysis"
],
"blockers": [
{
"source": "composer",
"description": "legacy/module",
"detail": "^7.4 does not cover PHP 8.3"
}
]
}
ready is false because of a real blocker, not a guess; unverified says phpstan never
ran at all, so a clean result elsewhere isn't mistaken for "everything was checked".
Tools
| Tool | Status | Description |
|---|---|---|
get_project_status | working | Magento version, PHP requirement, package count, abandoned packages |
check_updates | working | per-package verdict against a target PHP/Magento version, plus a Rector-based check of whether the code itself would need changes |
scan_module_risk | working | scans code via phpcs (Magento2 coding standard), the project's own phpstan, and the project's own rector.php (dead code/quality) — plus a separate phpcs pass over third-party vendor/ Magento modules (informational, not an upgrade blocker), a plain regex scan for ObjectManager::getInstance() misuse in app/code (not limited to .phtml, unlike the standard's own sniff), a core-override check (app/code classes that redeclare a vendor/magento/* class under the same FQCN — an upgrade blocker), and a dangling-reference check (di.xml/events.xml/crontab.xml/layout XML/indexer.xml/schema.graphqls naming a PHP class that no longer exists — informational) |
audit_security | working | every installed package in composer.lock — core Magento, third-party vendor/ extensions, dev dependencies — checked for known advisories via composer audit |
check_outdated_packages | working | every installed package checked against composer outdated for a newer available version — independent of known CVEs or target-version compatibility |
fetch_release_notes | working | release notes from magento/magento2 GitHub Releases, without answering from the model's memory |
build_upgrade_plan | working | combines the other tools into a list of concrete blockers, with ready=true only once it's empty |
build_fleet_overview | working | triages many projects at once against a target PHP/Magento version ("which of these N stores can be upgraded today") via check_updates only — a fast first pass, not a replacement for build_upgrade_plan per project |
Development
.venv/bin/python -m pytest --cov # tests + coverage
.venv/bin/ruff check . # lint
.venv/bin/mypy src # types
.venv/bin/bandit -c pyproject.toml -r src # security
.venv/bin/pip-audit # dependency vulnerabilities
Run .venv/bin/pre-commit install once to run all of the above (except
pip-audit, which needs network access and stays CI-only) on every commit.
Architectural decisions are recorded in docs/adr/. See CHANGELOG.md for what
changed in each release.
License
MIT
Reviews
No reviews yet
Be the first to review this server!
More Developer Tools MCP Servers
Rea
Freeby Morluto · Developer Tools
Reverse engineer anything from your terminal or agent with one CLI and MCP server.
Paperclip
Freeby Paperclipai · Developer Tools
Trending hip-hop artist momentum scores across four cultural dimensions.
Git
Freeby Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
Fetch
Freeby Modelcontextprotocol · Developer Tools
Web content fetching and conversion for efficient LLM usage
Toleno
Freeby Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
MCP Marketplace
Freeby mcp-marketplace · Developer Tools
Search and install MCP servers from inside your AI client.
