Skip to content

Hot Reload API ​

Generic skill hot-reload support for any DCC adapter (requires dcc-mcp-core >= 0.12.24).

Monitors skill directories for changes and automatically reloads affected skills without requiring a server restart. DCC-agnostic.

Exported symbols: DccSkillHotReloader

Adapter catalog refresh ​

DccServerBase.reload_skill_paths() re-scans the skill catalog. The direct MCP tool dcc_admin__reload_skills invokes this method without arguments. Both retain the extra_skill_paths and include_bundled options from the last successful registration or explicit reload. Environment and admin-configured paths are resolved again on every scan.

Pass extra_skill_paths=[...] to replace the saved extra roots, or [] to clear them. Pass include_bundled=True or False to change bundled discovery; omitting it retains the saved setting. The new roots are committed only after the catalog has actually been rebuilt from them, so both a scan that raises and a scan that fails hard — the native refresh returns None for a hard failure, such as a circular skill dependency — leave the previously saved settings unchanged. After a catalog refresh, use load_skill to activate the refreshed tool definitions.

DccSkillHotReloader ​

Constructor ​

ParameterTypeDescription
dcc_namestrShort DCC identifier for log messages
serverAnyDCC MCP server instance (must expose _server with list_skills() and load_skill())

Properties ​

PropertyTypeDescription
is_enabledboolWhether hot-reload is currently active
reload_countintTotal number of reload events triggered
watched_pathslist[str]Directories currently being monitored

Methods ​

MethodReturnsDescription
enable(skill_paths, debounce_ms=300)boolEnable hot-reload for given directories
disable()NoneDisable hot-reload and clean up the SkillWatcher
reload_now()intManually trigger a reload; returns number of skills reloaded
get_stats()dictReturn {enabled, watched_paths, reload_count}
python
from dcc_mcp_core import DccSkillHotReloader

reloader = DccSkillHotReloader(dcc_name="blender", server=self)
reloader.enable(["/path/to/skills"], debounce_ms=300)
# ... files are now monitored, skills reload automatically ...
reloader.disable()

Released under the MIT License.