
digraph G {
    concentrate = true;

    rankdir = TB;
    node [style=filled,fillcolor="#ffffff",fontcolor="#000000",fontname=Helvetica,fontsize=10];

    importlib_metadata [fillcolor="#cc3333",fontcolor="#ffffff",shape="folder"];
    mcp [fillcolor="blue",fontcolor="white",shape="folder"];
    mcp_tools_py [fillcolor="#06f906"];
    mcp_tools_py_code_checker_mypy [fillcolor="blue",fontcolor="white",label="mcp_tools_py\.\ncode_checker_mypy",shape="box"];
    mcp_tools_py_code_checker_mypy_models [fillcolor="#10f910",label="mcp_tools_py\.\ncode_checker_mypy\.\nmodels"];
    mcp_tools_py_code_checker_mypy_parsers [fillcolor="blue",fontcolor="white",label="mcp_tools_py\.\ncode_checker_mypy\.\nparsers",shape="box"];
    mcp_tools_py_code_checker_mypy_reporting [fillcolor="blue",fontcolor="white",label="mcp_tools_py\.\ncode_checker_mypy\.\nreporting",shape="box"];
    mcp_tools_py_code_checker_mypy_runners [fillcolor="blue",fontcolor="white",label="mcp_tools_py\.\ncode_checker_mypy\.\nrunners",shape="box"];
    mcp_tools_py_code_checker_pylint [fillcolor="blue",fontcolor="white",label="mcp_tools_py\.\ncode_checker_pylint",shape="box"];
    mcp_tools_py_code_checker_pylint_models [fillcolor="#10f910",label="mcp_tools_py\.\ncode_checker_pylint\.\nmodels"];
    mcp_tools_py_code_checker_pylint_parsers [fillcolor="#3db83d",label="mcp_tools_py\.\ncode_checker_pylint\.\nparsers"];
    mcp_tools_py_code_checker_pylint_reporting [fillcolor="blue",fontcolor="white",label="mcp_tools_py\.\ncode_checker_pylint\.\nreporting",shape="box"];
    mcp_tools_py_code_checker_pylint_runners [fillcolor="blue",fontcolor="white",label="mcp_tools_py\.\ncode_checker_pylint\.\nrunners",shape="box"];
    mcp_tools_py_code_checker_pylint_utils [fillcolor="#2fdb2f",label="mcp_tools_py\.\ncode_checker_pylint\.\nutils"];
    mcp_tools_py_code_checker_pytest [fillcolor="blue",fontcolor="white",label="mcp_tools_py\.\ncode_checker_pytest",shape="box"];
    mcp_tools_py_code_checker_pytest_models [fillcolor="#10f910",label="mcp_tools_py\.\ncode_checker_pytest\.\nmodels"];
    mcp_tools_py_code_checker_pytest_parsers [fillcolor="blue",fontcolor="white",label="mcp_tools_py\.\ncode_checker_pytest\.\nparsers",shape="box"];
    mcp_tools_py_code_checker_pytest_reporting [fillcolor="blue",fontcolor="white",label="mcp_tools_py\.\ncode_checker_pytest\.\nreporting",shape="box"];
    mcp_tools_py_code_checker_pytest_runners [fillcolor="blue",fontcolor="white",label="mcp_tools_py\.\ncode_checker_pytest\.\nrunners",shape="box"];
    mcp_tools_py_code_checker_pytest_utils [fillcolor="blue",fontcolor="white",label="mcp_tools_py\.\ncode_checker_pytest\.\nutils",shape="box"];
    mcp_tools_py_log_utils [fillcolor="#05e505",label="mcp_tools_py\.\nlog_utils"];
    mcp_tools_py_server [fillcolor="#2e6b2e",fontcolor="#ffffff",label="mcp_tools_py\.\nserver"];
    mcp_tools_py_utils [fillcolor="#06ef06",label="mcp_tools_py\.\nutils"];
    mcp_tools_py_utils_subprocess_runner [fillcolor="#05e505",label="mcp_tools_py\.\nutils\.\nsubprocess_runner"];
    pythonjsonlogger [fillcolor="blue",fontcolor="white",shape="folder"];
    src [fillcolor="#4c4cb3",fontcolor="#ffffff",shape="folder"];
    structlog [fillcolor="#f906f9",fontcolor="#ffffff",shape="folder"];
    importlib_metadata -> mcp_tools_py [fillcolor="#cc3333"];
    importlib_metadata -> src [fillcolor="#cc3333",minlen="2"];
    mcp -> mcp_tools_py_server [fillcolor="blue",minlen="2"];
    mcp -> src [fillcolor="blue",minlen="3"];
    mcp_tools_py -> src [fillcolor="#06f906",minlen="4"];
    mcp_tools_py_code_checker_mypy -> mcp_tools_py_server [fillcolor="blue"];
    mcp_tools_py_code_checker_mypy -> src [fillcolor="blue",minlen="3"];
    mcp_tools_py_code_checker_mypy_models -> mcp_tools_py_code_checker_mypy [fillcolor="#10f910",weight="2"];
    mcp_tools_py_code_checker_mypy_models -> mcp_tools_py_code_checker_mypy_parsers [fillcolor="#10f910",weight="2"];
    mcp_tools_py_code_checker_mypy_models -> mcp_tools_py_code_checker_mypy_reporting [fillcolor="#10f910",weight="2"];
    mcp_tools_py_code_checker_mypy_models -> mcp_tools_py_code_checker_mypy_runners [fillcolor="#10f910",weight="2"];
    mcp_tools_py_code_checker_mypy_models -> src [fillcolor="#10f910",minlen="4"];
    mcp_tools_py_code_checker_mypy_parsers -> mcp_tools_py_code_checker_mypy_runners [fillcolor="blue",weight="2"];
    mcp_tools_py_code_checker_mypy_parsers -> src [fillcolor="blue",minlen="4"];
    mcp_tools_py_code_checker_mypy_reporting -> mcp_tools_py_code_checker_mypy [fillcolor="blue",weight="2"];
    mcp_tools_py_code_checker_mypy_reporting -> src [fillcolor="blue",minlen="3"];
    mcp_tools_py_code_checker_mypy_runners -> mcp_tools_py_code_checker_mypy [fillcolor="blue",weight="2"];
    mcp_tools_py_code_checker_mypy_runners -> mcp_tools_py_code_checker_mypy_reporting [fillcolor="blue",weight="2"];
    mcp_tools_py_code_checker_mypy_runners -> src [fillcolor="blue",minlen="4"];
    mcp_tools_py_code_checker_pylint -> mcp_tools_py_server [fillcolor="blue"];
    mcp_tools_py_code_checker_pylint -> src [fillcolor="blue",minlen="3"];
    mcp_tools_py_code_checker_pylint_models -> mcp_tools_py_code_checker_pylint [fillcolor="#10f910",weight="2"];
    mcp_tools_py_code_checker_pylint_models -> mcp_tools_py_code_checker_pylint_parsers [fillcolor="#10f910",weight="2"];
    mcp_tools_py_code_checker_pylint_models -> mcp_tools_py_code_checker_pylint_reporting [fillcolor="#10f910",weight="2"];
    mcp_tools_py_code_checker_pylint_models -> mcp_tools_py_code_checker_pylint_runners [fillcolor="#10f910",weight="2"];
    mcp_tools_py_code_checker_pylint_models -> src [fillcolor="#10f910",minlen="4"];
    mcp_tools_py_code_checker_pylint_parsers -> mcp_tools_py_code_checker_pylint_runners [fillcolor="#3db83d",weight="2"];
    mcp_tools_py_code_checker_pylint_parsers -> src [fillcolor="#3db83d",minlen="4"];
    mcp_tools_py_code_checker_pylint_reporting -> mcp_tools_py_code_checker_pylint [fillcolor="blue",weight="2"];
    mcp_tools_py_code_checker_pylint_reporting -> src [fillcolor="blue",minlen="3"];
    mcp_tools_py_code_checker_pylint_runners -> mcp_tools_py_code_checker_pylint [fillcolor="blue",weight="2"];
    mcp_tools_py_code_checker_pylint_runners -> mcp_tools_py_code_checker_pylint_reporting [fillcolor="blue",weight="2"];
    mcp_tools_py_code_checker_pylint_runners -> src [fillcolor="blue",minlen="4"];
    mcp_tools_py_code_checker_pylint_utils -> mcp_tools_py_code_checker_pylint [fillcolor="#2fdb2f",weight="2"];
    mcp_tools_py_code_checker_pylint_utils -> mcp_tools_py_code_checker_pylint_reporting [fillcolor="#2fdb2f",weight="2"];
    mcp_tools_py_code_checker_pylint_utils -> src [fillcolor="#2fdb2f",minlen="4"];
    mcp_tools_py_code_checker_pytest -> mcp_tools_py_server [fillcolor="blue"];
    mcp_tools_py_code_checker_pytest -> src [fillcolor="blue",minlen="3"];
    mcp_tools_py_code_checker_pytest_models -> mcp_tools_py_code_checker_pytest [fillcolor="#10f910",weight="2"];
    mcp_tools_py_code_checker_pytest_models -> mcp_tools_py_code_checker_pytest_parsers [fillcolor="#10f910",weight="2"];
    mcp_tools_py_code_checker_pytest_models -> mcp_tools_py_code_checker_pytest_reporting [fillcolor="#10f910",weight="2"];
    mcp_tools_py_code_checker_pytest_models -> mcp_tools_py_code_checker_pytest_runners [fillcolor="#10f910",weight="2"];
    mcp_tools_py_code_checker_pytest_models -> mcp_tools_py_code_checker_pytest_utils [fillcolor="#10f910",weight="2"];
    mcp_tools_py_code_checker_pytest_models -> src [fillcolor="#10f910",minlen="4"];
    mcp_tools_py_code_checker_pytest_parsers -> mcp_tools_py_code_checker_pytest [fillcolor="blue",weight="2"];
    mcp_tools_py_code_checker_pytest_parsers -> mcp_tools_py_code_checker_pytest_runners [fillcolor="blue",weight="2"];
    mcp_tools_py_code_checker_pytest_parsers -> src [fillcolor="blue",minlen="4"];
    mcp_tools_py_code_checker_pytest_reporting -> mcp_tools_py_code_checker_pytest [fillcolor="blue",weight="2"];
    mcp_tools_py_code_checker_pytest_reporting -> mcp_tools_py_code_checker_pytest_runners [fillcolor="blue",weight="2"];
    mcp_tools_py_code_checker_pytest_reporting -> mcp_tools_py_server [fillcolor="blue",minlen="2"];
    mcp_tools_py_code_checker_pytest_reporting -> src [fillcolor="blue",minlen="3"];
    mcp_tools_py_code_checker_pytest_runners -> mcp_tools_py_code_checker_pytest [fillcolor="blue",weight="2"];
    mcp_tools_py_code_checker_pytest_runners -> mcp_tools_py_server [fillcolor="blue",minlen="2"];
    mcp_tools_py_code_checker_pytest_runners -> src [fillcolor="blue",minlen="3"];
    mcp_tools_py_code_checker_pytest_utils -> mcp_tools_py_code_checker_pytest_runners [fillcolor="blue",weight="2"];
    mcp_tools_py_code_checker_pytest_utils -> src [fillcolor="blue",minlen="4"];
    mcp_tools_py_log_utils -> mcp_tools_py_code_checker_mypy_runners [fillcolor="#05e505",minlen="2"];
    mcp_tools_py_log_utils -> mcp_tools_py_code_checker_pylint_reporting [fillcolor="#05e505",minlen="2"];
    mcp_tools_py_log_utils -> mcp_tools_py_code_checker_pylint_runners [fillcolor="#05e505",minlen="2"];
    mcp_tools_py_log_utils -> mcp_tools_py_code_checker_pytest_reporting [fillcolor="#05e505",minlen="2"];
    mcp_tools_py_log_utils -> mcp_tools_py_code_checker_pytest_runners [fillcolor="#05e505",minlen="2"];
    mcp_tools_py_log_utils -> mcp_tools_py_server [fillcolor="#05e505"];
    mcp_tools_py_log_utils -> mcp_tools_py_utils_subprocess_runner [fillcolor="#05e505",minlen="2"];
    mcp_tools_py_log_utils -> src [fillcolor="#05e505",minlen="4"];
    mcp_tools_py_server -> src [fillcolor="#2e6b2e",minlen="3"];
    mcp_tools_py_utils -> mcp_tools_py_code_checker_mypy_runners [fillcolor="#06ef06",minlen="2"];
    mcp_tools_py_utils -> mcp_tools_py_code_checker_pylint_runners [fillcolor="#06ef06",minlen="2"];
    mcp_tools_py_utils -> mcp_tools_py_code_checker_pytest_runners [fillcolor="#06ef06",minlen="2"];
    mcp_tools_py_utils -> mcp_tools_py_code_checker_pytest_utils [fillcolor="#06ef06",minlen="2"];
    mcp_tools_py_utils -> mcp_tools_py_server [fillcolor="#06ef06"];
    mcp_tools_py_utils -> src [fillcolor="#06ef06",minlen="3"];
    mcp_tools_py_utils_subprocess_runner -> mcp_tools_py_code_checker_mypy_runners [fillcolor="#05e505",minlen="2"];
    mcp_tools_py_utils_subprocess_runner -> mcp_tools_py_code_checker_pylint_runners [fillcolor="#05e505",minlen="2"];
    mcp_tools_py_utils_subprocess_runner -> mcp_tools_py_code_checker_pytest_runners [fillcolor="#05e505",minlen="2"];
    mcp_tools_py_utils_subprocess_runner -> mcp_tools_py_code_checker_pytest_utils [fillcolor="#05e505",minlen="2"];
    mcp_tools_py_utils_subprocess_runner -> mcp_tools_py_server [fillcolor="#05e505",minlen="2"];
    mcp_tools_py_utils_subprocess_runner -> mcp_tools_py_utils [fillcolor="#05e505",weight="2"];
    mcp_tools_py_utils_subprocess_runner -> src [fillcolor="#05e505",minlen="3"];
    pythonjsonlogger -> mcp_tools_py_log_utils [fillcolor="blue",minlen="2"];
    pythonjsonlogger -> src [fillcolor="blue",minlen="3"];
    structlog -> mcp_tools_py_code_checker_mypy_parsers [fillcolor="#f906f9",minlen="3"];
    structlog -> mcp_tools_py_code_checker_mypy_reporting [fillcolor="#f906f9",minlen="3"];
    structlog -> mcp_tools_py_code_checker_mypy_runners [fillcolor="#f906f9",minlen="3"];
    structlog -> mcp_tools_py_code_checker_pylint_parsers [fillcolor="#f906f9",minlen="3"];
    structlog -> mcp_tools_py_code_checker_pylint_reporting [fillcolor="#f906f9",minlen="3"];
    structlog -> mcp_tools_py_code_checker_pylint_runners [fillcolor="#f906f9",minlen="3"];
    structlog -> mcp_tools_py_code_checker_pytest_reporting [fillcolor="#f906f9",minlen="3"];
    structlog -> mcp_tools_py_code_checker_pytest_runners [fillcolor="#f906f9",minlen="3"];
    structlog -> mcp_tools_py_log_utils [fillcolor="#f906f9",minlen="2"];
    structlog -> mcp_tools_py_server [fillcolor="#f906f9",minlen="2"];
    structlog -> mcp_tools_py_utils_subprocess_runner [fillcolor="#f906f9",minlen="3"];
    structlog -> src [fillcolor="#f906f9",minlen="4"];
}

