- .mcp.json: pass UE_ENGINE_ROOT and UE_DOCS_PATH via ${VAR} interpolation so the
MCP server subprocess inherits them without hardcoding paths
- search_source: search both Engine/Source/ and Engine/Plugins/ (path_hint applied
under both); switch from -m 40 (per-file cap) to streaming Popen with a true
40-line total cap; fix UE_ENGINE_ROOT to point at Engine/ not the repo root
- Update README and CLAUDE.md to reflect the above
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
_load_type_index() now caches the parsed dict at module level and only
re-reads type-index.txt when its mtime changes. This avoids a file read
and parse on every get_class_overview / get_member call. The cache is
automatically invalidated if the docs are regenerated.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>