[project]
name = "mcp-code-checker"
dynamic = ["version"]
authors = [
{name = "Marcus Jellinghaus"},
]
description = "An MCP server for running python code checks (pylint, pytest and mypy)"
readme = "README.md"
requires-python = ">=3.11"
license = {text = "MIT"}
keywords = ["mcp", "code-checker", "pylint", "pytest", "mypy", "claude", "ai"]
classifiers = [
"Programming Language :: Python :: 3",
"Operating System :: OS Independent",
"License :: OSI Approved :: MIT License",
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"Topic :: Software Development :: Libraries :: Python Modules",
]
dependencies = [
"pathspec>=0.12.1",
"mcp>=1.3.0",
"mcp[server]>=1.3.0",
"mcp[cli]>=1.3.0",
"pylint>=3.3.3",
"pytest>=8.3.5",
"pytest-json-report>=1.5.0",
"pytest-asyncio>=0.25.3",
"mypy>=1.9.0",
"structlog>=24.5.0",
"python-json-logger>=3.2.1",
"mcp-config @ git+https://github.com/MarcusJellinghaus/mcp-config.git",
]
[project.optional-dependencies]
dev = [
"black>=24.10.0",
"isort>=5.13.2",
"mcp-server-filesystem @ git+https://github.com/MarcusJellinghaus/mcp_server_filesystem.git",
]
[project.scripts]
mcp-code-checker = "mcp_code_checker.main:main"
[project.urls]
"Homepage" = "https://github.com/yourusername/mcp-code-checker"
"Bug Tracker" = "https://github.com/yourusername/mcp-code-checker/issues"
"Documentation" = "https://github.com/yourusername/mcp-code-checker#readme"
[tool.pytest.ini_options]
testpaths = ["tests"]
asyncio_default_fixture_loop_scope = "function"
pythonpath = ["."]
[tool.black]
line-length = 88
target-version = ["py311"]
[tool.isort]
profile = "black"
line_length = 88
float_to_top = true
[tool.mypy]
python_version = "3.11"
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = true
disallow_incomplete_defs = true
check_untyped_defs = true
# disallow_untyped_decorators = false # can create issues with pytest fixtures
no_implicit_optional = true
strict_optional = true
mypy_path = "src"
namespace_packages = true
explicit_package_bases = true
[[tool.mypy.overrides]]
module = ["mcp_code_checker.utils.subprocess_runner"]
# Disable unused ignore warnings for platform-specific Unix attributes
warn_unused_ignores = false
[[tool.mypy.overrides]]
module = ["pytest.*"]
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = ["mcp.server.fastmcp"]
ignore_missing_imports = true
# Include tools directory in the distribution
[tool.setuptools]
include-package-data = true
[tool.setuptools.packages.find]
where = ["src"]
[tool.setuptools.package-data]
"*" = ["py.typed"]
# Include sleep_script.py from the src/mcp_code_checker/resources/ folder
"mcp_code_checker.resources" = ["sleep_script.py"]
[build-system]
requires = ["setuptools>=61.0", "setuptools-scm>=8.0"]
build-backend = "setuptools.build_meta"
[tool.setuptools_scm]
# Version is automatically determined from git tags
# Tag format: v0.1.0 -> version 0.1.0
# Between releases: 0.1.0.devN+gHASH (includes commit count and hash)