From 581ed740f5d15da405d8c679bc071de577a441a1 Mon Sep 17 00:00:00 2001 From: "joksan.flores" Date: Tue, 3 Mar 2026 17:21:32 -0800 Subject: [PATCH] fix: --config flag ignored when placed before subcommand The --config global option was added as a parent parser to both the main parser and each subparser. When --config appeared before the subcommand (e.g. `itential-mcp --config file.conf test`), the main parser captured it correctly, but the subparser then overwrote it with its default (None), causing the config file to never be loaded. Removed `parents=[global_options_parser]` from subparsers so --config is only parsed once by the main parser, preventing the overwrite. Co-Authored-By: Claude Opus 4.6 --- src/itential_mcp/runtime/parser.py | 4 ---- tests/test_app.py | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/src/itential_mcp/runtime/parser.py b/src/itential_mcp/runtime/parser.py index 49ec45b6..aa4dd96e 100644 --- a/src/itential_mcp/runtime/parser.py +++ b/src/itential_mcp/runtime/parser.py @@ -83,14 +83,10 @@ def _create_subparsers(parser: cli.Parser, global_options_parser: cli.Parser) -> cmd = subparsers.add_parser( command_config.name, description=command_config.description, - parents=[global_options_parser], ) # Add command-specific arguments for arg_name, arg_config in command_config.arguments.items(): - # Skip --config as it comes from parent parser - if arg_name == "--config": - continue if arg_name.startswith("--"): cmd.add_argument(arg_name, **arg_config) else: diff --git a/tests/test_app.py b/tests/test_app.py index ff305ab0..a543c790 100644 --- a/tests/test_app.py +++ b/tests/test_app.py @@ -138,7 +138,7 @@ async def mock_async_func(): mock_run_cmd.return_value = (mock_async_func, None, None) - app.parse_args(["run", "--config", "/path/to/config.ini"]) + app.parse_args(["--config", "/path/to/config.ini", "run"]) assert os.environ.get("ITENTIAL_MCP_CONFIG") == "/path/to/config.ini"