fix(filesystem): use fileURLToPath for Windows absolute path parsing (#3205)

This commit is contained in:
Ellis Shang 2026-02-19 20:52:11 +08:00 • committed by GitHub
commit 1b96551ef0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -3,6 +3,7 @@ import path from 'path';
import os from 'os';
import { normalizePath } from './path-utils.js';
import type { Root } from '@modelcontextprotocol/sdk/types.js';
import { fileURLToPath } from "url";
/**
* Converts a root URI to a normalized directory path with basic security validation.
@ -11,7 +12,7 @@ import type { Root } from '@modelcontextprotocol/sdk/types.js';
*/
async function parseRootUri(rootUri: string): Promise<string | null> {
try {
const rawPath = rootUri.startsWith('file://') ? rootUri.slice(7) : rootUri;
const rawPath = rootUri.startsWith('file://') ? fileURLToPath(rootUri) : rootUri;
const expandedPath = rawPath.startsWith('~/') || rawPath === '~'
? path.join(os.homedir(), rawPath.slice(1))
: rawPath;