Skip to main content
Glama

TrueNAS Core MCP Server

Makefile7.68 kB
# Makefile for TrueNAS MCP Server # Provides common development commands .PHONY: help install install-dev clean test lint format run setup docs # Default target help: @echo "TrueNAS MCP Server - Development Commands" @echo "========================================" @echo "" @echo "Setup & Installation:" @echo " make setup - Complete initial setup" @echo " make install - Install production dependencies" @echo " make install-dev - Install development dependencies" @echo "" @echo "Development:" @echo " make test - Run all tests (or minimal if pytest not installed)" @echo " make test-minimal - Run minimal tests (no pytest required)" @echo " make test-cov - Run tests with coverage (requires pytest)" @echo " make lint - Run linting checks" @echo " make format - Format code with Black" @echo " make clean - Clean up temporary files" @echo "" @echo "Running:" @echo " make run - Run the MCP server" @echo " make test-conn - Test TrueNAS connection" @echo "" @echo "Documentation:" @echo " make docs - Build documentation" @echo " make docs-serve - Serve documentation locally" # Setup virtual environment and install everything setup: @echo "🔧 Setting up development environment..." @if command -v python3 >/dev/null 2>&1; then \ PYTHON_CMD=python3; \ elif command -v python >/dev/null 2>&1; then \ PYTHON_CMD=python; \ else \ echo "❌ Python not found. Please install Python 3.8 or higher."; \ exit 1; \ fi; \ $$PYTHON_CMD -m venv venv @echo "✅ Virtual environment created" @echo "" @echo "📦 Installing dependencies..." @if [ -f venv/bin/activate ]; then \ . venv/bin/activate && pip install --upgrade pip setuptools wheel; \ . venv/bin/activate && pip install -r requirements.txt; \ else \ venv\\Scripts\\activate && pip install --upgrade pip setuptools wheel; \ venv\\Scripts\\activate && pip install -r requirements.txt; \ fi @echo "✅ Core dependencies installed" @echo "" @echo "📦 Installing development dependencies (optional)..." @if [ -f venv/bin/activate ]; then \ . venv/bin/activate && pip install -r requirements-dev.txt || echo "⚠️ Some dev dependencies failed to install (this is okay)"; \ else \ venv\\Scripts\\activate && pip install -r requirements-dev.txt || echo "⚠️ Some dev dependencies failed to install (this is okay)"; \ fi @echo "" @echo "📋 Creating .env from example..." @if [ ! -f .env ]; then \ cp .env.example .env; \ echo "✅ Created .env file - please edit with your TrueNAS details"; \ else \ echo "⚠️ .env already exists - skipping"; \ fi @echo "" @echo "🎉 Setup complete! Next steps:" @echo " 1. Edit .env with your TrueNAS details" @echo " 2. Activate virtual environment:" @echo " - macOS/Linux: source venv/bin/activate" @echo " - Windows: venv\\Scripts\\activate" @echo " 3. Run 'make test-conn' to test the connection" # Install production dependencies install: pip install -r requirements.txt # Install development dependencies install-dev: pip install -r requirements-dev.txt # Clean up temporary files clean: @echo "🧹 Cleaning up..." find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true find . -type f -name "*.pyc" -delete 2>/dev/null || true find . -type f -name "*.pyo" -delete 2>/dev/null || true find . -type f -name "*.coverage" -delete 2>/dev/null || true find . -type d -name "*.egg-info" -exec rm -rf {} + 2>/dev/null || true find . -type d -name ".pytest_cache" -exec rm -rf {} + 2>/dev/null || true find . -type d -name ".mypy_cache" -exec rm -rf {} + 2>/dev/null || true find . -type d -name "htmlcov" -exec rm -rf {} + 2>/dev/null || true find . -type f -name ".coverage" -delete 2>/dev/null || true rm -rf dist/ build/ 2>/dev/null || true @echo "✅ Cleanup complete" # Run tests test: @echo "🧪 Running tests..." @if command -v pytest >/dev/null 2>&1; then \ pytest tests/ -v; \ else \ echo "⚠️ pytest not installed, running minimal tests..."; \ python tests/minimal_test.py; \ fi # Run minimal tests (no pytest required) test-minimal: @echo "🧪 Running minimal tests..." python tests/minimal_test.py # Run tests with coverage test-cov: @echo "🧪 Running tests with coverage..." pytest tests/ --cov=truenas_mcp_server --cov-report=html --cov-report=term # Test TrueNAS connection test-conn: @echo "🔌 Testing TrueNAS connection..." python tests/test_connection.py # Run linting lint: @echo "🔍 Running linting checks..." flake8 truenas_mcp_server.py tests/ examples/ --max-line-length=100 --exclude=venv,build,dist,TODELETE @echo "✅ Linting passed" # Format code format: @echo "🎨 Formatting code with Black..." black truenas_mcp_server.py tests/ examples/ --line-length=100 isort truenas_mcp_server.py tests/ examples/ @echo "✅ Formatting complete" # Type checking typecheck: @echo "🔍 Running type checks..." mypy truenas_mcp_server.py --ignore-missing-imports # Security scan security: @echo "🔒 Running security scan..." bandit -r truenas_mcp_server.py safety check # Run the MCP server run: @echo "🚀 Starting TrueNAS MCP Server..." @echo "Press Ctrl+C to stop" @python truenas_mcp_server.py # Build documentation docs: @echo "📚 Building documentation..." @if command -v mkdocs &> /dev/null; then \ mkdocs build; \ else \ echo "⚠️ mkdocs not installed. Run: pip install mkdocs mkdocs-material"; \ fi # Serve documentation locally docs-serve: @echo "📚 Serving documentation at http://localhost:8000..." @if command -v mkdocs &> /dev/null; then \ mkdocs serve; \ else \ echo "⚠️ mkdocs not installed. Run: pip install mkdocs mkdocs-material"; \ fi # Create distribution package dist: @echo "📦 Creating distribution package..." python -m build @echo "✅ Package created in dist/" # Upload to PyPI (test) upload-test: @echo "📤 Uploading to TestPyPI..." python -m twine upload --repository testpypi dist/* # Upload to PyPI (production) upload: @echo "📤 Uploading to PyPI..." @echo "⚠️ Are you sure? This will upload to the real PyPI!" @read -p "Continue? (y/N) " -n 1 -r; \ echo ""; \ if [[ $$REPLY =~ ^[Yy]$$ ]]; then \ python -m twine upload dist/*; \ else \ echo "Upload cancelled"; \ fi # Install pre-commit hooks pre-commit: @echo "🔗 Installing pre-commit hooks..." pre-commit install @echo "✅ Pre-commit hooks installed" # Run pre-commit on all files pre-commit-all: @echo "🔍 Running pre-commit on all files..." pre-commit run --all-files # Update dependencies update-deps: @echo "📦 Updating dependencies..." pip install --upgrade pip pip install --upgrade -r requirements.txt pip freeze > requirements-lock.txt @echo "✅ Dependencies updated. Lock file created: requirements-lock.txt" # Development environment info info: @echo "TrueNAS MCP Server - Environment Info" @echo "=====================================" @echo "" @echo "Python Version:" @python --version @echo "" @echo "Installed Packages:" @pip list | grep -E "(mcp|httpx|dotenv)" @echo "" @echo "Environment Variables:" @if [ -f .env ]; then \ echo "TRUENAS_URL=$$(grep TRUENAS_URL .env | cut -d'=' -f2)"; \ echo "TRUENAS_API_KEY=$$(grep TRUENAS_API_KEY .env | cut -d'=' -f2 | sed 's/\(.\{10\}\).*/\1.../')"; \ echo "TRUENAS_VERIFY_SSL=$$(grep TRUENAS_VERIFY_SSL .env | cut -d'=' -f2)"; \ else \ echo "⚠️ .env file not found"; \ fi @echo "" @echo "Project Structure:" @echo " Main: truenas_mcp_server.py" @echo " Tests: tests/" @echo " Examples: examples/" @echo " Utils: utils/" @echo " Docs: docs/"

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