touchdesigner-mcp-server 0.4.0-alpha.0 → 0.4.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/README.ja.md +4 -4
  2. package/README.md +4 -3
  3. package/dist/cli.js +0 -0
  4. package/dist/gen/endpoints/TouchDesignerAPI.js +1 -1
  5. package/dist/gen/mcp/touchDesignerAPI.zod.js +1 -1
  6. package/dist/index.js +0 -0
  7. package/dist/server/touchDesignerServer.js +1 -1
  8. package/package.json +14 -12
  9. package/td/genHandlers.js +0 -47
  10. package/td/import_modules.py +0 -52
  11. package/td/mcp_webserver_base.tox +0 -0
  12. package/td/modules/mcp/controllers/__init__.py +0 -9
  13. package/td/modules/mcp/controllers/api_controller.py +0 -637
  14. package/td/modules/mcp/controllers/generated_handlers.py +0 -365
  15. package/td/modules/mcp/controllers/openapi_router.py +0 -265
  16. package/td/modules/mcp/services/__init__.py +0 -8
  17. package/td/modules/mcp/services/api_service.py +0 -555
  18. package/td/modules/mcp_webserver_script.py +0 -134
  19. package/td/modules/td_server/.dockerignore +0 -72
  20. package/td/modules/td_server/.openapi-generator/FILES +0 -55
  21. package/td/modules/td_server/.openapi-generator/VERSION +0 -1
  22. package/td/modules/td_server/.openapi-generator-ignore +0 -23
  23. package/td/modules/td_server/.travis.yml +0 -14
  24. package/td/modules/td_server/Dockerfile +0 -16
  25. package/td/modules/td_server/README.md +0 -49
  26. package/td/modules/td_server/git_push.sh +0 -57
  27. package/td/modules/td_server/openapi_server/__init__.py +0 -0
  28. package/td/modules/td_server/openapi_server/__main__.py +0 -19
  29. package/td/modules/td_server/openapi_server/controllers/__init__.py +0 -0
  30. package/td/modules/td_server/openapi_server/controllers/default_controller.py +0 -162
  31. package/td/modules/td_server/openapi_server/controllers/security_controller.py +0 -2
  32. package/td/modules/td_server/openapi_server/encoder.py +0 -19
  33. package/td/modules/td_server/openapi_server/models/__init__.py +0 -33
  34. package/td/modules/td_server/openapi_server/models/base_model.py +0 -68
  35. package/td/modules/td_server/openapi_server/models/create_node200_response.py +0 -125
  36. package/td/modules/td_server/openapi_server/models/create_node200_response_data.py +0 -63
  37. package/td/modules/td_server/openapi_server/models/create_node_request.py +0 -123
  38. package/td/modules/td_server/openapi_server/models/delete_node200_response.py +0 -125
  39. package/td/modules/td_server/openapi_server/models/delete_node200_response_data.py +0 -91
  40. package/td/modules/td_server/openapi_server/models/exec_node_method200_response.py +0 -125
  41. package/td/modules/td_server/openapi_server/models/exec_node_method200_response_data.py +0 -65
  42. package/td/modules/td_server/openapi_server/models/exec_node_method_request.py +0 -153
  43. package/td/modules/td_server/openapi_server/models/exec_node_method_request_args_inner.py +0 -34
  44. package/td/modules/td_server/openapi_server/models/exec_python_script200_response.py +0 -125
  45. package/td/modules/td_server/openapi_server/models/exec_python_script200_response_data.py +0 -65
  46. package/td/modules/td_server/openapi_server/models/exec_python_script200_response_data_result.py +0 -63
  47. package/td/modules/td_server/openapi_server/models/exec_python_script_request.py +0 -65
  48. package/td/modules/td_server/openapi_server/models/get_node_detail200_response.py +0 -125
  49. package/td/modules/td_server/openapi_server/models/get_nodes200_response.py +0 -125
  50. package/td/modules/td_server/openapi_server/models/get_nodes200_response_data.py +0 -65
  51. package/td/modules/td_server/openapi_server/models/get_td_info200_response.py +0 -125
  52. package/td/modules/td_server/openapi_server/models/get_td_info200_response_data.py +0 -155
  53. package/td/modules/td_server/openapi_server/models/get_td_python_class_details200_response.py +0 -125
  54. package/td/modules/td_server/openapi_server/models/get_td_python_classes200_response.py +0 -125
  55. package/td/modules/td_server/openapi_server/models/get_td_python_classes200_response_data.py +0 -63
  56. package/td/modules/td_server/openapi_server/models/td_node.py +0 -175
  57. package/td/modules/td_server/openapi_server/models/td_node_family_type.py +0 -44
  58. package/td/modules/td_server/openapi_server/models/td_python_class_details.py +0 -191
  59. package/td/modules/td_server/openapi_server/models/td_python_class_info.py +0 -127
  60. package/td/modules/td_server/openapi_server/models/td_python_method_info.py +0 -121
  61. package/td/modules/td_server/openapi_server/models/td_python_property_info.py +0 -123
  62. package/td/modules/td_server/openapi_server/models/update_node200_response.py +0 -125
  63. package/td/modules/td_server/openapi_server/models/update_node200_response_data.py +0 -149
  64. package/td/modules/td_server/openapi_server/models/update_node200_response_data_failed_inner.py +0 -91
  65. package/td/modules/td_server/openapi_server/models/update_node_request.py +0 -93
  66. package/td/modules/td_server/openapi_server/openapi/openapi.yaml +0 -975
  67. package/td/modules/td_server/openapi_server/test/__init__.py +0 -16
  68. package/td/modules/td_server/openapi_server/test/test_default_controller.py +0 -201
  69. package/td/modules/td_server/openapi_server/typing_utils.py +0 -30
  70. package/td/modules/td_server/openapi_server/util.py +0 -147
  71. package/td/modules/td_server/requirements.txt +0 -13
  72. package/td/modules/td_server/setup.py +0 -37
  73. package/td/modules/td_server/test-requirements.txt +0 -4
  74. package/td/modules/td_server/tox.ini +0 -11
  75. package/td/modules/utils/config.py +0 -7
  76. package/td/modules/utils/error_handling.py +0 -104
  77. package/td/modules/utils/logging.py +0 -23
  78. package/td/modules/utils/result.py +0 -40
  79. package/td/modules/utils/serialization.py +0 -57
  80. package/td/modules/utils/types.py +0 -33
  81. package/td/modules/utils/utils_logging.py +0 -60
  82. package/td/templates/mcp/api_controller_handlers.mustache +0 -63
