Skip to main content
Glama
oborchers

mcp-server-pacman

search_package

Search for packages across PyPI, npm, crates.io, and Terraform Registry. Specify the index and query to retrieve results efficiently, with optional limits for precise filtering.

Instructions

Search for packages in package indices (PyPI, npm, crates.io, Terraform Registry)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
indexYesPackage index to search (pypi, npm, crates, terraform)
limitNoMaximum number of results to return
queryYesPackage name or search query

Implementation Reference

  • The main handler logic for the 'search_package' tool within the @server.call_tool() function. It validates input using PackageSearch model, dispatches to provider-specific search functions based on 'index', formats results as JSON text, and returns them.
    if name == "search_package": try: args = PackageSearch(**arguments) logger.debug(f"Validated search package args: {args}") except ValueError as e: logger.error(f"Invalid search package parameters: {str(e)}") raise McpError(ErrorData(code=INVALID_PARAMS, message=str(e))) if args.index == "pypi": logger.info(f"Searching PyPI for '{args.query}' (limit={args.limit})") results = await search_pypi(args.query, args.limit) elif args.index == "npm": logger.info(f"Searching npm for '{args.query}' (limit={args.limit})") results = await search_npm(args.query, args.limit) elif args.index == "crates": logger.info( f"Searching crates.io for '{args.query}' (limit={args.limit})" ) results = await search_crates(args.query, args.limit) elif args.index == "terraform": logger.info( f"Searching Terraform Registry for '{args.query}' (limit={args.limit})" ) results = await search_terraform_modules(args.query, args.limit) 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"Found {len(results)} results for '{args.query}' on {args.index}" ) return [ TextContent( type="text", text=f"Search results for '{args.query}' on {args.index}:\n{json.dumps(results, indent=2)}", ) ]
  • Pydantic model defining the input schema for the 'search_package' tool: index (one of pypi/npm/crates/terraform), required query string, and optional limit (1-49, default 5).
    class PackageSearch(BaseModel): """Parameters for searching a package index.""" index: Annotated[ Literal["pypi", "npm", "crates", "terraform"], Field(description="Package index to search (pypi, npm, crates, terraform)"), ] query: Annotated[str, Field(description="Package name or search query")] limit: Annotated[ int, Field( default=5, description="Maximum number of results to return", gt=0, lt=50, ), ]
  • Tool registration in the @server.list_tools() function, defining the name, description, and input schema reference.
    Tool( name="search_package", description="Search for packages in package indices (PyPI, npm, crates.io, Terraform Registry)", inputSchema=PackageSearch.model_json_schema(), ),

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