List available models for a provider.
(
provider_name: str | None = typer.Argument(
None, help="Provider name (defaults to current)"
),
quiet: bool = typer.Option(False, "-q", "--quiet", help="Suppress most log output"),
verbose: bool = typer.Option(
False, "-v", "--verbose", help="Enable verbose logging"
),
log_level: str = typer.Option("WARNING", "--log-level", help="Set log level"),
theme: str = typer.Option("default", "--theme", help="UI theme"),
)
| 1287 | # Models command - show available models for current or specified provider |
| 1288 | @app.command("models", help="List available models for a provider") |
| 1289 | def models_command( |
| 1290 | provider_name: str | None = typer.Argument( |
| 1291 | None, help="Provider name (defaults to current)" |
| 1292 | ), |
| 1293 | quiet: bool = typer.Option(False, "-q", "--quiet", help="Suppress most log output"), |
| 1294 | verbose: bool = typer.Option( |
| 1295 | False, "-v", "--verbose", help="Enable verbose logging" |
| 1296 | ), |
| 1297 | log_level: str = typer.Option("WARNING", "--log-level", help="Set log level"), |
| 1298 | theme: str = typer.Option("default", "--theme", help="UI theme"), |
| 1299 | ) -> None: |
| 1300 | """List available models for a provider.""" |
| 1301 | # Configure logging and theme for this command |
| 1302 | _setup_command_logging(quiet, verbose, log_level, theme) |
| 1303 | |
| 1304 | from mcp_cli.model_management import ModelManager |
| 1305 | from rich.table import Table |
| 1306 | |
| 1307 | model_manager = ModelManager() |
| 1308 | |
| 1309 | # Use specified provider or current active provider |
| 1310 | target_provider = provider_name or model_manager.get_active_provider() |
| 1311 | current_provider = model_manager.get_active_provider() |
| 1312 | current_model = model_manager.get_active_model() |
| 1313 | |
| 1314 | # Validate provider exists |
| 1315 | if not model_manager.validate_provider(target_provider): |
| 1316 | output.error(f"Unknown provider: {target_provider}") |
| 1317 | output.info( |
| 1318 | f"Available providers: {', '.join(model_manager.get_available_providers())}" |
| 1319 | ) |
| 1320 | return |
| 1321 | |
| 1322 | # Get provider info |
| 1323 | default_model = model_manager.get_default_model(target_provider) |
| 1324 | available_models = model_manager.get_available_models(target_provider) |
| 1325 | |
| 1326 | # Create table |
| 1327 | is_current_provider = target_provider == current_provider |
| 1328 | title = f"Models for {target_provider}" |
| 1329 | if is_current_provider: |
| 1330 | title += " (Current Provider)" |
| 1331 | |
| 1332 | table = Table(title=title) |
| 1333 | table.add_column("Model", style="green") |
| 1334 | table.add_column("Status", style="yellow") |
| 1335 | |
| 1336 | # Add default model |
| 1337 | default_status = "Default" |
| 1338 | if is_current_provider and default_model == current_model: |
| 1339 | default_status = "Current & Default" |
| 1340 | elif is_current_provider and current_model in available_models: |
| 1341 | default_status = "Default" |
| 1342 | |
| 1343 | if default_model and default_model != "Not specified": |
| 1344 | table.add_row(default_model, default_status) |
| 1345 | |
| 1346 | # Add current model if different from default and this is current provider |
nothing calls this directly
no test coverage detected