Skip to main content
Glama
eosl-mcp

eosl-mcp

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/mcp

Related 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-mcp

Claude Desktop / any stdio client (mcpServers config):

{ "mcpServers": { "eosl": { "command": "npx", "args": ["-y", "eosl-mcp"] } } }

Docker:

docker build -t eosl-mcp . && docker run -i eosl-mcp

Zero dependencies; Node ≥ 18. Verify everything works:

node server.js --selftest

Tools

Tool

What it does

lookup_part

One part number → status, end-of-sale, EOSL, support runway score, vendor bulletin URL

bulk_check

Up to 200 part numbers in one call, with summary counts

search_models

Find product families by vendor / line / series text

get_family

Full source-backed record for one family (every SKU, group dates, sources)

list_vendors

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 (only get_family fetches 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 tools
bulk_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

    A4.8/5.0

    Scored across 5 tools

    Disambiguation5/5

    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.

    Naming Consistency5/5

    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.

    Tool Count5/5

    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.

    Completeness5/5

    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

    ActivityStale
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Enables 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.
      5
      8
      MIT
    • A
      license
      A
      quality
      F
      maintenance
      Provides 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.
      7
      194 npm
      MIT
    • F
      license
      Not graded
      quality
      B
      maintenance
      Sourced 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.
      -