@debugmcp/mcp-debugger
Version:
Step-through debugging MCP server for LLMs
67 lines • 2.53 kB
JavaScript
/**
* Container path utilities - Centralized path resolution for container and host modes
*
* POLICY:
* 1. Single source of truth for all path resolution
* 2. Container mode requires MCP_WORKSPACE_ROOT environment variable
* 3. No OS-specific transformations or smart heuristics
* 4. Clear error messages when paths don't match expectations
* 5. Deterministic behavior across all deployment scenarios
*/
/**
* Check if the application is running in container mode
*/
export function isContainerMode(environment) {
return environment.get('MCP_CONTAINER') === 'true';
}
/**
* Get the workspace root directory for container mode
* @throws Error if in container mode but MCP_WORKSPACE_ROOT is not set
*/
export function getWorkspaceRoot(environment) {
if (!isContainerMode(environment)) {
throw new Error('getWorkspaceRoot should only be called in container mode');
}
const root = environment.get('MCP_WORKSPACE_ROOT');
if (!root) {
throw new Error('MCP_WORKSPACE_ROOT environment variable is required in container mode. ' +
'This should be set to the mount point of the workspace (e.g., /workspace)');
}
// Normalize: ensure no trailing slash for consistency
return root.replace(/\/+$/, '');
}
/**
* Resolve a path for the current runtime environment
*
* @param inputPath The path to resolve (from MCP client)
* @param environment The environment interface
* @returns The resolved absolute path appropriate for the runtime
*
* Host mode: Returns the input path unchanged
* Container mode: Always prefixes with workspace root (simple, no validation)
*/
export function resolvePathForRuntime(inputPath, environment) {
// Host mode: pass through unchanged
if (!isContainerMode(environment)) {
return inputPath;
}
// Container mode: simple prefix with workspace root
const workspaceRoot = getWorkspaceRoot(environment);
// Simply prepend the workspace root to any path
// No validation, no rejection, no smart handling
return `${workspaceRoot}/${inputPath}`;
}
/**
* Get a descriptive path for error messages
* Shows both the original and resolved path for debugging
*/
export function getPathDescription(originalPath, resolvedPath, environment) {
if (!isContainerMode(environment)) {
return originalPath;
}
if (originalPath === resolvedPath) {
return originalPath;
}
return `'${originalPath}' (resolved to: '${resolvedPath}')`;
}
//# sourceMappingURL=container-path-utils.js.map