Description
When secops-soar-mcp is installed as a Python package (or launched via uvx secops_soar_mcp --integrations <name>), dynamic marketplace tool registration fails with ModuleNotFoundError.
Root Cause
In server/secops-soar/secops_soar_mcp/server.py (line 102):
module_stem = py_file.stem # The filename without .py (e.g., "csv")
if module_stem not in enabled_integrations_set:
continue
module_import_path = f"marketplace.{module_stem}" # The import path (e.g., "marketplace.csv")
try:
logger.debug(" Attempting to import module: %s", module_import_path)
module = importlib.import_module(module_import_path)
Because marketplace is a subpackage inside secops_soar_mcp (secops_soar_mcp.marketplace), importlib.import_module("marketplace.csv") looks for a top-level package named marketplace. When the package is installed in site-packages and executed from any arbitrary working directory, sys.path does not contain the inner secops_soar_mcp/ directory as root, resulting in:
ERROR:secops-soar:* Failed to import module marketplace.csv. Error: No module named 'marketplace'
Steps to Reproduce
- Install
secops-soar-mcp in a clean environment:
- Run the server enabling any marketplace integration:
secops-soar-mcp --integrations CSV,OKTA
- Observe that no marketplace tools are registered and
ModuleNotFoundError is logged for each enabled integration.
Proposed Fix
Update server/secops-soar/secops_soar_mcp/server.py to import using the qualified package path secops_soar_mcp.marketplace.{module_stem}, with a fallback to marketplace.{module_stem} for local directory execution:
module_import_path = f"secops_soar_mcp.marketplace.{module_stem}"
fallback_import_path = f"marketplace.{module_stem}"
try:
logger.debug(" Attempting to import module: %s", module_import_path)
try:
module = importlib.import_module(module_import_path)
except ImportError:
module = importlib.import_module(fallback_import_path)
Description
When
secops-soar-mcpis installed as a Python package (or launched viauvx secops_soar_mcp --integrations <name>), dynamic marketplace tool registration fails withModuleNotFoundError.Root Cause
In
server/secops-soar/secops_soar_mcp/server.py(line 102):Because
marketplaceis a subpackage insidesecops_soar_mcp(secops_soar_mcp.marketplace),importlib.import_module("marketplace.csv")looks for a top-level package namedmarketplace. When the package is installed insite-packagesand executed from any arbitrary working directory,sys.pathdoes not contain the innersecops_soar_mcp/directory as root, resulting in:Steps to Reproduce
secops-soar-mcpin a clean environment:pip install .ModuleNotFoundErroris logged for each enabled integration.Proposed Fix
Update
server/secops-soar/secops_soar_mcp/server.pyto import using the qualified package pathsecops_soar_mcp.marketplace.{module_stem}, with a fallback tomarketplace.{module_stem}for local directory execution: