Skip to main content
Glama

TrueNAS Core MCP Server

pyproject.toml3.75 kB
[build-system] requires = ["setuptools>=61.0", "wheel"] build-backend = "setuptools.build_meta" [project] name = "truenas-mcp-server" version = "3.0.2" description = "Production-ready MCP server for TrueNAS Core - Control your NAS through natural language" readme = "README.md" requires-python = ">=3.10" license = {text = "MIT"} authors = [ {name = "Vinnie Espo", email = "vespo92@gmail.com"}, ] keywords = ["truenas", "mcp", "claude", "api", "nas", "storage", "zfs", "smb", "nfs", "iscsi", "kubernetes"] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: System Administrators", "Intended Audience :: Developers", "Topic :: System :: Systems Administration", "Topic :: System :: Archiving :: Backup", "Topic :: System :: Filesystems", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Framework :: AsyncIO", ] dependencies = [ "mcp>=1.1.0", "httpx>=0.27.0", "python-dotenv>=1.0.0", "pydantic>=2.0.0", "pydantic-settings>=2.0.0", ] [project.optional-dependencies] dev = [ "pytest>=7.0.0", "pytest-asyncio>=0.21.0", "pytest-cov>=4.0.0", "pytest-mock>=3.10.0", "black>=23.0.0", "flake8>=6.0.0", "flake8-docstrings>=1.7.0", "mypy>=1.0.0", "isort>=5.12.0", "pre-commit>=3.0.0", "safety>=2.3.0", "bandit>=1.7.5", ] docs = [ "mkdocs>=1.5.0", "mkdocs-material>=9.0.0", "mkdocstrings[python]>=0.24.0", ] [project.urls] Homepage = "https://github.com/vespo92/TrueNasCoreMCP" Documentation = "https://github.com/vespo92/TrueNasCoreMCP/wiki" Repository = "https://github.com/vespo92/TrueNasCoreMCP.git" Issues = "https://github.com/vespo92/TrueNasCoreMCP/issues" Changelog = "https://github.com/vespo92/TrueNasCoreMCP/blob/main/CHANGELOG.md" [project.scripts] truenas-mcp-server = "truenas_mcp_server:main" [tool.setuptools] include-package-data = true [tool.setuptools.packages.find] where = ["."] include = ["truenas_mcp_server*"] exclude = ["tests*", "docs*", "examples*", "TODELETE*"] [tool.black] line-length = 100 target-version = ['py310', 'py311', 'py312'] include = '\.pyi?$' exclude = ''' /( \.git | \.mypy_cache | \.tox | \.venv | venv | _build | buck-out | build | dist | TODELETE )/ ''' [tool.isort] profile = "black" line_length = 100 multi_line_output = 3 include_trailing_comma = true force_grid_wrap = 0 use_parentheses = true ensure_newline_before_comments = true [tool.mypy] python_version = "3.10" warn_return_any = true warn_unused_configs = true disallow_untyped_defs = false disallow_incomplete_defs = false check_untyped_defs = true ignore_missing_imports = true exclude = [ "venv/", "TODELETE/", "tests/fixtures/", ] [tool.pytest.ini_options] minversion = "6.0" addopts = "-ra -q --strict-markers" testpaths = [ "tests", ] python_files = "test_*.py" python_classes = "Test*" python_functions = "test_*" [tool.coverage.run] source = ["truenas_mcp_server"] omit = [ "*/tests/*", "*/venv/*", "*/__pycache__/*", "*/TODELETE/*", ] [tool.coverage.report] exclude_lines = [ "pragma: no cover", "def __repr__", "if self.debug:", "if __name__ == .__main__.:", "raise AssertionError", "raise NotImplementedError", ] [tool.bandit] exclude_dirs = ["tests", "venv", "TODELETE"] skips = ["B101"] # Skip assert_used test [tool.flake8] max-line-length = 100 extend-ignore = ["E203", "W503"] exclude = [ ".git", "__pycache__", "docs/source/conf.py", "old", "build", "dist", "venv", "TODELETE", ] max-complexity = 10

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/vespo92/TrueNasCoreMCP'

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