package/README.ja.md CHANGED
@@ -24,11 +24,10 @@ TouchDesigner MCPは、AIモデルとTouchDesigner WebServer DAT 間のブリッ
24
24
 
25
25
  npxを使用する場合、TouchDesignerコンポーネントを別途ダウンロードする必要があります:
26
26
  1. [リリースページ](https://github.com/8beeeaaat/touchdesigner-mcp/releases)から `touchdesigner-mcp-td.zip` をダウンロード
27
- 2. zipファイルを展開して `td` ディレクトリを取得
28
- 3. 展開したファイルから `mcp_webserver_base.tox` を操作したいTouchDesignerプロジェクト直下にimportします。
27
+ 2. zipファイルを展開したフォルダから `mcp_webserver_base.tox` を操作したいTouchDesignerプロジェクト直下にimportします。
29
28
  例: `/project1/mcp_webserver_base` となるように配置
30
29
 
31
- **⚠️ 重要:** `td` ディレクトリの構造は展開した状態を正確に保持する必要があります。`mcp_webserver_base.tox` コンポーネントは `modules/` ディレクトリやその他のファイルへの相対パスを参照しています。展開した `td` ディレクトリ内のファイルを移動したり再編成したりしないでください。
30
+ **⚠️ 重要:** ディレクトリの構造は展開した状態を正確に保持する必要があります。`mcp_webserver_base.tox` コンポーネントは `modules/` ディレクトリやその他のファイルへの相対パスを参照しています。展開したディレクトリ内のファイルを移動したり再編成したりしないでください。
32
31
 
33
32
  ##### 2. AIエージェントの設定:
34
33
 
@@ -39,7 +38,8 @@ npxを使用する場合、TouchDesignerコンポーネントを別途ダウン
39
38
  "touchdesigner": {
40
39
  "command": "npx",
41
40
  "args": [
42
- "touchdesigner-mcp-server",
41
+ "-y",
42
+ "touchdesigner-mcp-server@prerelease",
43
43
  "--stdio"
44
44
  ]
45
45
  }
package/README.md CHANGED
@@ -24,11 +24,11 @@ TouchDesigner MCP acts as a bridge between AI models and the TouchDesigner WebSe
24
24
 
25
25
  Since you're using npx, you'll need to download the TouchDesigner components separately:
26
26
  1. Download `touchdesigner-mcp-td.zip` from the [releases page](https://github.com/8beeeaaat/touchdesigner-mcp/releases)
27
- 2. Extract the zip file to get the `td` directory
27
+ 2. Extract the zip file to get the directory
28
28
  3. Import `mcp_webserver_base.tox` from the extracted files directly under the TouchDesigner project you want to control.
29
29
  Example: Place it as `/project1/mcp_webserver_base`
30
30
 
31
- **⚠️ Important:** The `td` directory structure must be preserved exactly as extracted. The `mcp_webserver_base.tox` component references relative paths to the `modules/` directory and other files. Do not move or reorganize files within the extracted `td` directory.
31
+ **⚠️ Important:** The directory structure must be preserved exactly as extracted. The `mcp_webserver_base.tox` component references relative paths to the `modules/` directory and other files. Do not move or reorganize files within the extracted directory.
32
32
 
33
33
  #### 2. Configure your AI agent:
34
34
 
@@ -39,7 +39,8 @@ Example: Place it as `/project1/mcp_webserver_base`
39
39
  "touchdesigner": {
40
40
  "command": "npx",
41
41
  "args": [
42
- "touchdesigner-mcp-server",
42
+ "-y",
43
+ "touchdesigner-mcp-server@prerelease",
43
44
  "--stdio"
44
45
  ]
45
46
  }
package/dist/cli.js CHANGED
File without changes
@@ -3,7 +3,7 @@
3
3
  * Do not edit manually.
4
4
  * TouchDesigner API
5
5
  * OpenAPI schema for generating TouchDesigner API client code
6
- * OpenAPI spec version: 0.4.0-alpha.0
6
+ * OpenAPI spec version: 0.4.0-alpha.2
7
7
  */
8
8
  import { customInstance } from '../../api/customInstance.js';
9
9
  // eslint-disable-next-line @typescript-eslint/no-redeclare
@@ -3,7 +3,7 @@
3
3
  * Do not edit manually.
4
4
  * TouchDesigner API
5
5
  * OpenAPI schema for generating TouchDesigner API client code
6
- * OpenAPI spec version: 0.4.0-alpha.0
6
+ * OpenAPI spec version: 0.4.0-alpha.2
7
7
  */
8
8
  import { z as zod } from 'zod';
9
9
  /**
package/dist/index.js CHANGED
File without changes
@@ -18,7 +18,7 @@ export class TouchDesignerServer {
18
18
  constructor() {
19
19
  this.server = new McpServer({
20
20
  name: "TouchDesigner",
21
- version: "0.4.0-alpha.0",
21
+ version: "0.4.0-alpha.2",
22
22
  }, {
23
23
  capabilities: {
24
24
  prompts: {},
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "touchdesigner-mcp-server",
3
- "version": "0.4.0-alpha.0",
3
+ "version": "0.4.0-alpha.2",
4
4
  "description": "MCP server for TouchDesigner",
5
5
  "repository": {
6
6
  "type": "git",
@@ -16,6 +16,11 @@
16
16
  "url": "https://github.com/8beeeaaat/touchdesigner-mcp/issues"
17
17
  },
18
18
  "homepage": "https://github.com/8beeeaaat/touchdesigner-mcp#readme",
19
+ "main": "dist/index.js",
20
+ "types": "dist/index.d.ts",
21
+ "bin": {
22
+ "touchdesigner-mcp-server": "dist/cli.js"
23
+ },
19
24
  "dependencies": {
20
25
  "@modelcontextprotocol/sdk": "^1.11.1",
21
26
  "@mozilla/readability": "^0.6.0",
@@ -36,32 +41,31 @@
36
41
  "mustache": "^4.2.0",
37
42
  "npm-run-all": "^4.1.5",
38
43
  "orval": "^7.9.0",
44
+ "shx": "^0.4.0",
39
45
  "typescript": "^5.8.3",
40
46
  "vitest": "^3.1.3",
41
47
  "yaml": "^2.7.1"
42
48
  },
43
49
  "type": "module",
44
- "main": "dist/index.js",
45
- "types": "dist/index.d.ts",
46
- "bin": {
47
- "touchdesigner-mcp-server": "dist/cli.js",
48
- "touchdesigner-mcp": "dist/cli.js"
49
- },
50
50
  "exports": {
51
51
  ".": {
52
52
  "import": "./dist/index.js",
53
53
  "types": "./dist/index.d.ts"
54
+ },
55
+ "./cli": {
56
+ "import": "./dist/cli.js",
57
+ "types": "./dist/cli.d.ts"
54
58
  }
55
59
  },
56
60
  "scripts": {
57
61
  "build": "run-s build:*",
58
62
  "build:gen": "npm run gen",
59
- "build:dist": "tsc",
63
+ "build:dist": "tsc && shx chmod +x dist/*.js",
60
64
  "lint": "run-p lint:*",
61
65
  "lint:biome": "biome check",
62
66
  "lint:tsc": "tsc --noEmit",
63
67
  "format": "biome check --fix",
64
- "dev": "npx @modelcontextprotocol/inspector node dist/index.js --stdio",
68
+ "dev": "npx @modelcontextprotocol/inspector node dist/cli.js --stdio",
65
69
  "test": "run-p test:*",
66
70
  "test:integration": "vitest run ./tests/integration",
67
71
  "test:unit": "vitest run ./tests/unit",
@@ -72,9 +76,7 @@
72
76
  "gen:mcp": "orval --config ./orval.config.ts"
73
77
  },
74
78
  "files": [
75
- "dist/**/*",
76
- "td/**/*",
77
- "README*"
79
+ "dist/**/*"
78
80
  ],
79
81
  "msw": {
80
82
  "workerDirectory": [
package/td/genHandlers.js DELETED
@@ -1,47 +0,0 @@
1
- import path from "node:path";
2
- import fs from "fs-extra";
3
- import mustache from "mustache";
4
- import yaml from "yaml";
5
-
6
- const openapiPath = path.resolve(
7
- "td/modules/td_server/openapi_server/openapi/openapi.yaml",
8
- );
9
- const templatePath = path.resolve(
10
- "td/templates/mcp/api_controller_handlers.mustache",
11
- );
12
- const outputPath = path.resolve(
13
- "td/modules/mcp/controllers/generated_handlers.py",
14
- );
15
-
16
- async function generateHandlers() {
17
- try {
18
- const yamlContent = await fs.readFile(openapiPath, "utf-8");
19
- const openapiDoc = yaml.parse(yamlContent);
20
- const operations = [];
21
-
22
- if (openapiDoc.paths) {
23
- for (const pathKey of Object.keys(openapiDoc.paths)) {
24
- const methods = openapiDoc.paths[pathKey];
25
- for (const methodKey of Object.keys(methods)) {
26
- const operation = methods[methodKey];
27
- if (operation.operationId) {
28
- operations.push({ operationId: operation.operationId });
29
- }
30
- }
31
- }
32
- }
33
- const template = await fs.readFile(templatePath, "utf-8");
34
- const rendered = mustache.render(template, {
35
- operations,
36
- });
37
-
38
- await fs.outputFile(outputPath, rendered);
39
-
40
- console.log("✅ generated_handlers.py created successfully!");
41
- } catch (error) {
42
- console.error("❌ Error generating handlers:", error);
43
- process.exit(1);
44
- }
45
- }
46
-
47
- generateHandlers();
@@ -1,52 +0,0 @@
1
- import os
2
- import sys
3
-
4
- import yaml
5
-
6
-
7
- def setup():
8
- externaltox = parent().par.externaltox.eval()
9
- tox_dir_path = os.path.dirname(externaltox)
10
- modules_path = os.path.join(tox_dir_path, "modules")
11
-
12
- if modules_path not in sys.path:
13
- sys.path.append(modules_path)
14
-
15
- td_server_path = os.path.join(modules_path, "td_server")
16
- if td_server_path not in sys.path:
17
- sys.path.append(td_server_path)
18
-
19
- schema_path = find_openapi_schema_path(modules_path)
20
- try:
21
- if schema_path is None:
22
- raise FileNotFoundError(
23
- "OpenAPI schema file not found in any known location."
24
- )
25
- with open(schema_path, "r") as f:
26
- openapi_schema = yaml.safe_load(f)
27
- except Exception as e:
28
- openapi_schema = {}
29
- print("Failed to load OpenAPI schema:", e)
30
-
31
- import mcp
32
-
33
- mcp.openapi_schema = openapi_schema
34
-
35
-
36
- def find_openapi_schema_path(modules_path):
37
- candidates = [
38
- os.path.join(
39
- modules_path, "td_server", "openapi_server", "openapi", "openapi.yaml"
40
- ),
41
- os.path.join(
42
- os.path.dirname(os.path.dirname(modules_path)),
43
- "td_server",
44
- "openapi_server",
45
- "openapi",
46
- "openapi.yaml",
47
- ),
48
- ]
49
- for path in candidates:
50
- if os.path.exists(path):
51
- return path
52
- return None
Binary file
@@ -1,9 +0,0 @@
1
- """
2
- MCP Controller package initialization
3
- Exports controller classes for dependency injection
4
- """
5
-
6
- from mcp.controllers.api_controller import APIControllerOpenAPI, api_controller_openapi
7
- from mcp.controllers.openapi_router import OpenAPIRouter
8
-
9
- __all__ = ["APIControllerOpenAPI", "api_controller_openapi", "OpenAPIRouter"]