Skip to main content
Glama
pyproject.toml3.64 kB
[project] name = "homelab-mcp-server" version = "0.2.0" description = "MCP server for homelab VM infrastructure management with service installation framework" readme = "README.md" requires-python = ">=3.12" dependencies = [ "mcp[cli]>=1.9.1", "pyyaml>=6.0", "asyncssh>=2.14.0", "jsonschema>=4.24.0", "httpx>=0.28.1", "aiofiles>=24.1.0", "rich>=13.10.5", ] [project.optional-dependencies] monitoring = [ "pandas>=2.2.3", "pyarrow>=20.0.0", ] automation = [ "ansible>=2.9.0", "paramiko>=3.0.0", ] ai = [ "ollama>=0.4.4", ] security = [ "keyring>=25.0.0", "cryptography>=42.0.0", ] [project.scripts] homelab-mcp = "homelab_mcp.server:main" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src/homelab_mcp"] [tool.uv] dev-dependencies = [ # Testing "pytest>=8.3.5", "pytest-asyncio>=0.23.0", "pytest-cov>=6.1.1", "pytest-mock>=3.14.0", "aioresponses>=0.7.6", "coverage[toml]>=7.9.1", "docker>=7.0.0", # Code quality "ruff>=0.8.0", "mypy>=1.13.0", # Security "bandit>=1.7.0", "safety>=3.0.0", # Development tools "ipython>=8.0.0", "types-pyyaml>=6.0.12.20250915", "pre-commit>=4.3.0", ] [tool.uv.sources] [tool.pytest.ini_options] minversion = "8.0" addopts = [ "-ra", "--strict-markers", "--strict-config", "--cov=src", "--cov-report=term-missing", "--cov-report=html:htmlcov", "--cov-report=xml", ] testpaths = ["tests"] filterwarnings = [ "error", "ignore::UserWarning", "ignore::DeprecationWarning", ] markers = [ "unit: Unit tests", "integration: Integration tests", "slow: Slow tests", "network: Tests requiring network access", "ssh: Tests requiring SSH connectivity", "database: Tests requiring database", "ansible: Tests requiring Ansible", "vm: Tests for VM operations", ] [tool.coverage.run] source = ["src"] omit = [ "*/tests/*", "*/test_*.py", "*/__pycache__/*", "*/site-packages/*", ] [tool.coverage.report] exclude_lines = [ "pragma: no cover", "def __repr__", "if self.debug:", "if settings.DEBUG", "raise AssertionError", "raise NotImplementedError", "if 0:", "if __name__ == .__main__.:", "class .*\\bProtocol\\):", "@(abc\\.)?abstractmethod", ] show_missing = true skip_covered = false [tool.coverage.html] directory = "htmlcov" [tool.ruff] target-version = "py312" line-length = 88 [tool.ruff.lint] select = [ "E", # pycodestyle errors "W", # pycodestyle warnings "F", # pyflakes "I", # isort "B", # flake8-bugbear "C4", # flake8-comprehensions "UP", # pyupgrade ] ignore = [ "E501", # line too long, handled by formatter "B008", # do not perform function calls in argument defaults "C901", # too complex ] [tool.ruff.lint.per-file-ignores] "tests/**/*" = ["B018", "S101", "S105", "S106"] [tool.mypy] python_version = "3.12" warn_return_any = true warn_unused_configs = true disallow_untyped_defs = true disallow_incomplete_defs = true check_untyped_defs = true disallow_untyped_decorators = true no_implicit_optional = true warn_redundant_casts = true warn_unused_ignores = true warn_no_return = true warn_unreachable = true strict_equality = true show_error_codes = true [[tool.mypy.overrides]] module = "tests.*" disallow_untyped_defs = false disallow_incomplete_defs = false disallow_untyped_decorators = false [tool.bandit] exclude_dirs = ["tests"] skips = ["B101", "B601"] # Skip assert_used and shell=True warnings in tests

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/washyu/mcp_python_server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server