[project] name = "serverfs-mcp" version = "0.24.2" description = "A secure MCP server that exposes explicitly configured directories as controlled workdirs to AI agents, read-only by default with opt-in per-workdir file mutation." readme = "README.md" license = "MIT" authors = [ { name = "NTLx" }, ] requires-python = ">=3.12" dependencies = [ "mcp==2.3.0", "pydantic>=2.7", "starlette>=0.48", "uvicorn>=0.30", ] [project.scripts] serverfs = "serverfs_mcp.cli:main" serverfs-auth = "serverfs_mcp.auth_server:main" [dependency-groups] dev = [ "pytest>=8.3", "pytest-cov>=5", "jsonschema>=4.23", "ruff>=0.8", ] [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src/serverfs_mcp"] [tool.hatch.build.targets.wheel.force-include] "native/macos/service_manager/Sources/ServiceManager" = "serverfs_mcp/_darwin_service_manager/Sources/ServiceManager" "native/macos/service_manager/Sources/ServiceLauncher" = "serverfs_mcp/_darwin_service_manager/Sources/ServiceLauncher" "native/macos/service_manager/LaunchAgents" = "serverfs_mcp/_darwin_service_manager/LaunchAgents" "native/macos/service_manager/Info.plist" = "serverfs_mcp/_darwin_service_manager/Info.plist" "native/macos/service_manager/build.sh" = "serverfs_mcp/_darwin_service_manager/build.sh" [tool.pytest.ini_options] testpaths = ["tests"] addopts = "-q" [tool.ruff] line-length = 100 src = ["src", "tests"] [tool.ruff.lint] select = [ "E", # pycodestyle errors "W", # pycodestyle warnings "F", # pyflakes "I", # isort "UP", # pyupgrade "B", # bugbear ] [tool.coverage.run] source = ["serverfs_mcp"]