Skip to content

mcp_registry_client.commands.search

Search command implementation.

SearchCommand

Bases: BaseCommand

Command to search for MCP servers in the registry.

Source code in mcp_registry_client/commands/search.py
class SearchCommand(BaseCommand):
    """Command to search for MCP servers in the registry."""

    def __init__(self, args: argparse.Namespace) -> None:
        """Initialize search command.

        Args:
            args: Parsed command line arguments containing 'name' and 'json'

        """
        super().__init__(args)

    def validate_args(self) -> None:
        """Validate search command arguments.

        Raises:
            ValueError: If search term is invalid

        """
        validate_search_term(self.args.name)

    async def execute(self) -> SearchResponse:
        """Execute the search command.

        Returns:
            Search result from the registry client

        Raises:
            RegistryAPIError: If API request fails
            RegistryClientError: If client processing fails
            httpx.RequestError: If HTTP request fails
            ValidationError: If response validation fails

        """
        async with RegistryClient() as client:
            return await client.search_servers(name=self.args.name)

    def format_output(self, result: SearchResponse) -> None:
        """Format and display search results.

        Args:
            result: Search result containing servers list

        """
        cli_config = get_cli_config()

        if self.args.json:
            data = [format_server_summary(server) for server in result.servers]
            print_json(data, indent=cli_config.json_indent)
        else:
            print_table(result.servers, cli_config.table_max_description_width)

__init__(args)

Initialize search command.

Parameters:

Name Type Description Default
args Namespace

Parsed command line arguments containing 'name' and 'json'

required
Source code in mcp_registry_client/commands/search.py
def __init__(self, args: argparse.Namespace) -> None:
    """Initialize search command.

    Args:
        args: Parsed command line arguments containing 'name' and 'json'

    """
    super().__init__(args)

execute() async

Execute the search command.

Returns:

Type Description
SearchResponse

Search result from the registry client

Raises:

Type Description
RegistryAPIError

If API request fails

RegistryClientError

If client processing fails

RequestError

If HTTP request fails

ValidationError

If response validation fails

Source code in mcp_registry_client/commands/search.py
async def execute(self) -> SearchResponse:
    """Execute the search command.

    Returns:
        Search result from the registry client

    Raises:
        RegistryAPIError: If API request fails
        RegistryClientError: If client processing fails
        httpx.RequestError: If HTTP request fails
        ValidationError: If response validation fails

    """
    async with RegistryClient() as client:
        return await client.search_servers(name=self.args.name)

format_output(result)

Format and display search results.

Parameters:

Name Type Description Default
result SearchResponse

Search result containing servers list

required
Source code in mcp_registry_client/commands/search.py
def format_output(self, result: SearchResponse) -> None:
    """Format and display search results.

    Args:
        result: Search result containing servers list

    """
    cli_config = get_cli_config()

    if self.args.json:
        data = [format_server_summary(server) for server in result.servers]
        print_json(data, indent=cli_config.json_indent)
    else:
        print_table(result.servers, cli_config.table_max_description_width)

validate_args()

Validate search command arguments.

Raises:

Type Description
ValueError

If search term is invalid

Source code in mcp_registry_client/commands/search.py
def validate_args(self) -> None:
    """Validate search command arguments.

    Raises:
        ValueError: If search term is invalid

    """
    validate_search_term(self.args.name)