touchdesigner-mcp-server 0.4.0-alpha.1 → 0.4.0-alpha.3
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.
- package/README.ja.md +1 -0
- package/README.md +1 -0
- package/dist/cli.js +2 -5
- package/dist/gen/endpoints/TouchDesignerAPI.js +1 -1
- package/dist/gen/mcp/touchDesignerAPI.zod.js +1 -1
- package/dist/index.js +0 -0
- package/dist/server/touchDesignerServer.js +1 -1
- package/package.json +10 -12
- package/td/genHandlers.js +0 -47
- package/td/import_modules.py +0 -52
- package/td/mcp_webserver_base.tox +0 -0
- package/td/modules/mcp/controllers/__init__.py +0 -9
- package/td/modules/mcp/controllers/api_controller.py +0 -637
- package/td/modules/mcp/controllers/generated_handlers.py +0 -365
- package/td/modules/mcp/controllers/openapi_router.py +0 -265
- package/td/modules/mcp/services/__init__.py +0 -8
- package/td/modules/mcp/services/api_service.py +0 -555
- package/td/modules/mcp_webserver_script.py +0 -134
- package/td/modules/td_server/.dockerignore +0 -72
- package/td/modules/td_server/.openapi-generator/FILES +0 -55
- package/td/modules/td_server/.openapi-generator/VERSION +0 -1
- package/td/modules/td_server/.openapi-generator-ignore +0 -23
- package/td/modules/td_server/.travis.yml +0 -14
- package/td/modules/td_server/Dockerfile +0 -16
- package/td/modules/td_server/README.md +0 -49
- package/td/modules/td_server/git_push.sh +0 -57
- package/td/modules/td_server/openapi_server/__init__.py +0 -0
- package/td/modules/td_server/openapi_server/__main__.py +0 -19
- package/td/modules/td_server/openapi_server/controllers/__init__.py +0 -0
- package/td/modules/td_server/openapi_server/controllers/default_controller.py +0 -162
- package/td/modules/td_server/openapi_server/controllers/security_controller.py +0 -2
- package/td/modules/td_server/openapi_server/encoder.py +0 -19
- package/td/modules/td_server/openapi_server/models/__init__.py +0 -33
- package/td/modules/td_server/openapi_server/models/base_model.py +0 -68
- package/td/modules/td_server/openapi_server/models/create_node200_response.py +0 -125
- package/td/modules/td_server/openapi_server/models/create_node200_response_data.py +0 -63
- package/td/modules/td_server/openapi_server/models/create_node_request.py +0 -123
- package/td/modules/td_server/openapi_server/models/delete_node200_response.py +0 -125
- package/td/modules/td_server/openapi_server/models/delete_node200_response_data.py +0 -91
- package/td/modules/td_server/openapi_server/models/exec_node_method200_response.py +0 -125
- package/td/modules/td_server/openapi_server/models/exec_node_method200_response_data.py +0 -65
- package/td/modules/td_server/openapi_server/models/exec_node_method_request.py +0 -153
- package/td/modules/td_server/openapi_server/models/exec_node_method_request_args_inner.py +0 -34
- package/td/modules/td_server/openapi_server/models/exec_python_script200_response.py +0 -125
- package/td/modules/td_server/openapi_server/models/exec_python_script200_response_data.py +0 -65
- package/td/modules/td_server/openapi_server/models/exec_python_script200_response_data_result.py +0 -63
- package/td/modules/td_server/openapi_server/models/exec_python_script_request.py +0 -65
- package/td/modules/td_server/openapi_server/models/get_node_detail200_response.py +0 -125
- package/td/modules/td_server/openapi_server/models/get_nodes200_response.py +0 -125
- package/td/modules/td_server/openapi_server/models/get_nodes200_response_data.py +0 -65
- package/td/modules/td_server/openapi_server/models/get_td_info200_response.py +0 -125
- package/td/modules/td_server/openapi_server/models/get_td_info200_response_data.py +0 -155
- package/td/modules/td_server/openapi_server/models/get_td_python_class_details200_response.py +0 -125
- package/td/modules/td_server/openapi_server/models/get_td_python_classes200_response.py +0 -125
- package/td/modules/td_server/openapi_server/models/get_td_python_classes200_response_data.py +0 -63
- package/td/modules/td_server/openapi_server/models/td_node.py +0 -175
- package/td/modules/td_server/openapi_server/models/td_node_family_type.py +0 -44
- package/td/modules/td_server/openapi_server/models/td_python_class_details.py +0 -191
- package/td/modules/td_server/openapi_server/models/td_python_class_info.py +0 -127
- package/td/modules/td_server/openapi_server/models/td_python_method_info.py +0 -121
- package/td/modules/td_server/openapi_server/models/td_python_property_info.py +0 -123
- package/td/modules/td_server/openapi_server/models/update_node200_response.py +0 -125
- package/td/modules/td_server/openapi_server/models/update_node200_response_data.py +0 -149
- package/td/modules/td_server/openapi_server/models/update_node200_response_data_failed_inner.py +0 -91
- package/td/modules/td_server/openapi_server/models/update_node_request.py +0 -93
- package/td/modules/td_server/openapi_server/openapi/openapi.yaml +0 -975
- package/td/modules/td_server/openapi_server/test/__init__.py +0 -16
- package/td/modules/td_server/openapi_server/test/test_default_controller.py +0 -201
- package/td/modules/td_server/openapi_server/typing_utils.py +0 -30
- package/td/modules/td_server/openapi_server/util.py +0 -147
- package/td/modules/td_server/requirements.txt +0 -13
- package/td/modules/td_server/setup.py +0 -37
- package/td/modules/td_server/test-requirements.txt +0 -4
- package/td/modules/td_server/tox.ini +0 -11
- package/td/modules/utils/config.py +0 -7
- package/td/modules/utils/error_handling.py +0 -104
- package/td/modules/utils/logging.py +0 -23
- package/td/modules/utils/result.py +0 -40
- package/td/modules/utils/serialization.py +0 -57
- package/td/modules/utils/types.py +0 -33
- package/td/modules/utils/utils_logging.py +0 -60
- package/td/templates/mcp/api_controller_handlers.mustache +0 -63
package/README.ja.md
CHANGED
package/README.md
CHANGED
package/dist/cli.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import
|
|
2
|
+
import { resolve } from "node:path";
|
|
3
3
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
4
|
import { config } from "dotenv";
|
|
5
5
|
import { TouchDesignerServer } from "./server/touchDesignerServer.js";
|
|
@@ -29,10 +29,7 @@ export async function startServer() {
|
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
// Start server if this file is executed directly
|
|
32
|
-
|
|
33
|
-
const currentFilePath = path.normalize(fileURLToPath(import.meta.url));
|
|
34
|
-
const argvFilePath = path.normalize(process.argv[1]);
|
|
35
|
-
if (currentFilePath === argvFilePath) {
|
|
32
|
+
if (process.argv[1]) {
|
|
36
33
|
startServer().catch((error) => {
|
|
37
34
|
console.error("Failed to start server:", error);
|
|
38
35
|
process.exit(1);
|
|
@@ -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.
|
|
6
|
+
* OpenAPI spec version: 0.4.0-alpha.3
|
|
7
7
|
*/
|
|
8
8
|
import { customInstance } from '../../api/customInstance.js';
|
|
9
9
|
// eslint-disable-next-line @typescript-eslint/no-redeclare
|
package/dist/index.js
CHANGED
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "touchdesigner-mcp-server",
|
|
3
|
-
"version": "0.4.0-alpha.
|
|
3
|
+
"version": "0.4.0-alpha.3",
|
|
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,17 +41,12 @@
|
|
|
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",
|
|
@@ -60,12 +60,12 @@
|
|
|
60
60
|
"scripts": {
|
|
61
61
|
"build": "run-s build:*",
|
|
62
62
|
"build:gen": "npm run gen",
|
|
63
|
-
"build:dist": "tsc",
|
|
63
|
+
"build:dist": "tsc && shx chmod +x dist/*.js",
|
|
64
64
|
"lint": "run-p lint:*",
|
|
65
65
|
"lint:biome": "biome check",
|
|
66
66
|
"lint:tsc": "tsc --noEmit",
|
|
67
67
|
"format": "biome check --fix",
|
|
68
|
-
"dev": "npx @modelcontextprotocol/inspector node dist/
|
|
68
|
+
"dev": "npx @modelcontextprotocol/inspector node dist/cli.js --stdio",
|
|
69
69
|
"test": "run-p test:*",
|
|
70
70
|
"test:integration": "vitest run ./tests/integration",
|
|
71
71
|
"test:unit": "vitest run ./tests/unit",
|
|
@@ -76,9 +76,7 @@
|
|
|
76
76
|
"gen:mcp": "orval --config ./orval.config.ts"
|
|
77
77
|
},
|
|
78
78
|
"files": [
|
|
79
|
-
"dist/**/*"
|
|
80
|
-
"td/**/*",
|
|
81
|
-
"README*"
|
|
79
|
+
"dist/**/*"
|
|
82
80
|
],
|
|
83
81
|
"msw": {
|
|
84
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();
|
package/td/import_modules.py
DELETED
|
@@ -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"]
|