Check whether an npm package, GitHub Action, MCP server or Docker image is dead or abandoned.
mcp-name: dev.lastseen/mortality
Is this dependency dead? Dated observations of whether an npm package, GitHub Action, MCP server, or Docker image is alive, dormant, abandoned, archived, or deleted — published by lastseen.dev. Free, no API key, zero telemetry.
There are two ways in, and they answer the same question from the same dated data:
No key. No signup. 60 requests/minute, anonymous GET. Every response is a dated
observation with its source — not a score, not advice. Base URL https://lastseen.dev.
# one component (owner/repo)
curl https://lastseen.dev/api/v1/entity/actions/checkout
# everything held under a GitHub owner/org
curl https://lastseen.dev/api/v1/org/actions
# a whole manifest at once (names-only body)
curl -X POST https://lastseen.dev/api/v1/manifest \
-H 'content-type: application/json' \
-d '{"channel":"api","components":[{"name":"actions/checkout","kind":"github-action"}]}'
# self-describing API docs (JSON)
curl https://lastseen.dev/api/v1/docs
A single-component response carries the latest_state, the dated series behind it, the
source_of_record, and interval-censoring notes — enough to re-check any verdict against GitHub
yourself. This is the recurring path: wire GET /api/v1/entity/{owner}/{repo} into CI and a
dead dependency shows up on the build that introduces it, not months later.
not_observed — never a
fabricated result. A network/store error degrades (try later); it is never read as "dead".alive (≤180d since last commit) · dormant (180–365d) · abandoned (>365d) ·
archived (repo archived) · deleted (authoritative HTTP 404) · eol (declared end-of-life) ·
unknown-stale (the observation the verdict rests on is older than the 180-day threshold and was
not re-verified — no state asserted; not a death) · not_observed (403 / 429 / timeout / not
held — not dead).
A pure-standard-library stdio wrapper over the API above — no mcp package, no requests,
no FastAPI/Starlette, nothing that can conflict with a host app. It speaks JSON-RPC 2.0 over
stdio and calls the free API over urllib.
pipx install lastseen-mcp
# or run without installing:
uvx lastseen-mcp
Requires Python ≥ 3.10. No dependencies.
{
"mcpServers": {
"lastseen": { "command": "lastseen-mcp" }
}
}
(If you use uvx, set "command": "uvx", "args": ["lastseen-mcp"].)
| Tool | What it does |
|---|---|
check_entity(slug, live?) | Dated survival series for one owner/repo (e.g. actions/checkout). live=true attaches a live GitHub read (absence ≠ gone). |
check_org(name) | Dated states for every held component under a GitHub owner/org. |
check_manifest(paste) | Paste a GitHub Actions workflow (uses: refs) or owner/repo lines; get the dated state per component. Unheld components are not_observed. |
survival_profile(category) | Category ranking — not available over the free API; returns an honest not-supported result pointing to the per-entity/org/manifest lookups and the CC-BY dumps. |
check_manifest looks up at most 30 parsed components per call (free-tier rate bound); any
remainder is reported as n_truncated.
Zero telemetry. The client and the API store nothing and transmit no identifier about you, your org, or the subjects you look up — anonymous GETs only.
LICENSE).dev.lastseen/mortalitySource-derived launch command. Check the maintainer’s required arguments and credentials before running:
uvx lastseen-mcpMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"dev-lastseen-mortality": {
"command": "uvx",
"args": [
"lastseen-mcp"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referencelastseen mortality works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.