packagecloud MCP by usefulapi

io.usefulapiPublished by usefulapi.ioOfficial publisherv1.23.4Updated Nov 7, 2026

Read packagecloud repos, packages, versions and download stats; create repos, promote and delete.

The publisher's own server: Ably MCP by usefulapi

VerifiedStreamable HTTPWeb executableCloud & InfrastructureDeveloper ToolsData & Analytics

Overview

AI-generated overview

Hosted MCP server for packagecloud: browse repositories, packages, versions, GPG keys and stats, and create, promote or delete packages.

What you can do
  • List and inspect repositories, distributions, packages, package groups and versions, with ready-made URLs for follow-up calls.
  • Search packages by file name, type, distribution and architecture.
  • Read download statistics per package version and install statistics per repository.
  • Read GPG keys and repository READMEs.
  • Create repositories and READMEs, append to READMEs, promote packages between repositories, and delete package files.
  • Check usage, request a feature, and upgrade or cancel the paid plan.
When to use it
Useful when you want an assistant to answer questions about your packagecloud repositories and release artifacts, or to carry out release chores such as moving a package from staging to production, updating a repository README, or cleaning out old package files.
Requirements
Remote MCP endpoint; no local install. Connect with only the server URL — the server signs you in with OAuth and its login page asks for your packagecloud credentials. A packagecloud account is required; the free plan allows 50 tool calls per month.
Before you install
Write tools change data: creating repositories and READMEs, appending to READMEs (not idempotent), promoting a package (it is moved out of the source repository and its download statistics are cleared), and deleting a package file, which is irreversible and breaks dependent clients. The server asks for packagecloud credentials through its OAuth login page. Paid plans cost money and are billed through a Stripe checkout link; cancellation runs to the end of the paid period with no refund.

Installation

In SourceWeft

  1. Open packagecloud MCP by usefulapi in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.usefulapi%2Fpackagecloud/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "packagecloud-by-usefulapi": {
      "type": "http",
      "url": "https://packagecloud.usefulapi.io/mcp"
    }
  }
}

README

packagecloud MCP by usefulapi

Use packagecloud from Claude, Cursor, or any MCP client — repositories, distributions, packages and versions, search, download and install statistics, GPG keys and READMEs, plus creating repositories, editing READMEs, promoting and deleting packages (delete needs the file name confirmed). Hosted, no local install: connect with your own packagecloud credentials.

Live endpoint: https://packagecloud.usefulapi.io/mcp · Homepage: https://usefulapi.io/packagecloud

Connect

  • Claude (claude.ai, Desktop): open Customize → Connectors, click + Add → Add custom connector, and paste https://packagecloud.usefulapi.io/mcp.
  • Claude Code: claude mcp add --transport http packagecloud https://packagecloud.usefulapi.io/mcp, then run /mcp to log in.
  • VS Code: Add to VS Code.
  • Cursor and other clients: add the URL as a remote MCP server:
json
{  "mcpServers": {    "packagecloud": {      "url": "https://packagecloud.usefulapi.io/mcp"    }  }}

Add only the URL. Do not add an Authorization header or an API key to the client config: the server signs you in with OAuth, and the login page asks for your packagecloud credentials.

Step-by-step setup, where to find your credentials, and FAQ: https://usefulapi.io/packagecloud/

Tools

ToolTypeWhat it does
packagecloud_list_repositoriesreadList repositories
packagecloud_get_repositoryreadGet repository
packagecloud_create_repositorywriteCreate repository
packagecloud_list_distributionsreadList distributions
packagecloud_list_packagesreadList all packages
packagecloud_search_packagesreadSearch packages
packagecloud_list_package_groupsreadList package names by type
packagecloud_get_packagereadGet package
packagecloud_list_package_versionsreadList package versions
packagecloud_get_package_downloadsreadGet package download stats
packagecloud_get_repository_installsreadGet repository install stats
packagecloud_list_gpg_keysreadList GPG keys
packagecloud_get_gpg_keyreadGet GPG key
packagecloud_get_readmereadGet repository README
packagecloud_create_readmewriteCreate repository README
packagecloud_append_readmewriteAppend to repository README
packagecloud_promote_packagewritePromote (move) package
packagecloud_delete_packagewriteDelete (yank) package
packagecloud_usage_statusmetaUsage status (free-tier meter)
packagecloud_request_featuremetaRequest a missing feature
packagecloud_upgrademetaUpgrade to Pro or Pro+
packagecloud_cancel_subscriptionmetaCancel the Pro subscription

