Skip to main content
Glama
oborchers

mcp-server-pacman

package_info

Retrieve detailed information about software packages from PyPI, npm, crates.io, or Terraform by specifying the package name and optional version.

Instructions

Get detailed information about a specific package

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
indexYesPackage index to query (pypi, npm, crates, terraform)
nameYesPackage name
versionNoSpecific version to get info for (default: latest)

Implementation Reference

  • Registration of the 'package_info' tool in the list_tools() function, including name, description, and input schema from PackageInfo model.
    Tool(
        name="package_info",
        description="Get detailed information about a specific package",
        inputSchema=PackageInfo.model_json_schema(),
    ),
  • Pydantic BaseModel defining the input parameters for the package_info tool: index, name, and optional version.
    class PackageInfo(BaseModel):
        """Parameters for getting package information."""
    
        index: Annotated[
            Literal["pypi", "npm", "crates", "terraform"],
            Field(description="Package index to query (pypi, npm, crates, terraform)"),
        ]
        name: Annotated[str, Field(description="Package name")]
        version: Annotated[
            Optional[str],
            Field(
                default=None,
                description="Specific version to get info for (default: latest)",
            ),
        ]
  • Implementation of the package_info tool handler: validates arguments with PackageInfo schema, fetches info from providers based on index (pypi, npm, crates, terraform), and returns JSON-formatted response.
    elif name == "package_info":
        try:
            args = PackageInfo(**arguments)
            logger.debug(f"Validated package info args: {args}")
        except ValueError as e:
            logger.error(f"Invalid package info parameters: {str(e)}")
            raise McpError(ErrorData(code=INVALID_PARAMS, message=str(e)))
    
        logger.info(
            f"Getting package info for {args.name} on {args.index}"
            + (f" (version={args.version})" if args.version else "")
        )
    
        if args.index == "pypi":
            info = await get_pypi_info(args.name, args.version)
        elif args.index == "npm":
            info = await get_npm_info(args.name, args.version)
        elif args.index == "crates":
            info = await get_crates_info(args.name, args.version)
        elif args.index == "terraform":
            if args.version:
                logger.info(
                    "Version-specific info for Terraform modules is not supported yet"
                )
            info = await get_terraform_module_info(args.name)
        else:
            logger.error(f"Unsupported package index: {args.index}")
            raise McpError(
                ErrorData(
                    code=INVALID_PARAMS,
                    message=f"Unsupported package index: {args.index}",
                )
            )
    
        logger.info(
            f"Successfully retrieved package info for {args.name} on {args.index}"
        )
        return [
            TextContent(
                type="text",
                text=f"Package information for {args.name} on {args.index}:\n{json.dumps(info, indent=2)}",
            )
        ]
Install Server

Other Tools

Related Tools

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/oborchers/mcp-server-pacman'

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