eosl-mcp
Provides end-of-life and end-of-sale lookup for Cisco hardware, returning support status, support runway score, and vendor bulletin URLs.
Provides end-of-life and end-of-sale lookup for Dell hardware, returning support status, support runway score, and vendor bulletin URLs.
Provides end-of-life and end-of-sale lookup for Fortinet hardware, including short-SKU alias matching, returning support status, support runway score, and vendor bulletin URLs.
Provides end-of-life and end-of-sale lookup for Palo Alto Networks hardware, returning support status, support runway score, and vendor bulletin URLs.
eosl-mcp
MCP server for EOSL.ai — source-backed hardware end-of-life (EOL / EOSL)
lookups by part number. Is this switch/server/firewall still supported? When did — or does —
vendor support end? Every answer carries the URL of the manufacturer's own end-of-life bulletin,
so nothing is asserted without a source. Unknown parts return found:false, never a guess.
Covers enterprise datacenter gear from Cisco, Dell, HPE, Fortinet, IBM, Juniper, Palo Alto Networks, Arista, and more — current coverage figures live on the site.
Fastest path: the hosted endpoint (no install)
A hosted, no-auth instance runs at https://eosl.ai/mcp (Streamable HTTP), listed in the official
MCP registry as ai.eosl/eosl:
claude mcp add --transport http eosl https://eosl.ai/mcpRelated MCP server: EndOfLife MCP Server
This package: local stdio server
Same five tools, same matching rules, reading the same public data — as a local stdio process.
npx eosl-mcpClaude Desktop / any stdio client (mcpServers config):
{ "mcpServers": { "eosl": { "command": "npx", "args": ["-y", "eosl-mcp"] } } }Docker:
docker build -t eosl-mcp . && docker run -i eosl-mcpZero dependencies; Node ≥ 18. Verify everything works:
node server.js --selftestTools
Tool | What it does |
| One part number → status, end-of-sale, EOSL, support runway score, vendor bulletin URL |
| Up to 200 part numbers in one call, with summary counts |
| Find product families by vendor / line / series text |
| Full source-backed record for one family (every SKU, group dates, sources) |
| Tracked vendors with family counts |
Matching, honestly
Exact match first, then punctuation-insensitive, then vendor-gated Fortinet short-SKU aliases
(FG-60E → FortiGate-60E) — never fuzzy. If a caller names a vendor, a match from any other
vendor is rejected: another vendor's dates are worse than no answer. The rejection says which vendor
the part is tracked under, so a filter mistake reads as a filter mistake rather than as a coverage
gap.
A vendor that names no tracked vendor is ignored, not enforced (1.2.0). It cannot be protecting
you from a cross-vendor match, so it is an argument mix-up — and honouring it turns a fully tracked
part into found:false. The hosted server's telemetry caught a client passing vendor:"eosl.ai",
which made one Catalyst 3850 part number miss every day for a month while the site had its page.
The answer comes back with a vendorHint saying the string was dropped and why.
Data and privacy
Data source:
https://eosl.ai/data/lookup.json— the same open dataset behind the site, CC BY 4.0, refreshed weekly from vendors' own published notices.This local server sends only the HTTP fetches above; part numbers you look up locally are matched in-process against the downloaded dataset copy for
lookup_part/bulk_check/search_models(onlyget_familyfetches per-slug). The hosted endpoint records aggregate usage as described at eosl.ai/api/usage.Always confirm critical dates against the linked vendor bulletin before acting on them.
License
Code: Apache-2.0. Dataset: CC BY 4.0 — attribution to EOSL.ai.
Available Tools
5 toolsbulk_checkA
Check up to 200 part numbers in one call (read-only, no auth; for a single part use lookup_part). Returns a per-part row (status, EOSL date, source URL, page URL) plus summary counts: past, endingSoon, supported, active, notFound. Never partial and never destructive: unknown or malformed entries do not fail the call, each simply returns found:false in its row.
Inputs: part_numbers (required).
get_familyA
Fetch the full source-backed record for one product family by slug (from search_models or lookup_part pageUrl): lifecycle dates per SKU group, every part number, support runway score factors, and the vendor bulletin URLs. Read-only; an unknown slug returns found:false with a hint, never an error.
Inputs: slug (required).
list_vendorsA
List all vendors tracked by EOSL.ai with family counts and vendor page URLs. Read-only, no parameters. Use this first to check whether a vendor is covered at all; for specific models use search_models, for a part number use lookup_part.
Inputs: no named parameters.
lookup_partA
Look up one hardware part number or model name in the EOSL.ai database (read-only, no auth; for many parts use bulk_check). Returns support status, End-of-Sale and End-of-Service-Life dates, support runway score, and the primary vendor bulletin URL backing the dates. Matching is exact, then punctuation-insensitive, then Fortinet short-SKU aliases (FG-60E -> FortiGate-60E); a model/family name (e.g. "7010TX-48") that matches no SKU returns the family-level record, flagged matchedVia:family-name. Anything else returns found:false rather than a guessed date.
Inputs: part_number (required), vendor.
search_modelsA
Search tracked product families by vendor, product line, or series name (case-insensitive substring, e.g. "nexus 9300"). Read-only. Returns up to 10 families with status, EOSL window, and page URL. Use this for discovery when you have a name; for an exact part number use lookup_part, and use get_family with a returned slug for the full record.
Inputs: query (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 5 tools
Each tool has a clearly distinct role: bulk_check for multi-part lookups, lookup_part for single-part lookup, search_models for discovery by name, list_vendors for vendor enumeration, and get_family for detailed family records. Descriptions explicitly cross-reference each other, eliminating ambiguity.
All tool names follow a consistent verb_noun snake_case pattern: bulk_check, search_models, list_vendors, lookup_part, get_family. The verbs are clear and the pattern is uniform.
Five tools is well-scoped for a read-only EOSL database: two lookup tools (single/bulk), two discovery tools (vendors/models), and one detail tool. Each serves a necessary function without redundancy.
The surface covers the full read-only query lifecycle: vendor discovery (list_vendors), model discovery (search_models), single-part lookup (lookup_part), bulk lookup (bulk_check), and deep family detail (get_family). No obvious gaps for the domain.
Maintenance
Related MCP Connectors
Hardware end-of-life dates by part number, each linked to the vendor's own bulletin.
EOL dates, risk scores, CISA KEV exposure, SBOM audits and edge-device EOS for 700+ products.
Calibrated IT hardware parts reference: PN normalization, search, cross-references, cited facts.
Software end-of-life dates, open-source licenses, browser support for web features and RFC facts.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to check software end-of-life dates and support status using the endoflife.date API, providing accurate information on software lifecycle, security status, and upgrade recommendations in real-time.58MIT
- AlicenseAqualityFmaintenanceProvides access to the endoflife.date API to query support and end-of-life information for thousands of software products. It enables users to retrieve detailed release schedules, lifecycle data, and product categories through natural language.7194 npmMIT
- FlicenseNot gradedqualityDmaintenanceProvides product lifecycle, release cycle, and End of Life (EOL) date information from endoflife.date.-
- FlicenseNot gradedqualityBmaintenanceSourced product prices, dated price history, specs and independent-test coverage across 4,764 hardware products and 2,064 software vendors — every figure returned with its source URL and the date it was captured. Unknown values come back as null rather than a guess, so an agent can cite what it surfaces.-