{
  "name": "@dpantani/tdmcp",
  "mcpName": "io.github.Pantani/tdmcp",
  "version": "0.12.0",
  "description": "tdmcp — the TouchDesigner MCP server. Build real TouchDesigner visual systems from plain language with Claude, Cursor, or Codex (Model Context Protocol).",
  "type": "module",
  "license": "MIT",
  "homepage": "https://pantani.github.io/tdmcp/",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/Pantani/tdmcp.git"
  },
  "publishConfig": {
    "access": "public"
  },
  "engines": {
    "node": ">=20.19.0"
  },
  "bin": {
    "tdmcp": "dist/index.js",
    "tdmcp-agent": "dist/cli/agent.js"
  },
  "main": "dist/index.js",
  "types": "dist/index.d.ts",
  "exports": {
    ".": {
      "types": "./dist/index.d.ts",
      "import": "./dist/index.js"
    }
  },
  "files": [
    "dist",
    "scripts/fetch-shader-park-td.mjs",
    "scripts/tdmcp-lops.mjs",
    "safeskill.manifest.json",
    "training/showintent/Modelfile",
    "recipes",
    "docs/guide/prompt-cookbook.md",
    "docs/pt/guide/prompt-cookbook.md",
    "td/bootstrap.py",
    "td/modules",
    "td/README.md",
    "td/startup.py",
    "td/templates",
    "README.md",
    "LICENSE"
  ],
  "scripts": {
    "setup": "node scripts/setup.mjs",
    "build": "tsc && tsup && node scripts/copy-assets.mjs",
    "dev": "tsx src/index.ts",
    "start": "node dist/index.js",
    "lint": "biome check .",
    "lint:fix": "biome check --write .",
    "format": "biome format --write .",
    "test": "node scripts/run-vitest.mjs run",
    "test:coverage": "node scripts/run-vitest.mjs run --coverage",
    "test:watch": "node scripts/run-vitest.mjs",
    "coverage:harness": "node scripts/coverage-harness.mjs",
    "test:bridge": "python3 -m unittest discover -s td/tests",
    "ai-party:llm-eval": "tsx training/showintent/src/cli.ts eval",
    "ai-party:llm-baseline": "tsx training/showintent/src/cli.ts baseline",
    "ai-party:llm-generate-data": "tsx training/showintent/src/cli.ts generate-data",
    "ai-party:llm-import-curated": "tsx training/showintent/src/cli.ts import-curated",
    "lint:py": "uvx ruff check td",
    "lint:py:fix": "uvx ruff check td --fix-only",
    "complexity:py": "uvx ruff check td --select C901",
    "complexity:js": "npm exec --offline -- eslint --no-error-on-unmatched-pattern \"src/**/*.{js,mjs,cjs}\" \"scripts/**/*.{js,mjs,cjs}\" \"*.{js,mjs,cjs}\"",
    "complexity:cognitive": "npm run complexity:cognitive:js && npm run complexity:cognitive:py",
    "complexity:cognitive:js": "node scripts/check-js-cognitive-complexity.mjs",
    "complexity:cognitive:js:update": "node scripts/check-js-cognitive-complexity.mjs --update-baseline",
    "complexity:cognitive:py": "node scripts/check-python-cognitive-complexity.mjs",
    "complexity:cognitive:py:update": "node scripts/check-python-cognitive-complexity.mjs --update-baseline",
    "deps:check": "depcruise --config .dependency-cruiser.cjs src",
    "typecheck": "tsc --noEmit",
    "import:bottobot": "tsx scripts/import-bottobot-data.ts",
    "validate:recipes": "tsx scripts/validate-recipes.ts",
    "lint:recipes": "tsx scripts/lint-recipes.ts",
    "agent:catalog:gen": "tsx scripts/gen-agent-command-catalog.ts && biome check --write src/agentCommandCatalog.ts",
    "smoke": "tsx scripts/smoke.ts",
    "contract:gen": "tsx scripts/gen-skill-contract.ts",
    "smoke:live": "tsx scripts/smoke-live.ts",
    "shader-park:tox": "node scripts/fetch-shader-park-td.mjs",
    "smoke:packages": "tsx scripts/smoke-packages.ts",
    "build:mcpb": "node scripts/build-dxt.mjs",
    "build:bridge-tox": "tsx scripts/build-bridge-tox.ts",
    "docs:gen": "tsx scripts/gen-tool-docs.ts",
    "docs:clips": "node scripts/generate-doc-example-clips.mjs",
    "docs:dev": "npm run docs:gen && vitepress dev docs",
    "docs:build": "npm run docs:gen && vitepress build docs",
    "docs:preview": "vitepress preview docs",
    "ai-party:dev": "tsx src/automation/aiPartyLive/cli.ts dev",
    "ai-party:dry": "tsx src/automation/aiPartyLive/cli.ts dry",
    "ai-party:td-build": "tsx src/automation/aiPartyLive/cli.ts td-build",
    "ai-party:test": "node scripts/run-vitest.mjs run tests/unit/aiPartyLive.test.ts tests/unit/showDirector.test.ts tests/unit/aiPartyGateway.test.ts tests/unit/aiPartyPoc.test.ts",
    "ai-party:telegram": "tsx src/automation/aiPartyLive/cli.ts telegram",
    "version": "node scripts/sync-manifest-version.mjs",
    "prepack": "node scripts/clean-pycache.mjs",
    "prepublishOnly": "npm run build && npm test"
  },
  "allowScripts": {
    "esbuild": true,
    "fsevents": true,
    "msw": true
  },
  "keywords": [
    "touchdesigner",
    "touchdesigner-mcp",
    "mcp",
    "mcp-server",
    "model-context-protocol",
    "claude",
    "cursor",
    "codex",
    "ai",
    "visual",
    "creative-coding",
    "generative-art",
    "vj",
    "glsl",
    "audio-reactive",
    "derivative"
  ],
  "dependencies": {
    "@modelcontextprotocol/sdk": "^1.29.0",
    "yaml": "^2.9.0",
    "zod": "^4.4.3"
  },
  "peerDependencies": {
    "@lancedb/lancedb": "^0.30.0",
    "shader-park-core": "^0.2.8"
  },
  "peerDependenciesMeta": {
    "@lancedb/lancedb": {
      "optional": true
    },
    "shader-park-core": {
      "optional": true
    }
  },
  "devDependencies": {
    "@biomejs/biome": "^2.4.15",
    "@bottobot/td-mcp": "^2.8.0",
    "@types/node": "^25.9.1",
    "@vitest/coverage-v8": "^4.1.9",
    "chokidar": "^4.0.3",
    "dependency-cruiser": "^17.4.3",
    "eslint": "^9.39.4",
    "eslint-plugin-sonarjs": "^4.1.0",
    "msw": "^2.12.14",
    "search-insights": "^2.17.3",
    "tsup": "^8.5.1",
    "tsx": "^4.22.3",
    "typescript": "^6.0.3",
    "typescript-eslint": "^8.62.0",
    "vitepress": "^1.6.4",
    "vitest": "^4.1.9"
  },
  "overrides": {
    "@bottobot/td-mcp": {
      "cheerio": "1.0.0-rc.12"
    },
    "vitepress": {
      "vite": "6.4.3"
    },
    "vitest": {
      "vite": "6.4.3"
    },
    "@vitest/mocker": {
      "vite": "6.4.3"
    },
    "vite-node": {
      "vite": "6.4.3"
    },
    "tsup": {
      "esbuild": "0.27.2"
    }
  }
}