read tools are read-only; write tools mutate data (clients should confirm them); meta tools report usage, manage your subscription or send a feature request.

Pricing

PlanPriceLimit
Free$050 tool calls / month
Pro (per account)$9/mo or $90/yr (2 months free)Unlimited*

*Pro has a fair use limit of 10,000 tool calls a month on this server. For more, write to [email protected].

Pro covers this server only. Subscribe with packagecloud_upgrade (it returns a Stripe Checkout link). Cancel any time with packagecloud_cancel_subscription: Pro continues to the end of the paid period, with no refund for the current period, and running packagecloud_upgrade before then undoes the cancel. Or write to [email protected].

License

MIT © usefulapi. Not affiliated with or endorsed by packagecloud.

Source: servers/packagecloud/README.md at commit 4046075

Tools

18

packagecloud_list_repositories

List repositories

List the package repositories of this account: name, fqname (user/repo, used by every other tool), privacy, package count and last push. include_collaborations adds repositories you collaborate on. GET /repos.

Parameterspageper_pageinclude_collaborations

packagecloud_get_repository

Get repository

One repository: name, fqname, url, privacy, package count and last push. GET /repos/{user}/{repo}.

Parametersrepositoryrequired

packagecloud_create_repository

Create repository

WRITE: create a new, empty package repository in this account (the plan limits how many private ones). Returns the URL of the new repository. POST /repos.

Parametersnamerequiredprivate

packagecloud_list_distributions

List distributions

The Linux distributions and versions packagecloud supports for deb, dsc and rpm packages, with their index_name (for example ubuntu / jammy) and numeric version ids. GET /distributions.

Takes no parameters.

packagecloud_list_packages

List all packages

List every package file in a repository (not grouped), newest data first as the server orders it. Each item carries ready-made URLs: package_url, versions_url, downloads_*_url, promote_url, destroy_url and download_url; pass those to the other package tools. Paged. GET /repos/{user}/{repo}/packages.json.

Parameterspageper_pagerepositoryrequired

packagecloud_search_packages

Search packages

Search a repository by package file name. An empty q returns every package. filter limits by type (rpms, debs, dscs, gem, python, node); dist (for example ubuntu or el/6) overrides filter; arch applies to Alpine/RPM/Debian only. Items carry the same ready-made URLs as list_packages. Paged. GET /repos/{user}/{repo}/search.json.

Parametersqarchdistpagefilterper_pagerepositoryrequired

packagecloud_list_package_groups

List package names by type

List the packages of one type, grouped by name with a versions_count and a versions_url (pass that to packagecloud_list_package_versions). Narrow by distro, then version, then arch (each needs the previous one; '*' matches any). Examples: type rpm; type deb + distro ubuntu + version jammy + arch amd64; type gem. GET /repos/{user}/{repo}/packages/{type}[/{distro}[/{version}[/{arch}]]].json.

Parametersarchpagetyperequireddistroversionper_pagerepositoryrequired

packagecloud_get_package

Get package

Details of one package file (size, checksums, dependencies, licenses, download counts and its other URLs). Pass the package_url of an item from list_packages, search_packages or list_package_versions. GET {package_url}.

Parameterspackage_urlrequired

packagecloud_list_package_versions

List package versions

All versions of one package name (for deb/rpm: per distro, version and architecture). Pass the versions_url of an item from list_package_groups, or derive it from a package object. Paged. GET {versions_url}.

