Pylint Configuration via pyproject.toml

March 31, 2026 · View on GitHub

How pylint reads pyproject.toml

When the MCP tool invokes pylint (via python -m pylint), pylint automatically reads pyproject.toml from the project directory. This means your [tool.pylint.messages_control] settings take effect without any extra configuration in the MCP tool itself.

The MCP tool passes pylint output through cleanly — it applies no post-filtering and adds no hidden --disable flags. pyproject.toml is the single source of truth for which messages pylint reports.


Replicating the old ERROR / FATAL default

Previous versions of this tool suppressed all warnings, conventions, and refactoring messages automatically. To replicate that behaviour in your own project, add this section to pyproject.toml:

[tool.pylint.messages_control]
disable = ["W", "C", "R"]

This disables all messages in the Warning (W), Convention (C), and Refactor (R) categories, leaving only Error (E) and Fatal (F) messages visible — the same set the old default produced.


Finer-grained code control

If you want to disable specific codes rather than entire categories, list them explicitly. The following codes were previously suppressed by the tool's hardcoded defaults:

[tool.pylint.messages_control]
disable = [
    "C0114",  # missing-module-docstring
    "C0116",  # missing-function-docstring
    "C0301",  # line-too-long
    "C0303",  # trailing-whitespace
    "C0305",  # trailing-newlines
    "W0311",  # bad-indentation
    "W0611",  # unused-import
    "W1514",  # unspecified-encoding
]

Mix and match to suit your project's standards.


One-off overrides with extra_args

To suppress a specific code for a single run without changing pyproject.toml, pass extra_args to the MCP tool:

run_pylint_check(extra_args=["--disable=W0611"])

Multiple flags are supported:

run_pylint_check(extra_args=["--disable=W0611,C0114", "--max-line-length=120"])

extra_args values are appended directly to the pylint CLI command, so any valid pylint option works here.


Target directory auto-detection

When target_directories is omitted (or None), the checker tools (pylint, mypy, vulture) auto-detect which directories to analyze from pyproject.toml:

Settingpyproject.toml keyFallback
Source dirs[tool.setuptools.packages.find] where["src"]
Test dirs[tool.pytest.ini_options] testpaths["tests"]

Example pyproject.toml that would auto-detect ["src"] and ["tests"]:

[tool.setuptools.packages.find]
where = ["src"]

[tool.pytest.ini_options]
testpaths = ["tests"]

Only directories that actually exist on disk are included. If none of the resolved directories exist, an error is returned.

Pass an explicit target_directories list to override auto-detection.


Reference

Full list of pylint message codes and categories: pylint messages overview