{"_id":"@0xrelogic/tailscale-mcp-server","_rev":"4-10cc6552e96978f80f9963528a07c4aa","name":"@0xrelogic/tailscale-mcp-server","dist-tags":{"latest":"0.3.4"},"versions":{"0.3.1":{"name":"@0xrelogic/tailscale-mcp-server","version":"0.3.1","keywords":["tailscale","mcp","model context protocol","tailscale mcp","tailscale mcp server"],"author":{"url":"forked from HexSleeves","name":"0xrelogic"},"license":"MIT","_id":"@0xrelogic/tailscale-mcp-server@0.3.1","maintainers":[{"name":"0xrelogic","email":"maedeeaew@gmail.com"}],"bin":{"tailscale-mcp-server":"dist/index.js"},"dist":{"shasum":"1cee5620379822cadd548d7cb76a6f513f1f9cf4","tarball":"https://registry.npmjs.org/@0xrelogic/tailscale-mcp-server/-/tailscale-mcp-server-0.3.1.tgz","fileCount":4,"integrity":"sha512-diuAOuHkLYXb7DzlnGMsJfFwqXl+mLD7gRVzPIB+CDdDPZa7m8aUBG3geKRq6o0wsoMqh+2J29eIyNhEj19oFA==","signatures":[{"sig":"MEUCIQCSDkfhePVePlxrTiDYNYzOQFq8KqRNhK0E/54drFG/rwIgMtehNrmf0IlqE3IbfSomfv0Ut6P5kTlb77w4RzPZpto=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132710},"main":"dist/index.js","type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"3264ffd4bbc371cc4b3a70f214d377f7f8f26848","scripts":{"qa":"bun run typecheck && bun run test:unit && bun run check","dev":"bun run build:dev && bun dist/index.js","lint":"biome lint .","test":"bun test","build":"bun esbuild.config.js build","check":"biome check .","clean":"rimraf dist","start":"bun dist/index.js","format":"biome format --write .","publish":"./scripts/publish.sh","qa:full":"bun run typecheck && bun run test && bun run check","test:ci":"bun test ./src/__test__/utils/","build:dev":"bun esbuild.config.js dev","check:fix":"biome check --write .","dev:watch":"bun run build:watch","inspector":"bunx @modelcontextprotocol/inspector bun dist/index.js","test:unit":"bun test --testNamePattern='(?!.*integration)'","typecheck":"tsc --noEmit","dev:direct":"tsx src/index.ts","test:setup":"./scripts/setup-testing.sh","build:watch":"bun esbuild.config.js watch","publish:test":"./scripts/test-publish.sh","test:unit:ci":"npm run test:ci","test:coverage":"bun test --coverage","prepublishOnly":"bun run build","test:integration":"bun test --testNamePattern='integration'","test:integration:ci":"bun test --coverage --testNamePattern='integration'"},"_npmUser":{"name":"0xrelogic","email":"maedeeaew@gmail.com"},"_npmVersion":"10.9.2","description":"A Model Context Protocol (MCP) server that provides seamless integration with Tailscale's CLI commands and REST API, enabling automated network management and monitoring through a standardized interface. (Fixed $schema compatibility issue)","directories":{},"_nodeVersion":"22.17.0","dependencies":{"zod":"^4.0.5","axios":"^1.10.0","dotenv":"^17.2.0","express":"^5.1.0","@modelcontextprotocol/sdk":"^1.16.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","eslint":"^9.31.0","rimraf":"^6.0.1","semver":"^7.7.2","esbuild":"^0.25.6","globals":"^16.3.0","audit-ci":"^7.1.0","prettier":"3.6.2","@eslint/js":"^9.31.0","@types/bun":"latest","typescript":"^5.8.3","@types/node":"^24.0.14","@eslint/json":"^0.13.0","@biomejs/biome":"2.1.2","@types/express":"^5.0.3","@eslint/markdown":"^7.0.0","typescript-eslint":"^8.37.0","@types/json-schema":"7.0.15","@typescript-eslint/parser":"^8.37.0","@typescript-eslint/eslint-plugin":"^8.37.0"},"_npmOperationalInternal":{"tmp":"tmp/tailscale-mcp-server_0.3.1_1762803749388_0.5417754905140739","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@0xrelogic/tailscale-mcp-server","version":"0.3.2","keywords":["tailscale","mcp","model context protocol","tailscale mcp","tailscale mcp server"],"author":{"url":"forked from HexSleeves","name":"0xrelogic"},"license":"MIT","_id":"@0xrelogic/tailscale-mcp-server@0.3.2","maintainers":[{"name":"0xrelogic","email":"maedeeaew@gmail.com"}],"bin":{"tailscale-mcp-server":"dist/index.js"},"dist":{"shasum":"7cce16acce4b86749aeb63024e36af0608eb9923","tarball":"https://registry.npmjs.org/@0xrelogic/tailscale-mcp-server/-/tailscale-mcp-server-0.3.2.tgz","fileCount":4,"integrity":"sha512-pVxu8WzVVjJgUnkH4EQ0/I/4XEwNsBqL7jXkFvgcTGikAq4o1A2aXdpZ5S7dXh2XAPtuQwF7YEid4gdPTGXSIQ==","signatures":[{"sig":"MEQCIDLX4yQkx/7LIqwEhY6Ey8F2IwpcL5k0vqLe3ekNDMkOAiA0PEV1Rxd8cVximmm79N5JkjQaIyzvcWc5cI4yqgpSxA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132710},"main":"dist/index.js","type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"3264ffd4bbc371cc4b3a70f214d377f7f8f26848","scripts":{"qa":"bun run typecheck && bun run test:unit && bun run check","dev":"bun run build:dev && bun dist/index.js","lint":"biome lint .","test":"bun test","build":"bun esbuild.config.js build","check":"biome check .","clean":"rimraf dist","start":"bun dist/index.js","format":"biome format --write .","publish":"./scripts/publish.sh","qa:full":"bun run typecheck && bun run test && bun run check","test:ci":"bun test ./src/__test__/utils/","build:dev":"bun esbuild.config.js dev","check:fix":"biome check --write .","dev:watch":"bun run build:watch","inspector":"bunx @modelcontextprotocol/inspector bun dist/index.js","test:unit":"bun test --testNamePattern='(?!.*integration)'","typecheck":"tsc --noEmit","dev:direct":"tsx src/index.ts","test:setup":"./scripts/setup-testing.sh","build:watch":"bun esbuild.config.js watch","publish:test":"./scripts/test-publish.sh","test:unit:ci":"npm run test:ci","test:coverage":"bun test --coverage","prepublishOnly":"bun run build","test:integration":"bun test --testNamePattern='integration'","test:integration:ci":"bun test --coverage --testNamePattern='integration'"},"_npmUser":{"name":"0xrelogic","email":"maedeeaew@gmail.com"},"_npmVersion":"10.9.2","description":"A Model Context Protocol (MCP) server that provides seamless integration with Tailscale's CLI commands and REST API, enabling automated network management and monitoring through a standardized interface. (Fixed $schema compatibility issue)","directories":{},"_nodeVersion":"22.17.0","dependencies":{"zod":"^4.0.5","axios":"^1.10.0","dotenv":"^17.2.0","express":"^5.1.0","@modelcontextprotocol/sdk":"^1.16.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","eslint":"^9.31.0","rimraf":"^6.0.1","semver":"^7.7.2","esbuild":"^0.25.6","globals":"^16.3.0","audit-ci":"^7.1.0","prettier":"3.6.2","@eslint/js":"^9.31.0","@types/bun":"latest","typescript":"^5.8.3","@types/node":"^24.0.14","@eslint/json":"^0.13.0","@biomejs/biome":"2.1.2","@types/express":"^5.0.3","@eslint/markdown":"^7.0.0","typescript-eslint":"^8.37.0","@types/json-schema":"7.0.15","@typescript-eslint/parser":"^8.37.0","@typescript-eslint/eslint-plugin":"^8.37.0"},"_npmOperationalInternal":{"tmp":"tmp/tailscale-mcp-server_0.3.2_1762803826939_0.15838828336228783","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@0xrelogic/tailscale-mcp-server","version":"0.3.3","keywords":["tailscale","mcp","model context protocol","tailscale mcp","tailscale mcp server"],"author":{"url":"forked from HexSleeves","name":"0xrelogic"},"license":"MIT","_id":"@0xrelogic/tailscale-mcp-server@0.3.3","maintainers":[{"name":"0xrelogic","email":"maedeeaew@gmail.com"}],"bin":{"tailscale-mcp-server":"dist/index.js"},"dist":{"shasum":"7f8f98dc3023e3b87888d7efd0c2d599ba76f18c","tarball":"https://registry.npmjs.org/@0xrelogic/tailscale-mcp-server/-/tailscale-mcp-server-0.3.3.tgz","fileCount":4,"integrity":"sha512-yDpqtyoNL7jSuKkZg4+Fs5QxBq33ICDZaJjkVASqVxtwKL9GY/9HSSIl+AGxh4AfCOCN2ARn7F1Lfvz2tBNlFg==","signatures":[{"sig":"MEYCIQCQI7Sjwk5wkXA0Ikxc0S3M3u+dv6ly9h1LTOX2FLca4QIhAPDo1qgtKNSjlj2XjbReJQ8WscnWsvMF8HV0b01oZqJ9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132620},"main":"dist/index.js","type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"3264ffd4bbc371cc4b3a70f214d377f7f8f26848","scripts":{"qa":"bun run typecheck && bun run test:unit && bun run check","dev":"bun run build:dev && bun dist/index.js","lint":"biome lint .","test":"bun test","build":"bun esbuild.config.js build","check":"biome check .","clean":"rimraf dist","start":"bun dist/index.js","format":"biome format --write .","qa:full":"bun run typecheck && bun run test && bun run check","test:ci":"bun test ./src/__test__/utils/","build:dev":"bun esbuild.config.js dev","check:fix":"biome check --write .","dev:watch":"bun run build:watch","inspector":"bunx @modelcontextprotocol/inspector bun dist/index.js","test:unit":"bun test --testNamePattern='(?!.*integration)'","typecheck":"tsc --noEmit","dev:direct":"tsx src/index.ts","test:setup":"./scripts/setup-testing.sh","build:watch":"bun esbuild.config.js watch","test:unit:ci":"npm run test:ci","test:coverage":"bun test --coverage","prepublishOnly":"bun run build","test:integration":"bun test --testNamePattern='integration'","test:integration:ci":"bun test --coverage --testNamePattern='integration'"},"_npmUser":{"name":"0xrelogic","email":"maedeeaew@gmail.com"},"_npmVersion":"10.9.2","description":"A Model Context Protocol (MCP) server that provides seamless integration with Tailscale's CLI commands and REST API, enabling automated network management and monitoring through a standardized interface. (Fixed $schema compatibility issue)","directories":{},"_nodeVersion":"22.17.0","dependencies":{"zod":"^4.0.5","axios":"^1.10.0","dotenv":"^17.2.0","express":"^5.1.0","@modelcontextprotocol/sdk":"^1.16.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","eslint":"^9.31.0","rimraf":"^6.0.1","semver":"^7.7.2","esbuild":"^0.25.6","globals":"^16.3.0","audit-ci":"^7.1.0","prettier":"3.6.2","@eslint/js":"^9.31.0","@types/bun":"latest","typescript":"^5.8.3","@types/node":"^24.0.14","@eslint/json":"^0.13.0","@biomejs/biome":"2.1.2","@types/express":"^5.0.3","@eslint/markdown":"^7.0.0","typescript-eslint":"^8.37.0","@types/json-schema":"7.0.15","@typescript-eslint/parser":"^8.37.0","@typescript-eslint/eslint-plugin":"^8.37.0"},"_npmOperationalInternal":{"tmp":"tmp/tailscale-mcp-server_0.3.3_1762803885207_0.4217503542921581","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@0xrelogic/tailscale-mcp-server","version":"0.3.4","description":"A Model Context Protocol (MCP) server that provides seamless integration with Tailscale's CLI commands and REST API, enabling automated network management and monitoring through a standardized interface. (Fixed $schema compatibility issue)","keywords":["tailscale","mcp","model context protocol","tailscale mcp","tailscale mcp server"],"author":{"name":"0xrelogic","url":"forked from HexSleeves"},"license":"MIT","type":"module","main":"dist/index.js","bin":{"tailscale-mcp-server":"dist/index.js"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"clean":"rimraf dist","build":"bun esbuild.config.js build","build:dev":"bun esbuild.config.js dev","build:watch":"bun esbuild.config.js watch","start":"bun dist/index.js","dev":"bun run build:dev && bun dist/index.js","dev:watch":"bun run build:watch","dev:direct":"tsx src/index.ts","typecheck":"tsc --noEmit","lint":"biome lint .","format":"biome format --write .","check":"biome check .","check:fix":"biome check --write .","test":"bun test","test:unit":"bun test --testNamePattern='(?!.*integration)'","test:integration":"bun test --testNamePattern='integration'","test:coverage":"bun test --coverage","test:ci":"bun test ./src/__test__/utils/","test:unit:ci":"npm run test:ci","test:integration:ci":"bun test --coverage --testNamePattern='integration'","test:setup":"./scripts/setup-testing.sh","qa":"bun run typecheck && bun run test:unit && bun run check","qa:full":"bun run typecheck && bun run test && bun run check","inspector":"bunx @modelcontextprotocol/inspector bun dist/index.js","prepublishOnly":"npx esbuild src/index.ts --bundle --platform=node --outfile=dist/index.js --format=esm --external:@modelcontextprotocol/sdk --external:axios --external:dotenv --external:express --external:zod --banner:js=\"#!/usr/bin/env node\""},"dependencies":{"@modelcontextprotocol/sdk":"^1.16.0","axios":"^1.10.0","dotenv":"^17.2.0","express":"^5.1.0","zod":"^4.0.5"},"devDependencies":{"@biomejs/biome":"2.1.2","@eslint/js":"^9.31.0","@eslint/json":"^0.13.0","@eslint/markdown":"^7.0.0","@types/bun":"latest","@types/express":"^5.0.3","@types/json-schema":"7.0.15","@types/node":"^24.0.14","@typescript-eslint/eslint-plugin":"^8.37.0","@typescript-eslint/parser":"^8.37.0","audit-ci":"^7.1.0","esbuild":"^0.25.6","eslint":"^9.31.0","globals":"^16.3.0","prettier":"3.6.2","rimraf":"^6.0.1","semver":"^7.7.2","tsx":"^4.20.3","typescript":"^5.8.3","typescript-eslint":"^8.37.0"},"_id":"@0xrelogic/tailscale-mcp-server@0.3.4","gitHead":"3264ffd4bbc371cc4b3a70f214d377f7f8f26848","_nodeVersion":"22.17.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-ubg1uNzsLBdNlYLVeVGrxymya2wefzL09qugum7l1QsG0Y+rvgtVzyONNxxxAyDpHdR1bahVKVx0sFjLTjxURg==","shasum":"7cb118ec2b6f8b45e50691f081f104f0f5d16cf8","tarball":"https://registry.npmjs.org/@0xrelogic/tailscale-mcp-server/-/tailscale-mcp-server-0.3.4.tgz","fileCount":4,"unpackedSize":132835,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIC7Vj42yVhc4NgeoZx9YbuUW6yk6PzkDScRK+9a87GuRAiBvQ23hofQOa5Th6gevkOjJoQfIJPr7SboRTYSEPVc03Q=="}]},"_npmUser":{"name":"0xrelogic","email":"maedeeaew@gmail.com"},"directories":{},"maintainers":[{"name":"0xrelogic","email":"maedeeaew@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/tailscale-mcp-server_0.3.4_1762804216808_0.6439798840945721"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-10T19:42:29.304Z","modified":"2025-11-10T19:50:17.243Z","0.3.1":"2025-11-10T19:42:29.578Z","0.3.2":"2025-11-10T19:43:47.204Z","0.3.3":"2025-11-10T19:44:45.394Z","0.3.4":"2025-11-10T19:50:17.038Z"},"author":{"name":"0xrelogic","url":"forked from HexSleeves"},"license":"MIT","keywords":["tailscale","mcp","model context protocol","tailscale mcp","tailscale mcp server"],"description":"A Model Context Protocol (MCP) server that provides seamless integration with Tailscale's CLI commands and REST API, enabling automated network management and monitoring through a standardized interface. (Fixed $schema compatibility issue)","maintainers":[{"name":"0xrelogic","email":"maedeeaew@gmail.com"}],"readme":"# Tailscale MCP Server\r\n\r\nA modern [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server that provides seamless integration with Tailscale's CLI commands and REST API, enabling automated network management and monitoring through a standardized interface.\r\n\r\n<a href=\"https://glama.ai/mcp/servers/@HexSleeves/tailscale-mcp\">\r\n  <img width=\"380\" height=\"200\" src=\"https://glama.ai/mcp/servers/@HexSleeves/tailscale-mcp/badge\" alt=\"Tailscale Server MCP server\" />\r\n</a>\r\n\r\n## 📦 Available Packages\r\n\r\n- **NPM**: [`@hexsleeves/tailscale-mcp-server`](https://www.npmjs.com/package/@hexsleeves/tailscale-mcp-server)\r\n- **Docker Hub**: [`hexsleeves/tailscale-mcp-server`](https://hub.docker.com/r/hexsleeves/tailscale-mcp-server)\r\n- **GitHub Container Registry**: [`ghcr.io/hexsleeves/tailscale-mcp-server`](https://github.com/users/HexSleeves/packages/container/package/tailscale-mcp-server)\r\n\r\n## 🚀 Recommended Package Manager\r\n\r\nThis project is optimized for **[Bun](https://bun.sh)** for faster installation and execution. NPM is supported as a fallback option.\r\n\r\n### Quick Setup with Bun\r\n\r\n```bash\r\n# Install Bun (if not already installed)\r\ncurl -fsSL https://bun.sh/install | bash\r\n\r\n# Install dependencies\r\nbun install\r\n\r\n# Build and run\r\nbun run build\r\nbun start\r\n```\r\n\r\n### Fallback with NPM\r\n\r\n```bash\r\nnpm ci\r\nnpm run build\r\nnpm start\r\n```\r\n\r\n## Features\r\n\r\n- **Device Management**: List, authorize, deauthorize, and manage Tailscale devices\r\n- **Network Operations**: Connect/disconnect, manage routes, and monitor network status\r\n- **Security Controls**: Manage ACLs, device tags, and network lock settings\r\n- **Modern Architecture**: Modular tool system with TypeScript and Zod validation\r\n- **CLI Integration**: Direct integration with Tailscale CLI commands\r\n- **API Integration**: REST API support for advanced operations\r\n\r\n## 📚 Documentation\r\n\r\nThis project includes comprehensive documentation organized by domain:\r\n\r\n- **[🔧 CI/CD Workflows](docs/workflows.md)** - GitHub Actions, testing pipelines, and release automation\r\n- **[🧪 Testing Strategy](src/__test__/README.md)** - Unit tests, integration tests, and testing best practices\r\n- **[🐳 Docker Guide](docs/docker.md)** - Container usage, development workflows, and deployment strategies\r\n\r\n## Quick Start\r\n\r\n### Option 1: NPX (Recommended)\r\n\r\nRun directly without installation:\r\n\r\n```bash\r\n# Explicit package syntax (most reliable)\r\nnpx --package=@hexsleeves/tailscale-mcp-server tailscale-mcp-server\r\n\r\n# Or install globally\r\nnpm install -g @hexsleeves/tailscale-mcp-server\r\ntailscale-mcp-server\r\n```\r\n\r\n### Option 2: Docker\r\n\r\n```bash\r\n# GitHub Container Registry (recommended)\r\ndocker run -d \\\r\n  --name tailscale-mcp \\\r\n  -e TAILSCALE_API_KEY=your_api_key \\\r\n  -e TAILSCALE_TAILNET=your_tailnet \\\r\n  ghcr.io/hexsleeves/tailscale-mcp-server:latest\r\n\r\n# Or use Docker Compose\r\ndocker-compose up -d\r\n```\r\n\r\n> **📖 For detailed Docker usage, development workflows, and deployment strategies, see the [Docker Guide](docs/docker.md)**\r\n\r\n## Configuration\r\n\r\n### Claude Desktop\r\n\r\nAdd to your Claude Desktop configuration (`~/.claude/claude_desktop_config.json`):\r\n\r\n#### Using NPX (Recommended)\r\n\r\n```json\r\n{\r\n  \"mcpServers\": {\r\n    \"tailscale\": {\r\n      \"command\": \"npx\",\r\n      \"args\": [\r\n        \"--package=@hexsleeves/tailscale-mcp-server\",\r\n        \"tailscale-mcp-server\"\r\n      ],\r\n      \"env\": {\r\n        \"TAILSCALE_API_KEY\": \"your-api-key-here\",\r\n        \"TAILSCALE_TAILNET\": \"your-tailnet-name\"\r\n      }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n#### Using Docker\r\n\r\n```json\r\n{\r\n  \"mcpServers\": {\r\n    \"tailscale\": {\r\n      \"command\": \"docker\",\r\n      \"args\": [\r\n        \"run\",\r\n        \"--rm\",\r\n        \"-i\",\r\n        \"-e\",\r\n        \"TAILSCALE_API_KEY=your-api-key\",\r\n        \"-e\",\r\n        \"TAILSCALE_TAILNET=your-tailnet\",\r\n        \"ghcr.io/hexsleeves/tailscale-mcp-server:latest\"\r\n      ]\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n### Environment Variables\r\n\r\n| Variable                 | Description            | Required | Default                     |\r\n| ------------------------ | ---------------------- | -------- | --------------------------- |\r\n| `TAILSCALE_API_KEY`      | Tailscale API key      | Yes\\*    | -                           |\r\n| `TAILSCALE_TAILNET`      | Tailscale tailnet name | Yes\\*    | -                           |\r\n| `TAILSCALE_API_BASE_URL` | API base URL           | No       | `https://api.tailscale.com` |\r\n| `LOG_LEVEL`              | Logging level (0-3)    | No       | `1` (INFO)                  |\r\n| `MCP_SERVER_LOG_FILE`    | Server log file path   | No       | -                           |\r\n\r\n\\*Required for API-based operations. CLI operations work without API credentials.\r\n\r\n## Available Tools\r\n\r\n### Device Management\r\n\r\n- `list_devices` - List all devices in the Tailscale network\r\n- `device_action` - Perform actions on specific devices (authorize, deauthorize, delete, expire-key)\r\n- `manage_routes` - Enable or disable routes for devices\r\n\r\n### Network Operations\r\n\r\n- `get_network_status` - Get current network status from Tailscale CLI\r\n- `connect_network` - Connect to the Tailscale network\r\n- `disconnect_network` - Disconnect from the Tailscale network\r\n- `ping_peer` - Ping a peer device\r\n\r\n### System Information\r\n\r\n- `get_version` - Get Tailscale version information\r\n- `get_tailnet_info` - Get detailed network information\r\n\r\n## Development\r\n\r\n### Quick Setup\r\n\r\n```bash\r\n# Clone and setup\r\ngit clone https://github.com/HexSleeves/tailscale-mcp-server.git\r\ncd tailscale-mcp-server\r\n\r\n# Install Bun (recommended) or use npm\r\ncurl -fsSL https://bun.sh/install | bash\r\nbun install  # or: npm install\r\n\r\n# Setup environment\r\ncp .env.example .env\r\n# Edit .env with your Tailscale credentials\r\n\r\n# Build and run\r\nbun run build  # or: npm run build\r\nbun start      # or: npm start\r\n```\r\n\r\n### Development Commands\r\n\r\n```bash\r\n# Development workflow (Bun recommended)\r\nbun run dev:direct        # Fast development with tsx\r\nbun run dev:watch         # Auto-rebuild on changes\r\nbun run build:watch       # Build with file watching\r\n\r\n# Development workflow (NPM fallback)\r\nnpm run dev:direct\r\nnpm run dev:watch\r\nnpm run build:watch\r\n\r\n# Testing (Bun recommended)\r\nbun test                  # All tests\r\nbun run test:unit         # Unit tests only\r\nbun run test:integration  # Integration tests (requires Tailscale CLI)\r\nbun run test:watch        # Watch mode\r\n\r\n# Testing (NPM fallback)\r\nnpm test\r\nnpm run test:unit\r\nnpm run test:integration\r\nnpm run test:watch\r\n\r\n# Quality assurance (Bun recommended)\r\nbun run qa                # Quick QA (typecheck + unit tests + lint)\r\nbun run qa:full           # Full QA (all tests + checks)\r\nbun run typecheck         # TypeScript validation\r\n\r\n# Quality assurance (NPM fallback)\r\nnpm run qa\r\nnpm run qa:full\r\nnpm run typecheck\r\n\r\n# Tools (Bun recommended)\r\nbun run inspector         # Test with MCP Inspector\r\n\r\n# Tools (NPM fallback)\r\nnpm run inspector\r\n```\r\n\r\n### Local Claude Desktop Configuration\r\n\r\n```json\r\n{\r\n  \"mcpServers\": {\r\n    \"tailscale-dev\": {\r\n      \"command\": \"node\",\r\n      \"args\": [\"/path/to/your/tailscale-mcp-server/dist/index.js\"],\r\n      \"env\": {\r\n        \"TAILSCALE_API_KEY\": \"your-api-key-here\",\r\n        \"TAILSCALE_TAILNET\": \"your-tailnet-name\",\r\n        \"LOG_LEVEL\": \"0\"\r\n      }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n> **📖 For comprehensive development guides, testing strategies, and CI/CD information:**\r\n>\r\n> - **[Testing Documentation](src/__test__/README.md)** - Unit tests, integration tests, coverage\r\n> - **[Docker Development](docs/docker.md)** - Container-based development workflows\r\n> - **[CI/CD Workflows](docs/workflows.md)** - GitHub Actions, automation, releases\r\n\r\n### Project Structure\r\n\r\n```bash\r\nsrc/\r\n├── server.ts              # Main server implementation\r\n├── tools/                 # Modular tool definitions\r\n├── tailscale/             # Tailscale integrations\r\n├── types.ts               # Type definitions\r\n├── logger.ts              # Logging utilities\r\n└── index.ts               # Entry point\r\n```\r\n\r\n### Adding New Tools\r\n\r\nCreate a tool module in `src/tools/` and register it in `src/server.ts`. See existing tools for examples of the modular architecture using Zod schemas and TypeScript.\r\n\r\n### Debugging\r\n\r\n```bash\r\n# Enable debug logging\r\nexport LOG_LEVEL=0\r\nexport MCP_SERVER_LOG_FILE=debug-{timestamp}.log\r\n\r\n# View logs\r\ntail -f logs/debug-*.log\r\n```\r\n\r\n## API Reference\r\n\r\n### Tool Categories\r\n\r\n#### Device Tools\r\n\r\n- Device listing and filtering\r\n- Device authorization management\r\n- Route management per device\r\n\r\n#### Network Tools\r\n\r\n- Network status monitoring\r\n- Connection management\r\n- Peer connectivity testing\r\n\r\n#### Security Tools\r\n\r\n- ACL management\r\n- Device tagging\r\n- Network lock operations\r\n\r\n## Contributing\r\n\r\n1. Fork the repository\r\n2. Create a feature branch: `git checkout -b feature/amazing-feature`\r\n3. Make your changes and add tests\r\n4. Run quality checks: `bun run qa:full` (or `npm run qa:full`)\r\n5. Commit your changes: `git commit -m 'Add amazing feature'`\r\n6. Push to the branch: `git push origin feature/amazing-feature`\r\n7. Open a Pull Request\r\n\r\n### Development Guidelines\r\n\r\n- Use TypeScript for all new code\r\n- Add Zod schemas for input validation\r\n- Include tests for new tools (see [Testing Guide](src/__test__/README.md))\r\n- Follow the existing modular architecture\r\n- Update documentation for new features\r\n\r\n### Resources for Contributors\r\n\r\n- **[Testing Strategy](src/__test__/README.md)** - How to write and run tests\r\n- **[CI/CD Workflows](docs/workflows.md)** - Understanding the automation pipeline\r\n- **[Docker Development](docs/docker.md)** - Container-based development workflows\r\n\r\n## License\r\n\r\nMIT License - see [LICENSE](LICENSE) file for details.\r\n\r\n## Support\r\n\r\n- [Issues](https://github.com/your-repo/issues) - Bug reports and feature requests\r\n- [Discussions](https://github.com/your-repo/discussions) - Questions and community support\r\n- [MCP Documentation](https://modelcontextprotocol.io) - Learn more about MCP\r\n\r\n## Changelog\r\n\r\nSee [CHANGELOG.md](CHANGELOG.md) for version history and updates.\r\n","readmeFilename":"README.md"}