Parameterspageper_pageversions_urlrequired

packagecloud_get_package_downloads

Get package download stats

Download statistics of one package version: a count, a time series, or (repository owners only) the detail of each download. Default range is the last 7 days; pass start_date=19700101Z for all time. Pass the package_url of the package; Java and generic files have no download stats. GET {package_url minus .json}/stats/downloads/{count|detail|series/<interval>}.json.

Parameterskindpagesourceend_dateintervalper_pagestart_dateuser_agentpackage_urlrequired

packagecloud_get_repository_installs

Get repository install stats

How often a repository was installed (set up on a machine): a count, a time series, or (owners only) the detail of each install, optionally for one distro or distro+version. Default range is the last 7 days; pass start_date=19700101Z for all time. GET /repos/{user}/{repo}/stats/installs[/{distro}[/{version}]]/{count|detail|series/<interval>}.json.

Parameterskindpagedistroversionend_dateintervalper_pagerepositoryrequiredstart_dateuser_agent

packagecloud_list_gpg_keys

List GPG keys

The GPG keys of a repository (repository signing keys and package signing keys): name, fingerprint, type and the public key download URL. GET /repos/{user}/{repo}/gpg_keys.json.

Parametersrepositoryrequired

packagecloud_get_gpg_key

Get GPG key

One GPG key of a repository by its key name (as returned by list_gpg_keys, for example user-repo-85D7FBF915DFCBC6.pub.gpg). GET /repos/{user}/{repo}/gpg_keys/{keyname}.json.

Parameterskey_namerequiredrepositoryrequired

packagecloud_get_readme

Get repository README

The Markdown README of a repository. GET /repos/{user}/{repo}/readme.json.

Parametersrepositoryrequired

packagecloud_create_readme

Create repository README

WRITE: create the Markdown README of a repository. Use append_readme to add to an existing one. POST /repos/{user}/{repo}/readme.json.

Parametersbodyrequiredrepositoryrequired

packagecloud_append_readme

Append to repository README

WRITE: append Markdown to the existing README of a repository (existing text is kept). Not idempotent: calling it twice appends twice. PATCH /repos/{user}/{repo}/readme.json.

Parametersbodyrequiredrepositoryrequired

packagecloud_promote_package

Promote (move) package

WRITE, DESTRUCTIVE: MOVE a package file to another repository (for example staging -> production). It no longer exists in the source repository afterwards, and its download statistics are cleared. Pass the promote_url of the package object and the destination as user/repo. POST {promote_url}.

Parametersscopedestinationrequiredpromote_urlrequired

packagecloud_delete_package

Delete (yank) package

WRITE, DESTRUCTIVE AND IRREVERSIBLE: delete one package file from its repository (a gem is yanked). Clients that depend on it will break. Pass the destroy_url of the package object and repeat its file name (the last path segment, for example jake-1.0-2.el6.x86_64.rpm) as confirm_filename. DELETE {destroy_url}.

Parametersscopedestroy_urlrequiredconfirm_filenamerequired

Version history

19
  1. v1.23.4LatestNov 7, 2026
  2. v1.22.3Nov 5, 2026
  3. v1.22.2Nov 5, 2026
  4. v1.22.1Nov 4, 2026
  5. v1.22.0Nov 3, 2026
  6. v1.21.1Nov 3, 2026
  7. v1.20.0Nov 1, 2026
  8. v1.18.0Oct 31, 2026
  9. v1.17.0Oct 31, 2026
  10. v1.16.2Oct 30, 2026
  11. v1.16.0Oct 30, 2026
  12. v1.11.0Oct 26, 2026
  13. v1.8.3Oct 25, 2026
  14. v1.8.0Oct 25, 2026
  15. v1.7.0Oct 24, 2026
  16. v1.4.0Oct 23, 2026
  17. v1.3.4Oct 22, 2026
  18. v1.3.3Oct 21, 2026
  19. v1.0.0Oct 12, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Usefulapi integrations