@hybridlabor-api/aos 4.4.1 → 4.4.2-beta.1
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/.agents/skills/firecrawl/SKILL.md +149 -0
- package/.agents/skills/firecrawl/rules/install.md +82 -0
- package/.agents/skills/firecrawl/rules/security.md +26 -0
- package/.agents/skills/firecrawl-agent/SKILL.md +58 -0
- package/.agents/skills/firecrawl-build/SKILL.md +39 -0
- package/.agents/skills/firecrawl-build-interact/SKILL.md +68 -0
- package/.agents/skills/firecrawl-build-onboarding/SKILL.md +103 -0
- package/.agents/skills/firecrawl-build-onboarding/references/auth-flow.md +39 -0
- package/.agents/skills/firecrawl-build-onboarding/references/project-setup.md +20 -0
- package/.agents/skills/firecrawl-build-onboarding/references/sdk-installation.md +17 -0
- package/.agents/skills/firecrawl-build-scrape/SKILL.md +69 -0
- package/.agents/skills/firecrawl-build-search/SKILL.md +69 -0
- package/.agents/skills/firecrawl-crawl/SKILL.md +59 -0
- package/.agents/skills/firecrawl-download/SKILL.md +70 -0
- package/.agents/skills/firecrawl-interact/SKILL.md +84 -0
- package/.agents/skills/firecrawl-map/SKILL.md +51 -0
- package/.agents/skills/firecrawl-scrape/SKILL.md +69 -0
- package/.agents/skills/firecrawl-search/SKILL.md +60 -0
- package/CLAUDE.md +573 -0
- package/README.de.md +0 -8
- package/README.md +0 -8
- package/README.pt.md +0 -8
- package/assets/brand/ao-ant-mark.svg +91 -0
- package/assets/brand/bdb-core-mark.svg +34 -0
- package/assets/brand/heimdall-guardian-mark.svg +16 -0
- package/assets/brand/memb-crystal-mark.svg +18 -0
- package/bin/aos-config.mjs +89 -0
- package/bin/aos-dashboard.mjs +608 -0
- package/bin/aos-uninstall.mjs +227 -0
- package/docs/sessions/audit-2026-09-14-silent-failures.md +114 -0
- package/docs/skills_table.md +0 -3
- package/installer.js +471 -237
- package/mcps/RhinoMCP/cc-plugin/.claude/settings.json +10 -0
- package/mcps/after-effects-mcp/build/index.js +840 -0
- package/mcps/after-effects-mcp/build/scripts/applyEffect.jsx +153 -0
- package/mcps/after-effects-mcp/build/scripts/applyEffectTemplate.jsx +218 -0
- package/mcps/after-effects-mcp/build/scripts/createComposition.jsx +71 -0
- package/mcps/after-effects-mcp/build/scripts/createShapeLayer.jsx +147 -0
- package/mcps/after-effects-mcp/build/scripts/createSolidLayer.jsx +114 -0
- package/mcps/after-effects-mcp/build/scripts/createTextLayer.jsx +115 -0
- package/mcps/after-effects-mcp/build/scripts/getLayerInfo.jsx +192 -0
- package/mcps/after-effects-mcp/build/scripts/getProjectInfo.jsx +90 -0
- package/mcps/after-effects-mcp/build/scripts/listCompositions.jsx +50 -0
- package/mcps/after-effects-mcp/build/scripts/mcp-bridge-auto.jsx +1773 -0
- package/mcps/after-effects-mcp/build/scripts/setLayerProperties.jsx +160 -0
- package/mcps/computer-use-mcp/dist/client.d.ts +150 -0
- package/mcps/computer-use-mcp/dist/client.js +136 -0
- package/mcps/computer-use-mcp/dist/entrypoint.d.ts +16 -0
- package/mcps/computer-use-mcp/dist/entrypoint.js +26 -0
- package/mcps/computer-use-mcp/dist/native.d.ts +212 -0
- package/mcps/computer-use-mcp/dist/native.js +50 -0
- package/mcps/computer-use-mcp/dist/server.d.ts +32 -0
- package/mcps/computer-use-mcp/dist/server.js +342 -0
- package/mcps/computer-use-mcp/dist/session.d.ts +101 -0
- package/mcps/computer-use-mcp/dist/session.js +2372 -0
- package/package.json +13 -4
- package/skills/global_config/aos-project-init/SKILL.md +97 -130
- package/skills/global_config/aos-project-init/assets/openwikiignore.template +62 -0
- package/skills/global_config/aos-project-init/scripts/aos-project-doctor.mjs +38 -1
- package/skills/global_config/aos-setup/SKILL.md +98 -8
- package/skills/global_config/aos-setup/scripts/aos-doctor.mjs +21 -2
- package/skills/global_config/ask-tim/SKILL.md +2 -7
- package/skills/global_config/openwiki-skill/scripts/openwiki_daemon.py +65 -12
- package/bin/setup-saas.mjs +0 -792
- package/mcps/blender-mcp-server/.dockerignore +0 -19
- package/mcps/blender-mcp-server/.github/workflows/ci.yml +0 -67
- package/mcps/blender-mcp-server/.github/workflows/publish-pypi.yml +0 -54
- package/mcps/blender-mcp-server/CHANGELOG.md +0 -64
- package/mcps/blender-mcp-server/CONTRIBUTING.md +0 -107
- package/mcps/blender-mcp-server/Dockerfile +0 -19
- package/mcps/blender-mcp-server/LICENSE +0 -21
- package/mcps/blender-mcp-server/README.md +0 -409
- package/mcps/blender-mcp-server/addon/__init__.py +0 -1440
- package/mcps/blender-mcp-server/addon/models.py +0 -223
- package/mcps/blender-mcp-server/pyproject.toml +0 -120
- package/mcps/blender-mcp-server/scripts/blender_bridge_request.py +0 -71
- package/mcps/blender-mcp-server/scripts/blender_create_test_cube.py +0 -49
- package/mcps/blender-mcp-server/scripts/blender_scene_info.py +0 -38
- package/mcps/blender-mcp-server/scripts/build_addon_zip.sh +0 -29
- package/mcps/blender-mcp-server/scripts/demos/README.md +0 -186
- package/mcps/blender-mcp-server/scripts/demos/dam_break_scene.py +0 -276
- package/mcps/blender-mcp-server/scripts/demos/open_dam_break_gui.py +0 -33
- package/mcps/blender-mcp-server/scripts/demos/pipe_movement_study.py +0 -518
- package/mcps/blender-mcp-server/scripts/demos/pipe_pressure_failure_scene.py +0 -806
- package/mcps/blender-mcp-server/scripts/demos/procedural_dam_break_scene.py +0 -600
- package/mcps/blender-mcp-server/scripts/demos/run_dam_break.py +0 -510
- package/mcps/blender-mcp-server/scripts/launch_blender_gui.py +0 -41
- package/mcps/blender-mcp-server/scripts/library/README.md +0 -64
- package/mcps/blender-mcp-server/scripts/library/apply_transforms.py +0 -46
- package/mcps/blender-mcp-server/scripts/library/camera.py +0 -51
- package/mcps/blender-mcp-server/scripts/library/collections.py +0 -65
- package/mcps/blender-mcp-server/scripts/library/create_mesh.py +0 -41
- package/mcps/blender-mcp-server/scripts/library/effector.py +0 -48
- package/mcps/blender-mcp-server/scripts/library/fluid_domain.py +0 -80
- package/mcps/blender-mcp-server/scripts/library/fluid_inflow.py +0 -98
- package/mcps/blender-mcp-server/scripts/library/frame_range.py +0 -35
- package/mcps/blender-mcp-server/scripts/library/keyframes.py +0 -59
- package/mcps/blender-mcp-server/scripts/library/rigid_body.py +0 -52
- package/mcps/blender-mcp-server/scripts/library/save_blend.py +0 -40
- package/mcps/blender-mcp-server/scripts/server_start.sh +0 -26
- package/mcps/blender-mcp-server/src/blender_mcp_server/__init__.py +0 -3
- package/mcps/blender-mcp-server/src/blender_mcp_server/headless.py +0 -330
- package/mcps/blender-mcp-server/src/blender_mcp_server/server.py +0 -606
- package/mcps/davinci-mcp-professional/.bandit +0 -35
- package/mcps/davinci-mcp-professional/.claude/commands/security-review.md +0 -191
- package/mcps/davinci-mcp-professional/.claude/settings.json +0 -1
- package/mcps/davinci-mcp-professional/.editorconfig +0 -27
- package/mcps/davinci-mcp-professional/.gitattributes +0 -207
- package/mcps/davinci-mcp-professional/.github/CODEOWNERS +0 -2
- package/mcps/davinci-mcp-professional/.github/ISSUE_TEMPLATE/bug_report.md +0 -33
- package/mcps/davinci-mcp-professional/.github/ISSUE_TEMPLATE/feature_request.md +0 -19
- package/mcps/davinci-mcp-professional/.github/PULL_REQUEST_TEMPLATE.md +0 -20
- package/mcps/davinci-mcp-professional/.github/SECURITY.md +0 -97
- package/mcps/davinci-mcp-professional/.github/dependabot.yml +0 -27
- package/mcps/davinci-mcp-professional/.github/workflows/ci.yml +0 -39
- package/mcps/davinci-mcp-professional/ATTRIBUTION.md +0 -4
- package/mcps/davinci-mcp-professional/AUTHORS.md +0 -9
- package/mcps/davinci-mcp-professional/BUGS.md +0 -55
- package/mcps/davinci-mcp-professional/CLAUDE.md +0 -229
- package/mcps/davinci-mcp-professional/CONTRIBUTING.md +0 -51
- package/mcps/davinci-mcp-professional/COPYING.md +0 -228
- package/mcps/davinci-mcp-professional/Doxyfile +0 -379
- package/mcps/davinci-mcp-professional/README.md +0 -143
- package/mcps/davinci-mcp-professional/SECURITY.md +0 -40
- package/mcps/davinci-mcp-professional/USING.md +0 -301
- package/mcps/davinci-mcp-professional/VERSION.md +0 -13
- package/mcps/davinci-mcp-professional/build.py +0 -169
- package/mcps/davinci-mcp-professional/claude_desktop_config_template.json +0 -11
- package/mcps/davinci-mcp-professional/hooks/ci-check.sh +0 -29
- package/mcps/davinci-mcp-professional/hooks/pre-push +0 -46
- package/mcps/davinci-mcp-professional/main.py +0 -40
- package/mcps/davinci-mcp-professional/mcp_server.py +0 -30
- package/mcps/davinci-mcp-professional/pyproject.toml +0 -115
- package/mcps/davinci-mcp-professional/security_audit.py +0 -379
- package/mcps/davinci-mcp-professional/src/davinci_mcp/__init__.py +0 -19
- package/mcps/davinci-mcp-professional/src/davinci_mcp/cli.py +0 -138
- package/mcps/davinci-mcp-professional/src/davinci_mcp/resolve_client.py +0 -342
- package/mcps/davinci-mcp-professional/src/davinci_mcp/resources/__init__.py +0 -60
- package/mcps/davinci-mcp-professional/src/davinci_mcp/server.py +0 -185
- package/mcps/davinci-mcp-professional/src/davinci_mcp/tools/__init__.py +0 -146
- package/mcps/davinci-mcp-professional/src/davinci_mcp/types.py +0 -125
- package/mcps/davinci-mcp-professional/src/davinci_mcp/utils/__init__.py +0 -19
- package/mcps/davinci-mcp-professional/src/davinci_mcp/utils/platform.py +0 -239
- package/mcps/davinci-mcp-professional/test.py +0 -186
- package/mcps/davinci-mcp-professional/uv.lock +0 -2073
- package/mcps/davinci-resolve-mcp/.claude/skills/media-analysis.md +0 -44
- package/mcps/davinci-resolve-mcp/.clinerules +0 -17
- package/mcps/davinci-resolve-mcp/.cursorrules +0 -17
- package/mcps/davinci-resolve-mcp/.github/copilot-instructions.md +0 -17
- package/mcps/davinci-resolve-mcp/.github/workflows/npm-publish.yml +0 -109
- package/mcps/davinci-resolve-mcp/.windsurfrules +0 -17
- package/mcps/davinci-resolve-mcp/AGENTS.md +0 -114
- package/mcps/davinci-resolve-mcp/CHANGELOG.md +0 -2648
- package/mcps/davinci-resolve-mcp/CLAUDE.md +0 -15
- package/mcps/davinci-resolve-mcp/LICENSE +0 -21
- package/mcps/davinci-resolve-mcp/README.md +0 -173
- package/mcps/davinci-resolve-mcp/SECURITY.md +0 -53
- package/mcps/davinci-resolve-mcp/bin/davinci-resolve-mcp.mjs +0 -450
- package/mcps/davinci-resolve-mcp/examples/README.md +0 -53
- package/mcps/davinci-resolve-mcp/examples/markers/README.md +0 -81
- package/mcps/davinci-resolve-mcp/examples/media/README.md +0 -94
- package/mcps/davinci-resolve-mcp/examples/timeline/README.md +0 -98
- package/mcps/davinci-resolve-mcp/install.py +0 -1687
- package/mcps/davinci-resolve-mcp/package.json +0 -52
- package/mcps/davinci-resolve-mcp/release-notes/v2.22.0.md +0 -51
- package/mcps/davinci-resolve-mcp/release-notes/v2.23.0.md +0 -51
- package/mcps/davinci-resolve-mcp/release-notes/v2.23.1.md +0 -35
- package/mcps/davinci-resolve-mcp/release-notes/v2.24.1.md +0 -32
- package/mcps/davinci-resolve-mcp/scripts/audit_api_parity.py +0 -275
- package/mcps/davinci-resolve-mcp/scripts/audit_readwrite_symmetry.py +0 -80
- package/mcps/davinci-resolve-mcp/scripts/doctor.py +0 -227
- package/mcps/davinci-resolve-mcp/scripts/gen_api_limitations.py +0 -144
- package/mcps/davinci-resolve-mcp/scripts/live_media_analysis_polish_probe.py +0 -65
- package/mcps/davinci-resolve-mcp/scripts/measure_bridge_cost.py +0 -65
- package/mcps/davinci-resolve-mcp/scripts/regen_panel_screenshots.py +0 -76
- package/mcps/davinci-resolve-mcp/src/__init__.py +0 -3
- package/mcps/davinci-resolve-mcp/src/analysis_dashboard.py +0 -15505
- package/mcps/davinci-resolve-mcp/src/batch_cli.py +0 -540
- package/mcps/davinci-resolve-mcp/src/control_panel.py +0 -13
- package/mcps/davinci-resolve-mcp/src/granular/__init__.py +0 -17
- package/mcps/davinci-resolve-mcp/src/granular/common.py +0 -741
- package/mcps/davinci-resolve-mcp/src/granular/folder.py +0 -420
- package/mcps/davinci-resolve-mcp/src/granular/gallery.py +0 -306
- package/mcps/davinci-resolve-mcp/src/granular/graph.py +0 -309
- package/mcps/davinci-resolve-mcp/src/granular/media_pool.py +0 -679
- package/mcps/davinci-resolve-mcp/src/granular/media_pool_item.py +0 -1020
- package/mcps/davinci-resolve-mcp/src/granular/media_storage.py +0 -179
- package/mcps/davinci-resolve-mcp/src/granular/project.py +0 -1654
- package/mcps/davinci-resolve-mcp/src/granular/resolve_control.py +0 -538
- package/mcps/davinci-resolve-mcp/src/granular/timeline.py +0 -1075
- package/mcps/davinci-resolve-mcp/src/granular/timeline_item.py +0 -2251
- package/mcps/davinci-resolve-mcp/src/resolve_mcp_server.py +0 -43
- package/mcps/davinci-resolve-mcp/src/server.py +0 -24116
- package/mcps/davinci-resolve-mcp/src/utils/__init__.py +0 -3
- package/mcps/davinci-resolve-mcp/src/utils/actor_identity.py +0 -46
- package/mcps/davinci-resolve-mcp/src/utils/analysis_caps.py +0 -678
- package/mcps/davinci-resolve-mcp/src/utils/analysis_memory.py +0 -755
- package/mcps/davinci-resolve-mcp/src/utils/analysis_runs.py +0 -307
- package/mcps/davinci-resolve-mcp/src/utils/analysis_store.py +0 -945
- package/mcps/davinci-resolve-mcp/src/utils/api_truth.py +0 -525
- package/mcps/davinci-resolve-mcp/src/utils/app_control.py +0 -319
- package/mcps/davinci-resolve-mcp/src/utils/audio_fairlight_live_probe.py +0 -263
- package/mcps/davinci-resolve-mcp/src/utils/brain_edits.py +0 -387
- package/mcps/davinci-resolve-mcp/src/utils/bridge_metrics.py +0 -76
- package/mcps/davinci-resolve-mcp/src/utils/cdl.py +0 -20
- package/mcps/davinci-resolve-mcp/src/utils/clip_query.py +0 -85
- package/mcps/davinci-resolve-mcp/src/utils/cloud_operations.py +0 -192
- package/mcps/davinci-resolve-mcp/src/utils/color_grade_live_probe.py +0 -444
- package/mcps/davinci-resolve-mcp/src/utils/contracts.py +0 -102
- package/mcps/davinci-resolve-mcp/src/utils/cut_ir.py +0 -115
- package/mcps/davinci-resolve-mcp/src/utils/dctl_templates.py +0 -368
- package/mcps/davinci-resolve-mcp/src/utils/deep_vision.py +0 -643
- package/mcps/davinci-resolve-mcp/src/utils/destructive_hook.py +0 -606
- package/mcps/davinci-resolve-mcp/src/utils/edit_engine.py +0 -737
- package/mcps/davinci-resolve-mcp/src/utils/embeddings.py +0 -922
- package/mcps/davinci-resolve-mcp/src/utils/entities.py +0 -579
- package/mcps/davinci-resolve-mcp/src/utils/extension_authoring_live_probe.py +0 -292
- package/mcps/davinci-resolve-mcp/src/utils/failure_tracker.py +0 -119
- package/mcps/davinci-resolve-mcp/src/utils/fuse_templates.py +0 -1968
- package/mcps/davinci-resolve-mcp/src/utils/fusion_composition_live_probe.py +0 -284
- package/mcps/davinci-resolve-mcp/src/utils/fusion_group_settings.py +0 -334
- package/mcps/davinci-resolve-mcp/src/utils/layout_presets.py +0 -333
- package/mcps/davinci-resolve-mcp/src/utils/mcp_stdio.py +0 -32
- package/mcps/davinci-resolve-mcp/src/utils/mcp_transport.py +0 -128
- package/mcps/davinci-resolve-mcp/src/utils/media_analysis.py +0 -7690
- package/mcps/davinci-resolve-mcp/src/utils/media_analysis_jobs.py +0 -805
- package/mcps/davinci-resolve-mcp/src/utils/media_pool_changes.py +0 -121
- package/mcps/davinci-resolve-mcp/src/utils/media_pool_ingest_live_probe.py +0 -592
- package/mcps/davinci-resolve-mcp/src/utils/multicam.py +0 -393
- package/mcps/davinci-resolve-mcp/src/utils/object_inspection.py +0 -301
- package/mcps/davinci-resolve-mcp/src/utils/page_lock.py +0 -75
- package/mcps/davinci-resolve-mcp/src/utils/platform.py +0 -157
- package/mcps/davinci-resolve-mcp/src/utils/proc.py +0 -26
- package/mcps/davinci-resolve-mcp/src/utils/project_cleanup.py +0 -73
- package/mcps/davinci-resolve-mcp/src/utils/project_lifecycle_live_probe.py +0 -376
- package/mcps/davinci-resolve-mcp/src/utils/project_lint.py +0 -131
- package/mcps/davinci-resolve-mcp/src/utils/project_properties.py +0 -601
- package/mcps/davinci-resolve-mcp/src/utils/project_spec.py +0 -459
- package/mcps/davinci-resolve-mcp/src/utils/readback.py +0 -91
- package/mcps/davinci-resolve-mcp/src/utils/render_deliver_live_probe.py +0 -384
- package/mcps/davinci-resolve-mcp/src/utils/resolve_ai_governance.py +0 -214
- package/mcps/davinci-resolve-mcp/src/utils/resolve_ai_ledger.py +0 -244
- package/mcps/davinci-resolve-mcp/src/utils/resolve_busy.py +0 -171
- package/mcps/davinci-resolve-mcp/src/utils/resolve_connection.py +0 -77
- package/mcps/davinci-resolve-mcp/src/utils/review_annotation_live_probe.py +0 -352
- package/mcps/davinci-resolve-mcp/src/utils/script_templates.py +0 -1193
- package/mcps/davinci-resolve-mcp/src/utils/shot_relationships.py +0 -544
- package/mcps/davinci-resolve-mcp/src/utils/structural_diff.py +0 -175
- package/mcps/davinci-resolve-mcp/src/utils/sync_detection.py +0 -889
- package/mcps/davinci-resolve-mcp/src/utils/timeline_brain_db.py +0 -826
- package/mcps/davinci-resolve-mcp/src/utils/timeline_conform_live_probe.py +0 -280
- package/mcps/davinci-resolve-mcp/src/utils/timeline_kernel_live_probe.py +0 -1092
- package/mcps/davinci-resolve-mcp/src/utils/timeline_kernel_probe.py +0 -185
- package/mcps/davinci-resolve-mcp/src/utils/timeline_title_text.py +0 -87
- package/mcps/davinci-resolve-mcp/src/utils/timeline_versioning.py +0 -730
- package/mcps/davinci-resolve-mcp/src/utils/update_check.py +0 -685
- package/mcps/vectorworks-mcp/.dockerignore +0 -8
- package/mcps/vectorworks-mcp/Dockerfile +0 -28
- package/mcps/vectorworks-mcp/README.md +0 -156
- package/mcps/vectorworks-mcp/app/__init__.py +0 -2
- package/mcps/vectorworks-mcp/app/api.py +0 -52
- package/mcps/vectorworks-mcp/app/chunking.py +0 -56
- package/mcps/vectorworks-mcp/app/config.py +0 -29
- package/mcps/vectorworks-mcp/app/embeddings.py +0 -28
- package/mcps/vectorworks-mcp/app/indexer.py +0 -106
- package/mcps/vectorworks-mcp/app/main.py +0 -33
- package/mcps/vectorworks-mcp/app/mcp_server.py +0 -71
- package/mcps/vectorworks-mcp/app/search.py +0 -54
- package/mcps/vectorworks-mcp/app/utils.py +0 -14
- package/mcps/vectorworks-mcp/data/.gitkeep +0 -1
- package/mcps/vectorworks-mcp/data/vw-app-help/VW2022_PluginScript.htm +0 -95
- package/mcps/vectorworks-mcp/data/vw-app-help/VW2022_ScriptEditor.htm +0 -266
- package/mcps/vectorworks-mcp/data/vw-app-help/VW2022_Scripting.htm +0 -106
- package/mcps/vectorworks-mcp/data/vw-app-help/VW2023_CreatingScriptedPlugins.htm +0 -327
- package/mcps/vectorworks-mcp/data/vw-app-help/VW2024_RunningScripts.htm +0 -116
- package/mcps/vectorworks-mcp/data/vw-devwiki/VS_Function_Reference_category.html +0 -2129
- package/mcps/vectorworks-mcp/data/vw-jp-ref/ObjectsSymbols.html +0 -2035
- package/mcps/vectorworks-mcp/data/vw-jp-ref/ScriptFunctionReference.html +0 -29
- package/mcps/vectorworks-mcp/design.md +0 -57
- package/mcps/vectorworks-mcp/docker-compose.yml +0 -18
- package/mcps/vectorworks-mcp/index/.gitkeep +0 -1
- package/mcps/vectorworks-mcp/index/meta.jsonl +0 -3956
- package/mcps/vectorworks-mcp/index/vw.faiss +0 -0
- package/mcps/vectorworks-mcp/requirements.txt +0 -10
- package/mcps/vectorworks-mcp/scripts/fetch_docs_minimal.sh +0 -84
- package/mcps/vectorworks-mcp/scripts/fetch_github_vectorworks.sh +0 -85
- package/mcps/vectorworks-mcp/templates/index.html +0 -40
- package/scripts/ecosystem-health-audit.js +0 -257
- package/skills/bdb-dev-os-skill/SKILL.md +0 -49
- package/skills/bdb-dev-os-skill/package.json +0 -11
- package/skills/bdbsaastraining/SKILL.md +0 -316
- package/skills/bdbsaastraining/references/exam-pool.md +0 -313
- package/skills/bdbsaastraining/references/interaction-modes.md +0 -94
- package/skills/bdbsaastraining/references/track-a-ai-agent.md +0 -111
- package/skills/bdbsaastraining/references/track-b-wordpress.md +0 -111
- package/skills/bdbsaastraining/references/track-c-mailserver.md +0 -107
- package/skills/bdbsaastraining/references/track-d-debian.md +0 -109
- package/skills/bdbsaastraining/references/track-e-custom.md +0 -83
- package/skills/bdbsaastraining/scripts/build_profile.py +0 -529
- package/skills/bdbsaastraining/scripts/generate_certificate.py +0 -161
- package/skills/bdbsaastraining/scripts/preflight_check.sh +0 -150
- package/skills/bdbsaastraining/templates/certificate_template.html +0 -508
- package/skills/global_config/bdb-ecosystem-health/SKILL.md +0 -68
- package/skills/global_config/bdbsaas-ops/SKILL.md +0 -16
- package/skills/global_config/bdbsaashost/SKILL.md +0 -125
|
@@ -1,409 +0,0 @@
|
|
|
1
|
-
# Blender MCP Server
|
|
2
|
-
|
|
3
|
-
Control Blender from any AI assistant using the [Model Context Protocol (MCP)](https://modelcontextprotocol.io).
|
|
4
|
-
|
|
5
|
-
27 tools across 7 namespaces — create objects, assign materials, render images, export scenes, execute Python scripts, manage async jobs, and more.
|
|
6
|
-
|
|
7
|
-

|
|
8
|
-
|
|
9
|
-
## How It Works
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
┌─────────────┐ stdio ┌──────────────────┐ JSON/TCP ┌─────────────────┐
|
|
13
|
-
│ MCP Client │ ◄──────────────► │ MCP Server │ ◄─────────────► │ Blender Add-on │
|
|
14
|
-
│ (any host) │ │ (Python) │ localhost:9876 │ (runs in bpy) │
|
|
15
|
-
└─────────────┘ └──────────────────┘ └─────────────────┘
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
1. The **Blender add-on** runs inside Blender and listens on `localhost:9876`.
|
|
19
|
-
2. The **MCP server** connects to your AI client via stdio and forwards tool calls to Blender over TCP.
|
|
20
|
-
3. You ask the AI → it calls MCP tools → Blender executes commands → results flow back.
|
|
21
|
-
|
|
22
|
-
## Quick Start
|
|
23
|
-
|
|
24
|
-
### 1. Install the MCP Server
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
git clone https://github.com/djeada/blender-mcp-server.git
|
|
28
|
-
cd blender-mcp-server
|
|
29
|
-
python3 -m venv .venv
|
|
30
|
-
source .venv/bin/activate
|
|
31
|
-
pip install -e .
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
This creates the executable `.venv/bin/blender-mcp-server`.
|
|
35
|
-
|
|
36
|
-
### 2. Install the Blender Add-on
|
|
37
|
-
|
|
38
|
-
Build the add-on zip:
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
./scripts/build_addon_zip.sh
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
Then in Blender:
|
|
45
|
-
|
|
46
|
-
1. Go to **Edit → Preferences → Add-ons → Install**.
|
|
47
|
-
2. Select `dist/blender_mcp_bridge.zip` and enable **Blender MCP Bridge**.
|
|
48
|
-
3. In the 3D Viewport, press **N** → open the **MCP** tab.
|
|
49
|
-
4. Confirm it shows **Listening on 127.0.0.1:9876**.
|
|
50
|
-
|
|
51
|
-
### 3. Connect Your MCP Client
|
|
52
|
-
|
|
53
|
-
<details>
|
|
54
|
-
<summary><strong>Claude Desktop</strong></summary>
|
|
55
|
-
|
|
56
|
-
Add to your config file:
|
|
57
|
-
|
|
58
|
-
| OS | Path |
|
|
59
|
-
|---|---|
|
|
60
|
-
| macOS | `~/Library/Application Support/Claude/claude_desktop_config.json` |
|
|
61
|
-
| Windows | `%APPDATA%\Claude\claude_desktop_config.json` |
|
|
62
|
-
| Linux | `~/.config/Claude/claude_desktop_config.json` |
|
|
63
|
-
|
|
64
|
-
```json
|
|
65
|
-
{
|
|
66
|
-
"mcpServers": {
|
|
67
|
-
"blender": {
|
|
68
|
-
"command": "/absolute/path/to/blender-mcp-server/.venv/bin/blender-mcp-server"
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
Replace the path with the actual location of your clone.
|
|
75
|
-
|
|
76
|
-
</details>
|
|
77
|
-
|
|
78
|
-
<details>
|
|
79
|
-
<summary><strong>Codex CLI</strong></summary>
|
|
80
|
-
|
|
81
|
-
Register the server once:
|
|
82
|
-
|
|
83
|
-
```bash
|
|
84
|
-
codex mcp add blender -- /absolute/path/to/blender-mcp-server/.venv/bin/blender-mcp-server
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
Verify with `codex mcp list`. Then start Codex from any directory — it launches the server automatically.
|
|
88
|
-
|
|
89
|
-
</details>
|
|
90
|
-
|
|
91
|
-
<details>
|
|
92
|
-
<summary><strong>Other MCP clients</strong></summary>
|
|
93
|
-
|
|
94
|
-
Point any MCP-compatible client at the server executable:
|
|
95
|
-
|
|
96
|
-
```
|
|
97
|
-
/absolute/path/to/blender-mcp-server/.venv/bin/blender-mcp-server
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
The server uses **stdio** transport. No additional flags are needed.
|
|
101
|
-
|
|
102
|
-
</details>
|
|
103
|
-
|
|
104
|
-
### 4. Start Using It
|
|
105
|
-
|
|
106
|
-
Make sure Blender is open with the add-on listening, then ask your AI assistant:
|
|
107
|
-
|
|
108
|
-
- *"What objects are in my Blender scene?"*
|
|
109
|
-
- *"Create a cube named TestCube at [0, 0, 1]"*
|
|
110
|
-
- *"Render the scene to /tmp/render.png"*
|
|
111
|
-
|
|
112
|
-
The AI calls MCP tools like `blender_scene_list_objects` and `blender_object_create`, which the server forwards to Blender.
|
|
113
|
-
|
|
114
|
-
## Example Prompts
|
|
115
|
-
|
|
116
|
-
<details>
|
|
117
|
-
<summary><strong>🔍 Inspecting your scene</strong></summary>
|
|
118
|
-
|
|
119
|
-
- *"What objects are in my scene?"*
|
|
120
|
-
- *"Show me the transform of the Camera object"*
|
|
121
|
-
- *"List all materials in the file"*
|
|
122
|
-
|
|
123
|
-
</details>
|
|
124
|
-
|
|
125
|
-
<details>
|
|
126
|
-
<summary><strong>🔨 Creating objects</strong></summary>
|
|
127
|
-
|
|
128
|
-
- *"Create a sphere named 'Earth' at position [0, 0, 2] with size 3"*
|
|
129
|
-
- *"Add a cylinder at the origin, then scale it to [0.5, 0.5, 4] to make a tall pillar"*
|
|
130
|
-
- *"Create 5 cubes in a row spaced 3 units apart"*
|
|
131
|
-
|
|
132
|
-
</details>
|
|
133
|
-
|
|
134
|
-
<details>
|
|
135
|
-
<summary><strong>🎨 Materials & colors</strong></summary>
|
|
136
|
-
|
|
137
|
-
- *"Create a red material and assign it to the Cube"*
|
|
138
|
-
- *"Make a material called 'Ocean' with color [0.0, 0.3, 0.8] and assign it to the Sphere"*
|
|
139
|
-
- *"Change the color of 'RedMaterial' to orange"*
|
|
140
|
-
|
|
141
|
-
</details>
|
|
142
|
-
|
|
143
|
-
<details>
|
|
144
|
-
<summary><strong>📐 Transforming objects</strong></summary>
|
|
145
|
-
|
|
146
|
-
- *"Move the Cube up 2 units on the Z axis"*
|
|
147
|
-
- *"Rotate the Cylinder 45 degrees on the Z axis"*
|
|
148
|
-
- *"Scale the Sphere to [2, 2, 2]"*
|
|
149
|
-
|
|
150
|
-
</details>
|
|
151
|
-
|
|
152
|
-
<details>
|
|
153
|
-
<summary><strong>📸 Rendering & exporting</strong></summary>
|
|
154
|
-
|
|
155
|
-
- *"Render the scene at 1920×1080 and save it to /tmp/render.png"*
|
|
156
|
-
- *"Export the scene as a GLB file to /tmp/scene.glb"*
|
|
157
|
-
|
|
158
|
-
</details>
|
|
159
|
-
|
|
160
|
-
<details>
|
|
161
|
-
<summary><strong>🐍 Python execution</strong></summary>
|
|
162
|
-
|
|
163
|
-
- *"Run this Blender Python: `bpy.ops.mesh.primitive_monkey_add(location=(0,0,2))`"*
|
|
164
|
-
- *"Execute the fluid_domain.py script from the library with resolution 128"*
|
|
165
|
-
- *"Start an async bake job for the fluid simulation and tell me the job ID"*
|
|
166
|
-
|
|
167
|
-
</details>
|
|
168
|
-
|
|
169
|
-
<details>
|
|
170
|
-
<summary><strong>⏪ Undo / Redo</strong></summary>
|
|
171
|
-
|
|
172
|
-
- *"Undo the last change"*
|
|
173
|
-
- *"Redo what was just undone"*
|
|
174
|
-
|
|
175
|
-
</details>
|
|
176
|
-
|
|
177
|
-
## Tool Reference
|
|
178
|
-
|
|
179
|
-
### Scene Inspection
|
|
180
|
-
|
|
181
|
-
| Tool | Description |
|
|
182
|
-
|---|---|
|
|
183
|
-
| `blender_scene_get_info` | Scene metadata — name, frame range, render engine, resolution, object count |
|
|
184
|
-
| `blender_scene_list_objects` | List all objects, optionally filter by type (`MESH`, `CAMERA`, `LIGHT`, …) |
|
|
185
|
-
| `blender_object_get_transform` | Get position, rotation, and scale of an object by name |
|
|
186
|
-
| `blender_object_get_hierarchy` | Parent/child hierarchy tree (full scene or subtree) |
|
|
187
|
-
|
|
188
|
-
### Object Manipulation
|
|
189
|
-
|
|
190
|
-
| Tool | Description |
|
|
191
|
-
|---|---|
|
|
192
|
-
| `blender_object_create` | Create primitives: `cube`, `sphere`, `cylinder`, `plane`, `cone`, `torus` |
|
|
193
|
-
| `blender_object_delete` | Delete an object by name |
|
|
194
|
-
| `blender_object_translate` | Move — absolute `location` or relative `offset` |
|
|
195
|
-
| `blender_object_rotate` | Set rotation `[x, y, z]` in degrees (default) or radians |
|
|
196
|
-
| `blender_object_scale` | Set scale `[x, y, z]` |
|
|
197
|
-
| `blender_object_duplicate` | Duplicate with optional new name |
|
|
198
|
-
|
|
199
|
-
### Materials
|
|
200
|
-
|
|
201
|
-
| Tool | Description |
|
|
202
|
-
|---|---|
|
|
203
|
-
| `blender_material_list` | List all materials in the file |
|
|
204
|
-
| `blender_material_create` | Create a material with optional base color `[r, g, b]` (0–1) |
|
|
205
|
-
| `blender_material_assign` | Assign a material to an object |
|
|
206
|
-
| `blender_material_set_color` | Set the Principled BSDF base color |
|
|
207
|
-
| `blender_material_set_texture` | Set an image texture as base color |
|
|
208
|
-
|
|
209
|
-
### Rendering & Export
|
|
210
|
-
|
|
211
|
-
| Tool | Description |
|
|
212
|
-
|---|---|
|
|
213
|
-
| `blender_render_still` | Render still image — output path, resolution, engine |
|
|
214
|
-
| `blender_render_animation` | Render animation — frame range, output path, engine |
|
|
215
|
-
| `blender_export_gltf` | Export as glTF/GLB |
|
|
216
|
-
| `blender_export_obj` | Export as OBJ |
|
|
217
|
-
| `blender_export_fbx` | Export as FBX |
|
|
218
|
-
|
|
219
|
-
### History
|
|
220
|
-
|
|
221
|
-
| Tool | Description |
|
|
222
|
-
|---|---|
|
|
223
|
-
| `blender_history_undo` | Undo the last operation |
|
|
224
|
-
| `blender_history_redo` | Redo the last undone operation |
|
|
225
|
-
|
|
226
|
-
### Python Execution
|
|
227
|
-
|
|
228
|
-
| Tool | Description |
|
|
229
|
-
|---|---|
|
|
230
|
-
| `blender_python_exec` | Run a Python script synchronously. Accepts `code` or `script_path`, optional `args`, `timeout_seconds`, and `transport` (`bridge` or `headless`). |
|
|
231
|
-
| `blender_python_exec_async` | Start a long-running script asynchronously. Returns a `job_id`. |
|
|
232
|
-
| `blender_job_status` | Poll an async job's status, result, stdout, stderr, and error. |
|
|
233
|
-
| `blender_job_cancel` | Cancel a running or queued async job. |
|
|
234
|
-
| `blender_job_list` | List known async jobs with IDs, status, and creation time. |
|
|
235
|
-
|
|
236
|
-
## Script Library
|
|
237
|
-
|
|
238
|
-
Pre-built scripts in `scripts/library/` for use with `blender_python_exec` via `script_path`:
|
|
239
|
-
|
|
240
|
-
| Script | Description |
|
|
241
|
-
|---|---|
|
|
242
|
-
| `create_mesh.py` | Create primitive meshes through the data API (no `bpy.ops`) |
|
|
243
|
-
| `fluid_domain.py` | Create a Mantaflow fluid domain |
|
|
244
|
-
| `fluid_inflow.py` | Create an inflow source |
|
|
245
|
-
| `effector.py` | Set objects as collision effectors |
|
|
246
|
-
| `rigid_body.py` | Add rigid body physics |
|
|
247
|
-
| `frame_range.py` | Set scene frame range |
|
|
248
|
-
| `camera.py` | Create and configure a camera |
|
|
249
|
-
| `keyframes.py` | Insert transform keyframes |
|
|
250
|
-
| `collections.py` | Organize objects into collections |
|
|
251
|
-
| `apply_transforms.py` | Apply transforms to objects |
|
|
252
|
-
| `save_blend.py` | Save the `.blend` file |
|
|
253
|
-
|
|
254
|
-
See [`scripts/library/README.md`](scripts/library/README.md) for full argument docs and a dam-break walkthrough.
|
|
255
|
-
|
|
256
|
-
> **Tips for physics workflows:**
|
|
257
|
-
> - Prefer `create_mesh.py` (data API) over `bpy.ops.mesh.primitive_*_add` in live sessions — the operator path can destabilize view-layer updates around fluid setup.
|
|
258
|
-
> - Keep Mantaflow liquid modifiers hidden in the viewport to avoid crashes in Blender 4.x.
|
|
259
|
-
> - Use `transport="headless"` for heavy physics bakes — this runs scripts in a separate `blender -b` process.
|
|
260
|
-
|
|
261
|
-
## Safety & Security
|
|
262
|
-
|
|
263
|
-
| Feature | Description |
|
|
264
|
-
|---|---|
|
|
265
|
-
| **Automatic undo push** | Mutation tools push an undo step before executing (Python exec excluded for stability). |
|
|
266
|
-
| **Safe Mode** | Restricts file I/O to the project directory only. |
|
|
267
|
-
| **Tool whitelist** | Limits which commands the bridge accepts. |
|
|
268
|
-
| **Script path restrictions** | `script_path` must be under configured approved roots. |
|
|
269
|
-
| **Inline code toggle** | Disable inline code execution via add-on preferences. |
|
|
270
|
-
| **Module blocklist** | `subprocess`, `shutil`, `socket`, `webbrowser`, `ctypes`, `multiprocessing` are blocked by default. |
|
|
271
|
-
|
|
272
|
-
## Add-on Preferences
|
|
273
|
-
|
|
274
|
-
In Blender → **Edit → Preferences → Add-ons → Blender MCP Bridge**:
|
|
275
|
-
|
|
276
|
-
| Setting | Default | Description |
|
|
277
|
-
|---|---|---|
|
|
278
|
-
| Safe Mode | Off | Restrict file I/O to the project directory |
|
|
279
|
-
| Port | 9876 | TCP port for the MCP bridge |
|
|
280
|
-
| Allow Inline Code | On | Allow `python.execute` to run inline code strings |
|
|
281
|
-
| Approved Script Roots | *(blend file dir)* | Semicolon-separated directories for script file access |
|
|
282
|
-
|
|
283
|
-
## Advanced Usage
|
|
284
|
-
|
|
285
|
-
<details>
|
|
286
|
-
<summary><strong>Direct bridge testing (no MCP client)</strong></summary>
|
|
287
|
-
|
|
288
|
-
The helper scripts in `scripts/` connect directly to the Blender add-on on `127.0.0.1:9876`, bypassing the MCP server entirely. Useful for verifying the add-on works:
|
|
289
|
-
|
|
290
|
-
```bash
|
|
291
|
-
python3 scripts/blender_scene_info.py
|
|
292
|
-
python3 scripts/blender_create_test_cube.py --name TestCube --x 0 --y 0 --z 1 --size 2
|
|
293
|
-
python3 scripts/blender_bridge_request.py scene.get_info
|
|
294
|
-
python3 scripts/blender_bridge_request.py object.translate --params '{"name":"TestCube","offset":[0,0,2]}'
|
|
295
|
-
```
|
|
296
|
-
|
|
297
|
-
All scripts accept `--host`, `--port`, and `--timeout` flags.
|
|
298
|
-
|
|
299
|
-
</details>
|
|
300
|
-
|
|
301
|
-
<details>
|
|
302
|
-
<summary><strong>Headless / background mode</strong></summary>
|
|
303
|
-
|
|
304
|
-
Run Blender without a GUI for automation:
|
|
305
|
-
|
|
306
|
-
```bash
|
|
307
|
-
blender -b --python your_script.py
|
|
308
|
-
```
|
|
309
|
-
|
|
310
|
-
Where `your_script.py` starts the MCP bridge:
|
|
311
|
-
|
|
312
|
-
```python
|
|
313
|
-
import sys
|
|
314
|
-
sys.path.insert(0, "/path/to/blender-mcp-server")
|
|
315
|
-
from addon import CommandHandler, BlenderMCPServer
|
|
316
|
-
|
|
317
|
-
server = BlenderMCPServer()
|
|
318
|
-
server.start()
|
|
319
|
-
|
|
320
|
-
import socket
|
|
321
|
-
s = socket.socket()
|
|
322
|
-
s.bind(("127.0.0.1", 9877))
|
|
323
|
-
s.listen(1)
|
|
324
|
-
s.accept() # Blocks until shutdown signal
|
|
325
|
-
```
|
|
326
|
-
|
|
327
|
-
</details>
|
|
328
|
-
|
|
329
|
-
<details>
|
|
330
|
-
<summary><strong>Programmatic tool call examples</strong></summary>
|
|
331
|
-
|
|
332
|
-
**Inline code — create a fluid domain:**
|
|
333
|
-
|
|
334
|
-
```json
|
|
335
|
-
{
|
|
336
|
-
"tool": "blender_python_exec",
|
|
337
|
-
"args": {
|
|
338
|
-
"code": "import bpy\nbpy.ops.mesh.primitive_cube_add(size=4, location=(0,0,2))\ndomain = bpy.context.active_object\ndomain.name = 'FluidDomain'\nbpy.ops.object.modifier_add(type='FLUID')\ndomain.modifiers['Fluid'].fluid_type = 'DOMAIN'\nsettings = domain.modifiers['Fluid'].domain_settings\nsettings.domain_type = 'LIQUID'\nsettings.resolution_max = 64\n__result__ = {'domain': domain.name, 'resolution': 64}",
|
|
339
|
-
"args": {"resolution": 64}
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
```
|
|
343
|
-
|
|
344
|
-
**Script file — set up colliders:**
|
|
345
|
-
|
|
346
|
-
```json
|
|
347
|
-
{
|
|
348
|
-
"tool": "blender_python_exec",
|
|
349
|
-
"args": {
|
|
350
|
-
"script_path": "scripts/library/effector.py",
|
|
351
|
-
"args": {
|
|
352
|
-
"objects": ["Ground", "Building_01", "Building_02"],
|
|
353
|
-
"effector_type": "COLLISION"
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
```
|
|
358
|
-
|
|
359
|
-
**Async bake and poll:**
|
|
360
|
-
|
|
361
|
-
```json
|
|
362
|
-
{"tool": "blender_python_exec_async", "args": {"code": "import bpy\nbpy.ops.fluid.bake_all()\n__result__ = {'baked': True}", "timeout_seconds": 1800}}
|
|
363
|
-
```
|
|
364
|
-
|
|
365
|
-
→ `{"job_id": "job-f8e2a1b3"}`
|
|
366
|
-
|
|
367
|
-
```json
|
|
368
|
-
{"tool": "blender_job_status", "args": {"job_id": "job-f8e2a1b3"}}
|
|
369
|
-
```
|
|
370
|
-
|
|
371
|
-
</details>
|
|
372
|
-
|
|
373
|
-
## Development
|
|
374
|
-
|
|
375
|
-
```bash
|
|
376
|
-
git clone https://github.com/djeada/blender-mcp-server.git
|
|
377
|
-
cd blender-mcp-server
|
|
378
|
-
pip install -e ".[dev]"
|
|
379
|
-
|
|
380
|
-
pytest tests/ -v
|
|
381
|
-
```
|
|
382
|
-
|
|
383
|
-
### Project Structure
|
|
384
|
-
|
|
385
|
-
```
|
|
386
|
-
blender-mcp-server/
|
|
387
|
-
├── addon/ # Blender add-on (TCP server + command handlers + job manager)
|
|
388
|
-
├── src/blender_mcp_server/ # MCP server (stdio transport + tool definitions)
|
|
389
|
-
├── scripts/
|
|
390
|
-
│ ├── library/ # Reusable Blender scripts for common tasks
|
|
391
|
-
│ ├── demos/ # End-to-end demo scenes
|
|
392
|
-
│ └── blender_bridge_request.py # Direct bridge test helpers
|
|
393
|
-
├── tests/ # Unit tests (mocked bpy, no Blender required)
|
|
394
|
-
├── docs/ # Architecture & design docs
|
|
395
|
-
├── pyproject.toml
|
|
396
|
-
└── README.md
|
|
397
|
-
```
|
|
398
|
-
|
|
399
|
-
## Contributing
|
|
400
|
-
|
|
401
|
-
1. Fork the repository.
|
|
402
|
-
2. Create a feature branch.
|
|
403
|
-
3. Add tests for your changes.
|
|
404
|
-
4. Run `pytest tests/ -v` to verify all tests pass.
|
|
405
|
-
5. Submit a pull request.
|
|
406
|
-
|
|
407
|
-
## License
|
|
408
|
-
|
|
409
|
-
MIT
|