root_mcp.extended.root_native package

Native ROOT/PyROOT execution support (optional).

class root_mcp.extended.root_native.CodeValidator(*, blocked_modules=None, blocked_attributes=None, blocked_builtins=None, allowed_modules=None, max_code_length=100000)[source]

Bases: object

AST-based validator for user-submitted Python code.

Performs static analysis to detect and block dangerous patterns before code is executed. This is a best-effort check, not a security sandbox.

Parameters:
  • blocked_modules (frozenset[str] | None) – Modules to block. Defaults to BLOCKED_MODULES.

  • blocked_attributes (frozenset[str] | None) – Attribute names to block. Defaults to BLOCKED_ATTRIBUTES.

  • blocked_builtins (frozenset[str] | None) – Built-in function names to block. Defaults to BLOCKED_BUILTINS.

  • allowed_modules (frozenset[str] | None) – Modules explicitly allowed. Defaults to ALLOWED_MODULES.

  • max_code_length (int) – Maximum allowed code length in characters.

__init__(*, blocked_modules=None, blocked_attributes=None, blocked_builtins=None, allowed_modules=None, max_code_length=100000)[source]
Parameters:
Return type:

None

validate(code)[source]

Validate Python code for safety.

Parameters:

code (str) – The Python source code to validate.

Returns:

Validation outcome with errors and warnings.

Return type:

ValidationResult

class root_mcp.extended.root_native.RootCodeExecutor(*, execution_timeout=60, max_output_size=10000000, allowed_output_formats=None, working_directory='/tmp/root_mcp_native', validator=None)[source]

Bases: object

Execute PyROOT code in an isolated subprocess.

Parameters:
  • execution_timeout (int) – Maximum execution time in seconds.

  • max_output_size (int) – Maximum size of captured stdout/stderr in bytes.

  • allowed_output_formats (list[str]) – File extensions allowed in output directory.

  • working_directory (str) – Base directory for execution working dirs.

  • validator (CodeValidator | None) – Code validator instance. If None, a default one is created.

__init__(*, execution_timeout=60, max_output_size=10000000, allowed_output_formats=None, working_directory='/tmp/root_mcp_native', validator=None)[source]
Parameters:
  • execution_timeout (int)

  • max_output_size (int)

  • allowed_output_formats (list[str] | None)

  • working_directory (str)

  • validator (CodeValidator | None)

Return type:

None

execute(code, *, input_files=None, output_dir=None, timeout=None, skip_validation=False)[source]

Execute PyROOT code in a subprocess.

Parameters:
  • code (str) – Python code to execute (may import ROOT).

  • input_files (list[str] | None) – Paths to ROOT files the code needs access to.

  • output_dir (str | None) – Directory for output files. Created inside working_directory if None.

  • timeout (int | None) – Override execution timeout in seconds.

  • skip_validation (bool) – Skip AST validation (for trusted/internal code).

Returns:

Structured execution result.

Return type:

ExecutionResult

class root_mcp.extended.root_native.ValidationResult(is_valid, errors=<factory>, warnings=<factory>)[source]

Bases: object

Result of code validation.

Parameters:
__init__(is_valid, errors=<factory>, warnings=<factory>)
Parameters:
Return type:

None

add_error(msg)[source]
Parameters:

msg (str)

Return type:

None

add_warning(msg)[source]
Parameters:

msg (str)

Return type:

None

errors: list[str]
is_valid: bool
warnings: list[str]

Submodules