[build-system] requires = ["setuptools>=61.0", "wheel"] build-backend = "setuptools.build_meta" [project] name = "safe-ssh-mcp" version = "0.1.15" description = "A secure and scoped SSH MCP server for executing safe read-only diagnostic commands over SSH" authors = [ { name="Anton Areso Gladyshev", email="returnstrike@yandex.com" } ] # switch to that later to comply PEP639 # license = "AGPL-3.0-or-later" # for now comply to PEP621 we use the following line and "License" in the classifiers list. license = { file = "LICENSE" } readme = "README.md" requires-python = ">=3.11,<4.0" classifiers = [ "Programming Language :: Python :: 3", "Operating System :: POSIX :: Linux", "License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)", ] dependencies = [ "paramiko>=5.0.0,<6", "fastmcp>=3.2.0,<4" ] [project.optional-dependencies] dev = [ "pytest>=8.0,<9", "pytest-mock>=3.14,<4", "pytest-cov>=6.0,<7", # I like it more when debugging "json-dev-logger>=0.0.15", ] [project.urls] "Homepage" = "https://github.com/Areso/safe-ssh-mcp" [project.scripts] safe-ssh-mcp = "mcp_ssh:main" [tool.setuptools] py-modules = ["mcp_ssh"] [tool.poetry] packages = [{include = "mcp_ssh.py"}] [tool.pytest.ini_options] testpaths = ["tests"] pythonpath = ["."] [tool.coverage.run] source = ["mcp_ssh"] omit = ["tests/*"] [tool.coverage.report] show_missing = true fail_under = 80