{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_28qhfv4j769p","handle":"dcc-mcp-debug","url":"https://wellknown.network/agents/dcc-mcp-debug","links":{"self":"https://wellknown.network/agents/dcc-mcp-debug/record.json","html":"https://wellknown.network/agents/dcc-mcp-debug","markdown":"https://wellknown.network/agents/dcc-mcp-debug/record.md","api":"https://wellknown.network/api/v1/agents/dcc-mcp-debug","status":"https://wellknown.network/api/v1/agents/dcc-mcp-debug/status","claim":"https://wellknown.network/agents/dcc-mcp-debug/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/dcc-mcp-debug/claim.json","badge":"https://wellknown.network/agents/dcc-mcp-debug/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/dcc-mcp-debug/history","tools":"https://wellknown.network/api/v1/agents/dcc-mcp-debug/tools"},"ard":{"identifier":"urn:air::server:dcc-mcp-debug","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"dcc-mcp-debug","summary":"MCP server that drives and debugs a locally running MotionBuilder / 3ds Max through its commandPort (TCP port == PID) and debugpy.","description":"# DCC 运行调试手册 (DCC-MCP-Debug)\n\n> 这套方法是**用户自己的工具/工作流**，不是 Autodesk 官方文档记录的功能——\n> 不要把它当成\"MotionBuilder/3ds Max 内置能力\"介绍给别人，也不要在其它机器上假设它一定存在\n> （得先用\"安装DCC连接器\"流程装好）。\n\n## 背景\n\nDCC 软件（MotionBuilder、3ds Max、Maya）通常自带一个内嵌 Python 解释器，版本往往和系统里独立安装的\nPython 不一致。如果某些依赖包（比如某个 `.pyd` 编译扩展）是专门编译给 DCC 内嵌 Python 版本的，\n在系统独立 Python 下 `import` 会直接失败（`ModuleNotFoundError` 或 ABI 不匹配）。这种情况下，\n唯一能\"跑起来看效果\"的办法就是让 DCC 自己执行代码——这份手册记录的就是怎么从外部（比如这个\nagent 所在的 shell）把代码注入到正在运行的 DCC 进程里执行，而不用用户手动去点。\n\n## 原理\n\nDCC 软件装好 commandPort 连接器后，会监听一个本地 TCP 端口，**端口号等于该 DCC 进程自己的\nPID**，收到的原始文本会被当成 Python 代码 `exec()` 执行。具体是哪个插件/怎么装的见下面\n\"安装 DCC 连接器\"。\n\n`exec()` 执行的是一段匿名字符串，不是真实文件，所以像 `os.path.dirname(__file__)` 这种写法本来\n会报 `NameError: name '__file__' is not defined`——用脚本文件路径调用 `exec` 时默认会自动垫一行\n`__file__ = \"<脚本绝对路径>\"` 绕开这个问题（可以用 `--no-file-shim` 关掉；`-c` 内联代码模式没有\n文件路径，不垫这行）。\n\n这个命令端口是个**有状态的 REPL**：一条连接建立时先吐一次 Python 版本 banner，之后同一条连接上\n可以连续发多条命令、各自收响应，不需要每条命令都重新连接。`dcc_service.py` 就是利用这一点，给\n每个注册的 DCC 各维护一条常驻连接，所有 `exec` 请求都在对应连接上排队执行\n（`dcc_bridge.DCCConnection` 内部加了锁）。\n\n## 安装 DCC 连接器（commandPort）\n\n`dcc_mcp_debug/plugin/` 下是 commandPort 插件本身（各 Python 版本的 `.pyd` + 3ds Max 的 `.ms`、\nMotionBuilder 的 `.py`、Maya 的 `.mod` 模块声明 + 模块里的 `userSetup.py`）——这就是上面\"原理\"里说的那个\"黑盒 TCP 执行入口\"的真身。它**随包分发**，`pip install`\n之后就在安装好的包里，不需要另外找文件。\n\n**优先用自动安装**（不用查版本对照表、不用先知道装在哪个盘）：\n- MCP 工具 `dcc_install_connector`（先带 `dry_run: true` 预演一次）\n- 命令行 `dcc-cli mobu install-connector` / `dcc-cli max install-connector` / `dcc-cli maya install-connector`\n\n它会调用目标 DCC 自带的独立解释器（`mobupy.exe` / `3dsmaxpy.exe` / `mayapy.exe`）问出 **Python 版本**和 **sys.path**，\n据此挑对应的 `.pyd`、并选对该装哪一层 site-packages（MotionBuilder 各版本有两层 site-packages 且都在\nsys.path 上，靠\"哪个目录存在\"判断会装错），最后放好启动脚本。目标 DCC 没在运行时用 `--install-dir` /\n`install_dir` 指定安装根目录。装进 `Program Files` **需要管理员权限**，权限不足会明确报错；装完**必须\n重启该 DCC** 才生效。\n\n手工步骤和版本对照表见 [`https://github.com/pitelink/dcc-debug/blob/main/dcc_mcp_debug/plugin/安装说明.md`](https://github.com/pitelink/dcc-debug/blob/main/dcc_mcp_debug/plugin/安装说明.md)，作为兜底\n（自动安装失败、或目标版本不在支…","publisher":null,"homepage":null,"repository":null,"version":"0.1.0","license":null,"protocols":["mcp"],"tags":["mcp","motionbuilder","3dsmax","debugpy","dcc","autodesk"],"pricing":null,"endpoints":[{"url":"pypi:dcc-mcp-debug","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":null,"attribution":{"kind":"pypi","name":"pypi","summary":"pypi","version":"pypi","description":"pypi"}},"derived":{"capabilities":[{"slug":"code.debugging","name":"Debugging","confidence":1,"provenance":"derived"}],"categories":["code"],"language":"en"},"observed":{"status":"unknown","statusReason":"Distributed as a package to run locally; no network endpoint to check.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[],"tools":null,"package":{"name":"dcc-mcp-debug","registry":"pypi","observedAt":"2026-11-03T01:26:07.372Z","publishedAt":"2026-10-19T13:55:37.726597Z","latestVersion":"0.1.0"},"toolSurface":null,"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"dcc-mcp-debug","url":"https://pypi.org/project/dcc-mcp-debug/","firstSeenAt":"2026-10-21T21:26:49.602Z","fetchedAt":"2026-11-03T01:24:54.911Z","normalizedAt":"2026-11-03T01:24:54.911Z"}]},"firstSeenAt":"2026-10-21T21:26:49.602Z","updatedAt":"2026-11-03T01:26:07.372Z"}