Ratatosk
Ratatosk is an MCP server that gives AI agents structured, entity-level facts extracted from CNCF project release notes, enabling upgrade analysis and security monitoring across 74+ tracked projects.
check_stack: Provide your running component versions (e.g., Envoy v1.36.8, Istio 1.30.1) and get a briefing on CVEs fixed, APIs removed, and defaults changed along your upgrade path. Version comparison happens locally — your versions never leave your machine; only project slugs are sent to the server.list_projects: List all tracked CNCF projects with slug, name, tier (graduated/incubating), category, and analyzed release counts. Use this first to resolve correct project slugs.get_release: Fetch full details for a specific project release — coverage assessment, source URL, and all extracted facts. Omit the version to get the latest reviewed release.list_releases: Get light summaries of the newest N reviewed releases for a project, with fact counts by severity and max advisory severity — ideal for a quick "what changed lately" overview.list_facts: Poll an incremental, cursor-paginated feed of typed release facts (security fixes, deprecations, removals, breaking changes, default changes, etc.), filterable by project, fact type, and severity. Ordered byfact_idascending (oldest first).facts_by_entity: Reverse-index lookup by exact identifier — CVE ID, CRD name, feature gate, flag, metric, config field, or dependency — returning every fact associated with it across all tracked projects.
ratatosk-mcp
Ratatosk reads CNCF release notes every hour. Your agents get the changes.
In Norse myth, Ratatoskr is the squirrel that carries messages up and down the world tree. This one carries release intelligence. ratatosk.io watches 76 CNCF projects and turns every release note into typed, entity-level changes: security fixes, breaking changes, removals, deprecations, changed defaults — each one classified by how you should act on it now. Routine lines are recorded too, but kept out of the way.
This repository is the MCP server that hands those changes to your agent as tools. MCP (Model Context Protocol) is the open standard AI agents use to call external tools; any MCP-capable client — Claude Code, Claude Desktop, kagent, your own SDK agent — can connect. No account, no API key.
Two ways to connect
Hosted — nothing to install. Register https://ratatosk.io/mcp as a
remote MCP server in any client that supports remote connectors. The hosted
endpoint allows each caller 60 tool calls a minute, counted per caller rather
than pooled — for polling or CI workloads, self-host. With the Claude Code
CLI:
claude mcp add --transport http ratatosk https://ratatosk.io/mcpSelf-hosted — the same server, running as your own process. Run it with Docker, the Helm chart, or a source build. With Claude Code and Docker installed:
claude mcp add ratatosk -- docker run -i --rm ghcr.io/garlickim21/ratatosk-mcp:0.7.40.7.4 is the current release; use latest to follow new ones.
Either way, verify the connection:
claude mcp list
# ratatosk: … - ✔ ConnectedThen ask your agent a question the tools can answer:
You: "We run envoy v1.36.8 and istio 1.30.1. Anything we must do before upgrading?"
Your agent calls
check_stackand answers from the record: the CVEs fixed after your version, the APIs removed on your upgrade path, the defaults that changed — separated into what applies to everyone and what applies only if your configuration matches. Each change carries a verbatim quote from the release notes as evidence.
Other clients (Claude Desktop, kagent, in-cluster agents) and the full setup reference: see the install guide.
Related MCP server: cncf-tech-advisor-mcp
Tools
Two things the tools speak in. A change is one thing a release did, taken from an official release note and tied to the exact identifiers it touches (a CVE id, a flag, a CRD, a config field), with a verbatim quote as evidence. Every change carries three axes:
family —
security,breaking, ordeprecated: what kind of thing it is.bucket —
action(applies to everyone),check(only ifapplies_ifmatches your setup),plan(announced for later),other(the full record).applies_if — a boolean expression you can evaluate against your own manifests, not prose to read.
A matter is the issue underneath, identified by matter_key and stable
across releases and branches: the same security roll-up landing on five
branches shares one key. Severity lives on the cited advisories and is read
from the ledger's current value, not frozen at analysis time.
Tool | What it does |
| Takes the component versions you run and returns the changes on your upgrade path, split by bucket: |
| The incremental change feed, oldest-analyzed first. Filter by project, family, or bucket; page with the |
| Reverse lookup: every change touching one exact identifier — such as a CVE id, CRD, feature gate, flag, config field, or dependency |
| Every release in which one matter appeared. The same roll-up lands on several branches carrying different advisories — told only the newest, you would assume you were covered |
| One release in full: its changes, a summary, and the link to the original note. A release with zero changes means it was read and found routine |
| The newest releases of one project as one-line summaries (dates, counts by bucket and family, highest advisory severity), newest first — the tool for "what changed in X lately" |
| The roster of tracked projects and their canonical slugs (the short project id every other tool takes) — look names up here instead of guessing |
Full per-tool parameters, example calls, and measured responses live in the tools reference.
How your component versions are handled
Self-hosted: check_stack sends only project slugs to the server and
compares versions locally, inside this process — the versions you pass it
never reach ratatosk.io. The server publishes changes; your agent decides what
applies. The version normalizer is bundled (internal/version), so range
comparison happens client-side too. This holds for upgrade questions as well:
the upstream API has a convenience endpoint (/v1/upgrade/{project}) that
receives caller-supplied versions — check_stack does not call it; the
comparison is in the source you can read.
One limit on that guarantee: it covers check_stack. Tools that take a
version as an argument — get_release(project, version) — put that version
in the upstream request path, because fetching a specific release means
naming it. That named path is not kept on my side, though: before a log line
is written, query strings are stripped and /v1/releases/… and
/v1/upgrade/… paths are reduced to their prefix, so neither the slug nor
the version lands in a log.
Hosted: your check_stack arguments (the versions you run) pass through
the server's memory to produce the same answer, and are not written down.
Here is what each layer on the way keeps:
The hosted MCP process itself logs only its startup line — a normal request adds nothing.
The upstream API's request log writes one line only when the caller sends a
traceparent, and that line carries a normalized endpoint label and the trace id — never a path, query, or body.The front-door access log strips query strings, reduces
/v1/releases/…and/v1/upgrade/…paths to their prefix, masks caller IPs, and has no field for request bodies.
The hosted endpoint runs with its audit stream off, and I keep it off — not
recording request content is the operating stance for that endpoint. One
boundary I do not control: connection metadata on the CDN leg
follows the CDN provider's own policy. If your requirements rule out that transit,
self-host: then only project slugs leave your infrastructure on a
check_stack call.
Self-hosting adds the opposite capability: an opt-in audit stream
(MCP_AUDIT=metadata or full) that records who called which tool, emitted
inside your own infrastructure into your own collectors. The hosted endpoint
has none by design. Details in the install guide.
Documentation
Install & usage — hosted endpoint · local stdio · in-cluster (Helm) · kagent (한국어 · 日本語)
Helm chart — values, kagent toggle (한국어 · 日本語)
kagent example — manifests + ratatosk-agent (한국어 · 日本語)
Upstream API
This server is a thin client over the public REST API. If you would rather
call it directly, GET /v1 on ratatosk.io describes itself. No API key; rate
limited at 1200 requests per minute per IP.
Data & terms
The data is served free of charge by ratatosk.io — a term that may change,
with advance notice — under its terms of service.
Analyses are AI-generated reference information with no warranty — check the
original release notes before acting, especially when an agent acts on your
behalf. Original notes belong to their respective projects; responses that
carry a full note include an attribution notice (raw_notes_notice).
License
The code in this repository is licensed under Apache-2.0.
Maintenance
Related MCP Servers
- AlicenseAqualityAmaintenanceDependency intelligence for AI agents. CVE scanning, health checks, upgrade planning.91572Apache 2.0
- Flicense-qualityCmaintenanceEnables querying the CNCF landscape to search for projects, get detailed information, GitHub metrics, maturity status, and case studies for technology decision support.3
- Flicense-qualityBmaintenanceProvides breaking changes analysis for libraries across multiple languages, enabling version upgrade planning, dependency audits, and migration reports through MCP tool access and expert workflows.
- AlicenseAqualityCmaintenanceProvides accurate, source-grounded breaking-change briefings for npm packages by reading real GitHub release notes and CHANGELOGs, helping coding agents avoid hallucinated dependency migrations.315MIT
Related MCP Connectors
An agent-friendly API for product changelogs. A unified registry via CLI, API, or MCP.
EOL dates and risk scores for 480+ software products. Check versions, score risk, audit stacks.
Verify PyPI and npm packages, symbols, and version diffs against real artifacts. Free, no account.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/garlicKim21/ratatosk-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server