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.
npx skills add buildinternet/releases-cliDrops 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), curated collections (cross-org playlists), and release content. Accepts type: ("orgs" | "catalog" | "releases" | "collections")[] 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). Collection hits surface via a direct name/description match or a member rollup (carrying the result-set org slugs that triggered it). 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. |
whats_changed | Beta — subject to change. Changelog entries between two versions of a package: whats_changed(package, from, to, ecosystem?) returns the releases in the range (from, to] (from exclusive, to inclusive) with summaries, breaking-change verdicts, and migration notes — one call instead of reading many changelog pages to plan an upgrade. package is a tracked source slug or a GitHub owner/repo coordinate (set ecosystem: "github" for a bare coordinate). An untracked package returns a clear "not tracked" answer (npm/PyPI names aren't all mapped to a source yet). |
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). |
On-demand GitHub lookup
search falls 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"