Skip to main content
Glama
aserper

RTFD (Read The F*****g Docs)

by aserper

get_package_versions

Retrieve available versions and tags for a GitHub package to ensure compatibility and prevent outdated dependencies.

Instructions

Get versions for a specific GitHub package. USE THIS WHEN: You found a package using list_github_packages and want to see available tags/versions. Args: owner: GitHub username or organization name package_type: Type of package (e.g., "container") package_name: Name of the package (e.g., "rtfd") Returns: JSON list of versions/tags.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
ownerYes
package_typeYes
package_nameYes

Implementation Reference

  • The primary tool handler function for 'get_package_versions'. It invokes the helper method, processes the data into a structured result, handles exceptions, and returns a serialized CallToolResult.
    async def get_package_versions( owner: str, package_type: str, package_name: str ) -> CallToolResult: """ Get versions for a specific GitHub package. USE THIS WHEN: You found a package using list_github_packages and want to see available tags/versions. Args: owner: GitHub username or organization name package_type: Type of package (e.g., "container") package_name: Name of the package (e.g., "rtfd") Returns: JSON list of versions/tags. """ try: data = await self._get_package_versions(owner, package_type, package_name) result = { "owner": owner, "package_name": package_name, "versions": data, "count": len(data), } return serialize_response_with_meta(result) except Exception as exc: return serialize_response_with_meta( { "owner": owner, "package_name": package_name, "error": f"Failed to get versions: {exc!s}", } )
  • Private helper function that performs the core logic: constructs GitHub API endpoints for user/org packages, fetches versions data, parses tags and metadata, and returns a list of version dictionaries.
    async def _get_package_versions( self, owner: str, package_type: str, package_name: str ) -> list[dict[str, Any]]: """ Get versions of a specific package. """ try: headers = self._get_headers() # Similar strategy for orgs vs users # /users/{username}/packages/{package_type}/{package_name}/versions # /orgs/{org}/packages/{package_type}/{package_name}/versions endpoints = [ f"https://api.github.com/users/{owner}/packages/{package_type}/{package_name}/versions", f"https://api.github.com/orgs/{owner}/packages/{package_type}/{package_name}/versions", ] data = [] error = None async with await self._http_client() as client: for url in endpoints: try: resp = await client.get(url, headers=headers) if resp.status_code == 200: data = resp.json() error = None break elif resp.status_code == 404: continue else: resp.raise_for_status() except httpx.HTTPError as exc: error = exc continue if not data and error: raise error or Exception(f"Could not find versions for {package_name}") versions = [] for item in data: metadata = item.get("metadata", {}) container_metadata = metadata.get("container", {}) tags = container_metadata.get("tags", []) versions.append( { "id": item.get("id"), "name": item.get("name"), # SHA usually "url": item.get("html_url"), "created_at": item.get("created_at"), "updated_at": item.get("updated_at"), "tags": tags, } ) return versions except Exception as exc: raise exc
  • The tool is registered in the dictionary returned by the get_tools() method, mapping the name 'get_package_versions' to its handler function.
    tools = { "github_repo_search": github_repo_search, "github_code_search": github_code_search, "list_github_packages": list_github_packages, "get_package_versions": get_package_versions, }

Latest Blog Posts

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/aserper/RTFD'

If you have feedback or need assistance with the MCP directory API, please join our Discord server