Skip to content

Commit 3c46f80

Browse files
niechenclaude
andcommitted
Add rich-click for beautiful CLI formatting
This commit enhances the CLI experience with rich-click integration, providing modern, colorful, and well-organized help screens. **Added rich-click integration:** - Added rich-click>=1.8.0 dependency - Created comprehensive configuration in utils/rich_click_config.py - Updated all 26 command files to use rich-click module - Preserved custom main help with ASCII art while enhancing subcommands **Enhanced CLI features:** - Beautiful colored output with syntax highlighting - Arguments and options in bordered boxes for clarity - Consistent color scheme (cyan for options/commands, yellow for metavars) - Smart width handling and better typography - Enhanced error messages with helpful suggestions - Professional formatting matching modern CLI tools **Code quality improvements:** - Applied ruff formatting to all Python files - Fixed all linting issues (unused variables, trailing whitespace) - Fixed test failures for changed output format - Cleaned up imports and formatting inconsistencies **Benefits:** - More intuitive and visually appealing help screens - Better organization of command options and arguments - Consistent styling across all commands - Improved readability with proper spacing and colors - Modern CLI experience while maintaining MCPM branding All tests pass (122 passed, 6 skipped). 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
1 parent df0d8ef commit 3c46f80

38 files changed

+275
-131
lines changed

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ keywords = [
2222
dependencies = [
2323
"click>=8.1.3",
2424
"rich>=12.0.0",
25+
"rich-click>=1.8.0",
2526
"requests>=2.28.0",
2627
"pydantic>=2.5.1",
2728
"mcp>=1.8.0",

src/mcpm/cli.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
MCPM CLI - Main entry point for the Model Context Protocol Manager CLI
33
"""
44

5-
import click
5+
# Import rich-click configuration before anything else
66
from rich.console import Console
77
from rich.table import Table
88
from rich.traceback import Traceback
@@ -29,6 +29,7 @@
2929
from mcpm.commands.share import share
3030
from mcpm.migration import V1ConfigDetector, V1ToV2Migrator
3131
from mcpm.utils.logging_config import setup_logging
32+
from mcpm.utils.rich_click_config import click
3233

3334
console = Console()
3435
client_config_manager = ClientConfigManager()

src/mcpm/commands/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import os
77
import subprocess
88

9-
import click
109
from InquirerPy import inquirer
1110
from InquirerPy.base.control import Choice
1211
from rich.console import Console
@@ -17,6 +16,7 @@
1716
from mcpm.global_config import GlobalConfigManager
1817
from mcpm.profile.profile_config import ProfileConfigManager
1918
from mcpm.utils.display import print_error
19+
from mcpm.utils.rich_click_config import click
2020

2121
console = Console()
2222
client_config_manager = ClientConfigManager()

src/mcpm/commands/config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22

33
import os
44

5-
import click
65
from rich.console import Console
76
from rich.prompt import Prompt
87

98
from mcpm.utils.config import NODE_EXECUTABLES, ConfigManager
109
from mcpm.utils.repository import RepositoryManager
10+
from mcpm.utils.rich_click_config import click
1111

1212
console = Console()
1313
repo_manager = RepositoryManager()

src/mcpm/commands/doctor.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
import sys
66
from pathlib import Path
77

8-
import click
98
from rich.console import Console
109

1110
from mcpm.clients.client_registry import ClientRegistry
1211
from mcpm.profile.profile_config import ProfileConfigManager
1312
from mcpm.utils.config import ConfigManager
1413
from mcpm.utils.repository import RepositoryManager
14+
from mcpm.utils.rich_click_config import click
1515

1616
console = Console()
1717

src/mcpm/commands/edit.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@
77
import sys
88
from typing import Any, Dict, Optional
99

10-
import click
1110
from InquirerPy import inquirer
1211
from rich.console import Console
1312
from rich.table import Table
1413

1514
from mcpm.core.schema import RemoteServerConfig, STDIOServerConfig
1615
from mcpm.global_config import GlobalConfigManager
1716
from mcpm.utils.display import print_error
17+
from mcpm.utils.rich_click_config import click
1818

1919
console = Console()
2020
global_config_manager = GlobalConfigManager()

src/mcpm/commands/info.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
Info command for MCPM - Show detailed information about a specific MCP server
33
"""
44

5-
import click
65
from rich.console import Console
76

87
from mcpm.utils.display import print_error
98
from mcpm.utils.repository import RepositoryManager
9+
from mcpm.utils.rich_click_config import click
1010

1111
console = Console()
1212
repo_manager = RepositoryManager()

src/mcpm/commands/inspect.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
import subprocess
55
import sys
66

7-
import click
87
from rich.console import Console
98
from rich.panel import Panel
109

1110
from mcpm.global_config import GlobalConfigManager
1211
from mcpm.utils.platform import NPX_CMD
12+
from mcpm.utils.rich_click_config import click
1313

1414
console = Console()
1515
global_config_manager = GlobalConfigManager()

src/mcpm/commands/inspector.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
import subprocess
88
import sys
99

10-
import click
1110
from rich.console import Console
1211
from rich.panel import Panel
1312

1413
from mcpm.utils.platform import NPX_CMD
14+
from mcpm.utils.rich_click_config import click
1515

1616
console = Console()
1717

src/mcpm/commands/list.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22
List command for MCP v2.0 - Global Configuration Model
33
"""
44

5-
import click
65
from rich.console import Console
76

87
from mcpm.commands.target_operations.common import global_list_servers
98
from mcpm.profile.profile_config import ProfileConfigManager
109
from mcpm.utils.display import print_server_config
10+
from mcpm.utils.rich_click_config import click
1111

1212
console = Console()
1313
profile_manager = ProfileConfigManager()

0 commit comments

Comments
 (0)