export interface PluginInfo { name: string; contentDir: string; mountPoint: string; } export interface UeMcpConfig { /** Content roots to search by default (e.g. ["/Game/", "/GASP/", "/MyPlugin/"]) */ contentRoots?: string[]; /** Tool categories to disable (e.g. ["gas", "networking", "pcg"]) */ disable?: string[]; /** Optional HTTP surface for flow.run (#144). Disabled by default. */ http?: { enabled?: boolean; /** Default 7723. Bound to 127.0.0.1 only. */ port?: number; /** Override bind host. Defaults to 127.0.0.1 — do not expose externally. */ host?: string; }; } export declare class ProjectContext { projectPath: string | null; projectName: string | null; contentDir: string | null; engineAssociation: string | null; config: UeMcpConfig; get isLoaded(): boolean; setProject(inputPath: string): void; ensureLoaded(): void; resolveContentPath(assetPath: string): string; resolveContentDir(dirPath: string): string; getRelativeContentPath(absolutePath: string): string; get projectDir(): string | null; get configDir(): string | null; get pluginsDir(): string | null; /** * Cache for discoverPlugins(). Engine-tree scans walk hundreds of dirs; * caching for the lifetime of the server is fine because plugin layouts * don't change while the editor is running. */ private _pluginCache; discoverPlugins(): PluginInfo[]; resolvePluginPath(mountPath: string): string | null; getRelativePluginPath(absolutePath: string): string | null; private parseUProject; private loadConfig; }