Legacy PHP and Node upgrades, assessed, planned and verified from your AI client.
Public GitHub repositories. Nothing in your repository changes.
Connect an AI agent
Add Metamorph to your client
Pick your client and paste the official snippet. The endpoint is Streamable HTTP.
Cursor Settings > Features > MCP > Add New MCP Server:
{
"mcpServers": {
// your other mcp servers
"metamorph": {
"headers": { "Authorization": "Bearer <your key>" },
"url": "https://metamorph-6ae4a33e-dhilipan-sankar-fronthyre.app.nitrocloud.ai/mcp"
}
}
}In Claude on the web, add a custom connector with these two fields:
Name: metamorph URL: https://metamorph-6ae4a33e-dhilipan-sankar-fronthyre.app.nitrocloud.ai/mcp
In ChatGPT, create a New App with Connection set to Server URL:
Name: metamorph Server URL: https://metamorph-6ae4a33e-dhilipan-sankar-fronthyre.app.nitrocloud.ai/mcp Authentication: No Auth
Add to ~/.codex/config.toml:
[mcp_servers.metamorph]
url = "https://metamorph-6ae4a33e-dhilipan-sankar-fronthyre.app.nitrocloud.ai/mcp"
http_headers = { Authorization = "Bearer <your key>" }Add under mcpServers in ~/.gemini/config/mcp_config.json:
{
"mcpServers": {
// your other mcp servers
"metamorph": {
"headers": { "Authorization": "Bearer <your key>" },
"serverUrl": "https://metamorph-6ae4a33e-dhilipan-sankar-fronthyre.app.nitrocloud.ai/mcp"
}
}
}Connect directly with the endpoint:
https://metamorph-6ae4a33e-dhilipan-sankar-fronthyre.app.nitrocloud.ai/mcp Authorization: Bearer <your key>
Your key
Shown once. Valid 24 hours or until the server restarts. Scope: read and plan (no write).
Send your key as Authorization: Bearer <your key> where the client supports a header. The official Claude and ChatGPT connector dialogs have no such field, so a key-protected endpoint cannot be added there.
Scopes, cumulative: read · plan · write. Guest keys (plan scope) are minted here and kept in memory on this instance only; keys with write scope are issued by the deployment owner. The dashboard needs none.
What you get
Ranked risk
Exploited first, then severity, then EPSS.
A plan you can read
Stages, risk and rollback, in plain language.
Evidence, not vibes
Measured versus projected, always labelled.
Tools
| Tool | Scope | What it does |
|---|---|---|
| assess_project | read | Score a public GitHub repo: end-of-life runtimes, vulnerable dependencies, legacy patterns. |
| analyze_advisory | read | Check packages or CVE ids against OSV, CISA KEV and EPSS. |
| check_watch | read | What changed since a date: KEV, EPSS, end-of-life dates, PHP and Node releases. |
| plan_modernization | plan | Order the fixes into stages. Only four stage types change files. |
| preview_changes | read | Show the real diff for one automated stage and return an approval token. |
| apply_stage | write | Projected re-score of one approved stage on a temporary copy. Your repo is not changed. |
| verify_patch | write | Build and test a patch on an isolated GitHub Actions runner. |
| generate_report | read | PDF, SARIF and CycloneDX SBOM with signed, expiring download links. |
| cloud_inventory | read | Read-only AWS inventory of Lambda, RDS, EKS and EC2 runtimes. |
Resources: metamorph://report/{id}.pdf · metamorph://report/{id}.sarif · metamorph://report/{id}.cdx.json · metamorph://aws/readonly-role.yaml
Prompts: modernize · cve-triage · watch-repo