MCP Server
Use Releases as an AI agent tool server via the Model Context Protocol.
Pair with agent skills
One-line setup so your agent reaches for these tools on its own. See the skills page for the full list.
Drops skill files into the project. Works in Claude Code, Codex, Cursor, OpenCode.
Remote server (recommended)
Connect to the hosted MCP server at https://mcp.releases.sh/mcp. No installation or API keys required — all tools are read-only and public.
Setup instructions
General
The hosted MCP server supports Streamable HTTP at:
https://mcp.releases.sh/mcpUse that URL directly in clients with native remote MCP support. For clients that only support stdio MCP servers, use mcp-remote as a compatibility bridge.
One-click install
Click to install in a supported editor. The deeplink opens the app and prompts you to confirm before adding the server.
Claude Code
claude mcp add --transport http releases https://mcp.releases.sh/mcpCodex
codex mcp add releases --url https://mcp.releases.sh/mcpVS Code, Windsurf, Zed, and others
For clients without native remote MCP support, use mcp-remote:
{
"mcpServers": {
"releases": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.releases.sh/mcp"]
}
}
}Available tools
Read tools
Read-only tools available on the remote server with no authentication.
Identifiers: every tool that takes an org / product / source identifier accepts the typed ID (
org_…,prod_…,src_…) interchangeably with the slug. Source and product params also accept anorg/slugcoordinate (e.g.vercel/nextjs). Releases are addressed by id only —get_releasetakes arel_…id or a bare 21-char nanoid, with no slug form. Each tool'sinputSchema.descriptionlists the concrete shapes it accepts.
| Tool | Description |
|---|---|
search | Unified search across orgs, catalog (products + standalone sources), and release content. Accepts type: ("orgs" | "catalog" | "releases")[] to skip sections; mode: "lexical" | "semantic" | "hybrid" (default hybrid) for release retrieval; entity to scope releases; since / until to bound release hits by publish date (ISO or 90d/4w/6m/2y). Release hits carry a kind: "release" | "changelog_chunk" discriminator; chunk hits include chunkOffset and chunkLength so you can chain into get_catalog_entry with changelog slicing params for surrounding context. |
list_catalog | Products and standalone sources folded into one list, each row tagged with an entryType: "product" | "source" discriminator. |
get_catalog_entry | Detail for a single catalog entry — product or source. Accepts slug or prod_ / src_ id. Source entries list tracked CHANGELOG files (path + byte size) by default. Pass include_changelog: true to inline the root CHANGELOG, or changelog_path / changelog_offset / changelog_limit / changelog_tokens to target a specific file or slice. Heading-aligned slicing supports monorepo per-package files; token-mode responses include totalTokens and sliceTokens for LLM budgeting (brackets: 2000/5000/10000/20000). |
get_latest_releases | Get the most recent releases, optionally filtered by product, organization, release type, or a since / until publish-date window (ISO or 90d/4w/6m/2y). |
get_release | Fetch the full content of a single release by id. Accepts a rel_ prefix or a bare nanoid. |
list_organizations | List all organizations, searchable by name, slug, domain, or account handle. |
get_organization | Detailed view of a single organization including accounts, tags, sources, products, and domain aliases. Shows a preview of the AI-generated overview by default; pass include_overview: true to inline the full briefing (with a stale warning if it's older than 30 days). |
search_releases (dep.) | Deprecated shim — prefer search with type: ["releases"]. Same hybrid-retrieval shape kept for one release cycle. |
search_registry (dep.) | Deprecated shim — prefer search with type: ["orgs", "catalog"]. |
list_sources (dep.) | Deprecated — prefer list_catalog. |
list_products (dep.) | Deprecated — prefer list_catalog. |
get_product (dep.) | Deprecated — prefer get_catalog_entry. |
On-demand GitHub lookup
search and search_releases fall back to an on-demand GitHub lookup when the query is a {org}/{repo} coordinate and the in-index search returns no hits. The result is merged under a lookup field in the tool response so the agent can see the repo state without a second tool call.
| Field | Description |
|---|---|
status | indexed (newly materialized), existing (already tracked), empty (real repo, no releases or CHANGELOG yet), not_found (no public repo), or deferred (GitHub rate-limit or 5xx — try shortly). |
source | Source record for the materialized or existing repo. Present on indexed, existing, and empty. |
releases | Inline release preview. Present on indexed and existing. |
relatedOrg | "Did you mean" rail — set when the org segment matches a known org but the specific repo doesn't. Lists the org and up to 5 sibling sources. |
lookup is null when the query is not coordinate-shaped or when existing search hits were found. Materialized rows are hidden (discovery: "on_demand"); a second search for the same coordinate resolves through the normal cache path. Embeddings still run for on-demand sources, so semantic search picks them up on the second hit; AI features (overviews, summarization, playbook regen) skip them.
Example usage
Once configured, you can ask Claude to interact with the release index directly:
- "What did Vercel ship last week?"
- "Search for breaking changes in the Prisma changelog"
- "Compare Next.js and Remix releases from the last 30 days"
- "Summarize Cloudflare's recent releases, focusing on Workers"