deprecation-mcp
This server provides a single check_deprecation tool to query the deprecation status of vendor APIs and SDKs. It returns one of four statuses—active, deprecated, sunset, or unknown—along with details such as deprecation/sunset dates, replacement API/SDK, migration URL, source URL for verification, and last verification date. The curated dataset covers major providers including AWS, Stripe, Twilio, GitHub, OpenAI, Slack, SendGrid, Shopify, Auth0, and PayPal. Lookups are case-insensitive and support aliases. Untracked items return unknown to avoid false assumptions. Weekly drift detection ensures data freshness by flagging changes in source documentation. The server is free, open-source, and integrates with stdio-based MCP clients like Claude Code.
Allows checking the deprecation status of Auth0's Rules and Hooks, including replacement and migration information.
Allows checking the deprecation status of GitHub's Dependency Graph SBOM sync API, including sunset dates and migration URLs.
Allows checking the deprecation status of OpenAI's Assistants API, including replacement and migration guidance.
Allows checking the deprecation status of PayPal's NVP/SOAP API, including sunset dates and migration paths.
Allows checking the deprecation status of SendGrid's v2 Mail Send API, including replacement and migration information.
Allows checking the deprecation status of Shopify's REST Admin API, including replacement and migration URLs.
Allows checking the deprecation status of Slack's Classic Apps, including sunset dates and migration guidance.
Allows checking the deprecation status of Stripe's Sources API, including replacement and migration information.
Allows checking the deprecation status of Twilio's Programmable Chat, including sunset dates and migration paths.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@deprecation-mcpCheck if AWS SDK for JavaScript v2 is sunset."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
deprecation-mcp
A free, open MCP server for checking whether a vendor API or SDK is active, deprecated, or sunset — so an agent doing upgrade/maintenance work can check before it breaks, instead of after.
API/SDK deprecations are scattered across changelog pages, RSS feeds (if
you're lucky), and Sunset/Deprecation HTTP headers (if the vendor bothers
implementing RFC 8594). This server
puts a curated, hand-verified answer behind one tool call.
No payment gating, no metering, no billing code of any kind — this is a plain open MCP server.
What it exposes
One tool, check_deprecation:
check_deprecation(provider: string, target: string) -> {
status: "active" | "deprecated" | "sunset" | "unknown",
deprecated_on: string | null,
sunset_on: string | null,
replacement: string | null,
migration_url: string | null,
source_url: string,
last_verified_at: string
}status: "unknown" (with a blank source_url) is returned for any
provider/target not in the curated dataset below — it means "not tracked",
not "confirmed active."
Related MCP server: docpilot-mcp
Curated dataset
Ten provider APIs/SDKs, each checked against the vendor's own published page
(source_url) on the date in last_verified_at. Data lives in
data/deprecations.json.
provider | target | status |
|
| sunset |
|
| deprecated |
|
| sunset |
|
| deprecated |
|
| deprecated |
|
| deprecated |
|
| deprecated |
|
| deprecated |
|
| deprecated |
|
| deprecated |
Lookups are case-insensitive and also match each record's aliases (e.g.
aws/aws-sdk resolves to aws-sdk-js-v2).
Run it
npm install
npm run build
npm start # starts the stdio MCP serverAdd to an MCP client
Claude Code (.mcp.json in your project, or claude mcp add):
{
"mcpServers": {
"deprecation": {
"command": "node",
"args": ["/absolute/path/to/deprecation-mcp/dist/index.js"]
}
}
}Any other stdio-based MCP client config follows the same shape: run
node dist/index.js as the server command.
Worked example
Once connected, an agent calls:
{
"name": "check_deprecation",
"arguments": { "provider": "aws", "target": "aws-sdk-js-v2" }
}and gets back:
{
"status": "sunset",
"deprecated_on": "2024-09-08",
"sunset_on": "2025-09-08",
"replacement": "AWS SDK for JavaScript v3",
"migration_url": "https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/migrating-to-v3.html",
"source_url": "https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/",
"last_verified_at": "2026-08-08"
}Tests
npm test # builds, then runs node:test against the lookup logicUpdating the dataset
Edit data/deprecations.json directly — no build step or scraper needed, it's
read at server startup. Each record needs a real source_url you actually
checked and an accurate last_verified_at. When you re-verify a record,
recompute its content_hash too (see below).
Drift detection
Hand-checking ten source_urls every so often doesn't scale, and stale data
is worse than no data. A weekly GitHub Action
(.github/workflows/check-drift.yml)
fetches each record's source_url, hashes the response body (sha256), and
compares it to the content_hash stored on the record at
last_verified_at. If the hash changed, the page changed since it was last
verified — the record is flagged, not auto-updated. The automation never
writes to data/deprecations.json; a changed page only means "a human or
agent needs to re-verify this record by hand," never an inferred new status.
Wrong auto-inferred status is worse than no automation.
When drift or a fetch failure is detected, the workflow opens (or updates) a
single GitHub issue labeled drift-check summarizing which records need
attention; it closes that issue automatically once a later run comes back
clean.
Run it locally:
npm run build
npm run check-driftExits 0 if every record's hash still matches, 1 otherwise.
All ten source_urls were fetched with a plain GET (no headless browser, no
bot-protection workaround) when their content_hash baselines were seeded,
and all ten succeeded. If a vendor later adds bot protection or a redirect
that breaks the plain-GET fetch, that record will show up as
fetch_failed in the weekly report rather than being silently skipped.
Known limitation: the AWS blog post, Stripe docs page, and PayPal docs
page (aws/aws-sdk-js-v2, stripe/sources-api, paypal/nvp-soap-api) embed
per-request dynamic content — a nonce, timestamp, or session token that
changes on every fetch even when the substantive page content hasn't. Their
body hash is therefore not fully stable across requests, and the weekly
check may occasionally flag one of these three as "drifted" even with no
real change. This is disclosed rather than worked around (e.g. by stripping
known-volatile substrings): a false-positive "please go look at this page"
is an acceptable cost for a tool whose entire design principle is to never
guess at a status. A human/agent re-verifying such a flagged record should
expect it may be a false alarm.
Available Tools
1 toolcheck_deprecationCheck API/SDK deprecation statusA
Look up whether a provider's API or SDK is active, deprecated, or sunset. Covers a curated set of high-traffic providers (Stripe, Twilio, AWS, GitHub, OpenAI, Slack, SendGrid, Shopify, Auth0, PayPal). Returns 'unknown' for anything not tracked.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | API/SDK identifier within that provider, e.g. 'sources-api' | |
| provider | Yes | Vendor slug, e.g. 'stripe', 'aws', 'github' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well by disclosing the main behavior: returns a status of active/deprecated/sunset, covers a specific provider set, and has a defined fallback ('unknown') for untracked entries. This gives users a realistic expectation of tool coverage and output. It stops short of discussing potential errors or data freshness, but for a lookup tool this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, using just two sentences to convey the core function, scope, and fallback behavior. Every word adds value, and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter lookup tool with no output schema, this description adequately covers the essential aspects: what it does, which providers it covers, and what it returns for untracked providers. It lacks detail on the meaning of each status or any potential limitations, but the description is otherwise complete enough for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already has 100% descriptive coverage for both parameters (provider, target), including examples. The description adds no additional parameter-level context beyond what the schema provides, so it does not exceed the baseline expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('look up'), resource ('provider's API or SDK'), and the possible outcomes (active, deprecated, sunset). It also explicitly lists covered providers, which adds scope clarity and distinguishes it from potential sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool by specifying the curated provider list and noting that untracked providers return 'unknown'. It implicitly indicates this should be used for deprecation checks on those providers, though it does not explicitly contrast with alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v0.1.0- First observed
check_deprecation
TDQS
Scored across 1 tool
With only one tool, there is no possibility of confusion. The tool has a clear, specific purpose: querying deprecation status for known providers.
A single tool name is inherently consistent. 'check_deprecation' follows a clear verb_noun pattern and accurately describes the action.
One tool is slightly below the typical 3-15 range, but it is perfectly suited to the server's narrow purpose of checking deprecation status. The scope does not feel artificially limited.
The core lookup operation is fully covered. A minor gap is the absence of a way to programmatically list supported providers; the agent must rely on the static description to know which providers are tracked.
Maintenance
Related MCP Connectors
Unified MCP Server is a remote MCP connector for AI agents and vertical AI products that provides access to 22,000+ authorized SaaS tools across 400+ integrations and 24 categories directly inside LLMs (Claude, GPT, Gemini, Cohere). Tools operate only on explicitly authorized customer connections, enabling agents to safely read and write against live third-party systems.
MCP server for AI access to Swagger by SmartBear.
Discover and call 10,000+ production APIs from one MCP server. Pay-per-call billing for AI agents.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that serves documentation and enables AI-powered search, Q\&A, and document analysis for developer tools and guides.54MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides tools to fetch live, version-accurate documentation, changelogs, examples, and method signatures for npm and PyPI packages, preventing AI coding agents from hallucinating stale APIs.15ISC
- AlicenseNot gradedqualityCmaintenanceMCP server that exposes structured World of Warcraft API data (functions, deprecated replacements, enums, events, widget methods) to AI agents, enabling querying and exploration of WoW API without wiki parsing.1913MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that checks npm and PyPI package health, providing maintenance signals, version info, CVE counts, and alternative suggestions.MIT