pypi lastseen-mcpstdioupdated 29d ago
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.
What can you do with lastseen mortality?
lastseen-mcp
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:
- Call the free HTTP API directly — the durable, machine-native path (below). An agent that keeps a dependency list can re-check it on every build.
- Run it as an MCP server — a thin stdio wrapper over that same API, for MCP clients.
1. The free API (call it directly)
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.
Contract
- Lookups, not advice. Every answer is a dated observation with its source. Never "use X instead", never a composite score, never a ranking by preference, never urgency language.
- Fails closed. An unknown or fabricated subject returns a clean
not_observed— never a fabricated result. A network/store error degrades (try later); it is never read as "dead". - Absence ≠ gone. No record means "not checked", never "deleted". Only an authoritative HTTP 404 is a deletion.
States
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).
2. Run it as an MCP server
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.
Install
pipx install lastseen-mcp
# or run without installing:
uvx lastseen-mcp
Requires Python ≥ 3.10. No dependencies.
Add to an MCP client
{
"mcpServers": {
"lastseen": { "command": "lastseen-mcp" }
}
}
(If you use uvx, set "command": "uvx", "args": ["lastseen-mcp"].)
Tools
| 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.
Privacy
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.
Licensing
- Code: MIT (see
LICENSE). - Data: the mortality/survival observations are published by lastseen.dev under CC-BY-4.0 (attribution required). The two licenses are independent.
Links
- Service & data: https://lastseen.dev
- API docs (self-describing JSON): https://lastseen.dev/api/v1/docs
- MCP registry entry:
dev.lastseen/mortality
Install
Add lastseen mortality to your client. Pick the one you use.
claude mcp add lastseen-mcp -- uvx lastseen-mcpcodex mcp add lastseen-mcp -- uvx lastseen-mcpamp mcp add lastseen-mcp -- uvx lastseen-mcp{
"mcpServers": {
"lastseen-mcp": {
"command": "uvx",
"args": [
"lastseen-mcp"
]
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"lastseen-mcp": {
"command": "uvx",
"args": [
"lastseen-mcp"
]
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
code --add-mcp '{"name":"lastseen-mcp","command":"uvx","args":["lastseen-mcp"]}'Or add the block manually to `.vscode/mcp.json` under `servers`.
{
"mcpServers": {
"lastseen-mcp": {
"command": "uvx",
"args": [
"lastseen-mcp"
]
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
{
"mcpServers": {
"lastseen-mcp": {
"command": "uvx",
"args": [
"lastseen-mcp"
]
}
}
}Add to `cline_mcp_settings.json` via the MCP Servers panel.
{
"mcpServers": {
"lastseen-mcp": {
"command": "uvx",
"args": [
"lastseen-mcp"
]
}
}
}Add to `~/.gemini/settings.json`.
{
"mcpServers": {
"lastseen-mcp": {
"type": "local",
"command": "uvx",
"args": [
"lastseen-mcp"
],
"tools": [
"*"
]
}
}
}Add to `~/.copilot/mcp-config.json`, or run `/mcp add` inside the CLI.
{
"context_servers": {
"lastseen-mcp": {
"command": {
"path": "uvx",
"args": [
"lastseen-mcp"
]
}
}
}
}Add to your Zed `settings.json`.
uvx lastseen-mcpRun `goose configure`, choose **Add Extension → Command-line Extension**, and paste this command.
Score
39 / 100
Incomplete
- Documentation25/25
- Maintenance19/25
- Trust9/20
- Capability0/15
- Install experience12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 21 days ago
- Has a release history
- Repository is not archived
- No licence detected
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 0 tool(s) documented
- Provides prompt templates
- Provides resources
- 12 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint — no local install
Version history
| Versions | Published |
|---|---|
| 0.1.2Latest | Aug 10, 2026 |
| 0.1.1 | Aug 10, 2026 |