@j0hanz/filesystem-context-mcp 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/README.md +369 -0
  2. package/dist/__tests__/errors.test.d.ts +2 -0
  3. package/dist/__tests__/errors.test.d.ts.map +1 -0
  4. package/dist/__tests__/errors.test.js +88 -0
  5. package/dist/__tests__/errors.test.js.map +1 -0
  6. package/dist/__tests__/file-operations.test.d.ts +2 -0
  7. package/dist/__tests__/file-operations.test.d.ts.map +1 -0
  8. package/dist/__tests__/file-operations.test.js +230 -0
  9. package/dist/__tests__/file-operations.test.js.map +1 -0
  10. package/dist/__tests__/lib/errors.test.d.ts +2 -0
  11. package/dist/__tests__/lib/errors.test.d.ts.map +1 -0
  12. package/dist/__tests__/lib/errors.test.js +156 -0
  13. package/dist/__tests__/lib/errors.test.js.map +1 -0
  14. package/dist/__tests__/lib/file-operations.test.d.ts +2 -0
  15. package/dist/__tests__/lib/file-operations.test.d.ts.map +1 -0
  16. package/dist/__tests__/lib/file-operations.test.js +417 -0
  17. package/dist/__tests__/lib/file-operations.test.js.map +1 -0
  18. package/dist/__tests__/lib/fs-helpers.test.d.ts +2 -0
  19. package/dist/__tests__/lib/fs-helpers.test.d.ts.map +1 -0
  20. package/dist/__tests__/lib/fs-helpers.test.js +183 -0
  21. package/dist/__tests__/lib/fs-helpers.test.js.map +1 -0
  22. package/dist/__tests__/lib/path-validation.test.d.ts +2 -0
  23. package/dist/__tests__/lib/path-validation.test.d.ts.map +1 -0
  24. package/dist/__tests__/lib/path-validation.test.js +103 -0
  25. package/dist/__tests__/lib/path-validation.test.js.map +1 -0
  26. package/dist/__tests__/path-validation.test.d.ts +2 -0
  27. package/dist/__tests__/path-validation.test.d.ts.map +1 -0
  28. package/dist/__tests__/path-validation.test.js +92 -0
  29. package/dist/__tests__/path-validation.test.js.map +1 -0
  30. package/dist/config/types.d.ts +222 -0
  31. package/dist/config/types.d.ts.map +1 -0
  32. package/dist/config/types.js +23 -0
  33. package/dist/config/types.js.map +1 -0
  34. package/dist/index.d.ts +3 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +50 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/lib/constants.d.ts +16 -0
  39. package/dist/lib/constants.d.ts.map +1 -0
  40. package/dist/lib/constants.js +335 -0
  41. package/dist/lib/constants.js.map +1 -0
  42. package/dist/lib/errors.d.ts +33 -0
  43. package/dist/lib/errors.d.ts.map +1 -0
  44. package/dist/lib/errors.js +205 -0
  45. package/dist/lib/errors.js.map +1 -0
  46. package/dist/lib/file-operations.d.ts +69 -0
  47. package/dist/lib/file-operations.d.ts.map +1 -0
  48. package/dist/lib/file-operations.js +1003 -0
  49. package/dist/lib/file-operations.js.map +1 -0
  50. package/dist/lib/formatters.d.ts +30 -0
  51. package/dist/lib/formatters.d.ts.map +1 -0
  52. package/dist/lib/formatters.js +204 -0
  53. package/dist/lib/formatters.js.map +1 -0
  54. package/dist/lib/fs-helpers.d.ts +29 -0
  55. package/dist/lib/fs-helpers.d.ts.map +1 -0
  56. package/dist/lib/fs-helpers.js +295 -0
  57. package/dist/lib/fs-helpers.js.map +1 -0
  58. package/dist/lib/path-utils.d.ts +12 -0
  59. package/dist/lib/path-utils.d.ts.map +1 -0
  60. package/dist/lib/path-utils.js +34 -0
  61. package/dist/lib/path-utils.js.map +1 -0
  62. package/dist/lib/path-validation.d.ts +31 -0
  63. package/dist/lib/path-validation.d.ts.map +1 -0
  64. package/dist/lib/path-validation.js +181 -0
  65. package/dist/lib/path-validation.js.map +1 -0
  66. package/dist/lib/roots-utils.d.ts +7 -0
  67. package/dist/lib/roots-utils.d.ts.map +1 -0
  68. package/dist/lib/roots-utils.js +39 -0
  69. package/dist/lib/roots-utils.js.map +1 -0
  70. package/dist/lib/types.d.ts +6 -0
  71. package/dist/lib/types.d.ts.map +1 -0
  72. package/dist/lib/types.js +2 -0
  73. package/dist/lib/types.js.map +1 -0
  74. package/dist/schemas/common.d.ts +41 -0
  75. package/dist/schemas/common.d.ts.map +1 -0
  76. package/dist/schemas/common.js +21 -0
  77. package/dist/schemas/common.js.map +1 -0
  78. package/dist/schemas/index.d.ts +3 -0
  79. package/dist/schemas/index.d.ts.map +1 -0
  80. package/dist/schemas/index.js +5 -0
  81. package/dist/schemas/index.js.map +1 -0
  82. package/dist/schemas/inputs.d.ts +72 -0
  83. package/dist/schemas/inputs.d.ts.map +1 -0
  84. package/dist/schemas/inputs.js +326 -0
  85. package/dist/schemas/inputs.js.map +1 -0
  86. package/dist/schemas/outputs.d.ts +476 -0
  87. package/dist/schemas/outputs.d.ts.map +1 -0
  88. package/dist/schemas/outputs.js +181 -0
  89. package/dist/schemas/outputs.js.map +1 -0
  90. package/dist/server.d.ts +5 -0
  91. package/dist/server.d.ts.map +1 -0
  92. package/dist/server.js +83 -0
  93. package/dist/server.js.map +1 -0
  94. package/dist/tools/analyze-directory.d.ts +3 -0
  95. package/dist/tools/analyze-directory.d.ts.map +1 -0
  96. package/dist/tools/analyze-directory.js +57 -0
  97. package/dist/tools/analyze-directory.js.map +1 -0
  98. package/dist/tools/directory-tree.d.ts +3 -0
  99. package/dist/tools/directory-tree.d.ts.map +1 -0
  100. package/dist/tools/directory-tree.js +47 -0
  101. package/dist/tools/directory-tree.js.map +1 -0
  102. package/dist/tools/get-file-info.d.ts +3 -0
  103. package/dist/tools/get-file-info.d.ts.map +1 -0
  104. package/dist/tools/get-file-info.js +44 -0
  105. package/dist/tools/get-file-info.js.map +1 -0
  106. package/dist/tools/index.d.ts +3 -0
  107. package/dist/tools/index.d.ts.map +1 -0
  108. package/dist/tools/index.js +23 -0
  109. package/dist/tools/index.js.map +1 -0
  110. package/dist/tools/list-allowed-dirs.d.ts +3 -0
  111. package/dist/tools/list-allowed-dirs.d.ts.map +1 -0
  112. package/dist/tools/list-allowed-dirs.js +23 -0
  113. package/dist/tools/list-allowed-dirs.js.map +1 -0
  114. package/dist/tools/list-directory.d.ts +3 -0
  115. package/dist/tools/list-directory.d.ts.map +1 -0
  116. package/dist/tools/list-directory.js +60 -0
  117. package/dist/tools/list-directory.js.map +1 -0
  118. package/dist/tools/read-file.d.ts +3 -0
  119. package/dist/tools/read-file.d.ts.map +1 -0
  120. package/dist/tools/read-file.js +55 -0
  121. package/dist/tools/read-file.js.map +1 -0
  122. package/dist/tools/read-media-file.d.ts +3 -0
  123. package/dist/tools/read-media-file.d.ts.map +1 -0
  124. package/dist/tools/read-media-file.js +48 -0
  125. package/dist/tools/read-media-file.js.map +1 -0
  126. package/dist/tools/read-multiple-files.d.ts +3 -0
  127. package/dist/tools/read-multiple-files.d.ts.map +1 -0
  128. package/dist/tools/read-multiple-files.js +53 -0
  129. package/dist/tools/read-multiple-files.js.map +1 -0
  130. package/dist/tools/search-content.d.ts +3 -0
  131. package/dist/tools/search-content.d.ts.map +1 -0
  132. package/dist/tools/search-content.js +67 -0
  133. package/dist/tools/search-content.js.map +1 -0
  134. package/dist/tools/search-files.d.ts +3 -0
  135. package/dist/tools/search-files.d.ts.map +1 -0
  136. package/dist/tools/search-files.js +51 -0
  137. package/dist/tools/search-files.js.map +1 -0
  138. package/dist/utils/index.d.ts +2 -0
  139. package/dist/utils/index.d.ts.map +1 -0
  140. package/dist/utils/index.js +2 -0
  141. package/dist/utils/index.js.map +1 -0
  142. package/dist/utils/response-helpers.d.ts +22 -0
  143. package/dist/utils/response-helpers.d.ts.map +1 -0
  144. package/dist/utils/response-helpers.js +24 -0
  145. package/dist/utils/response-helpers.js.map +1 -0
  146. package/package.json +61 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-helpers.js","sourceRoot":"","sources":["../../src/lib/fs-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Normalize a path to a canonical, absolute form.
3
+ *
4
+ * - Expands ~ to home directory
5
+ * - Resolves to absolute path
6
+ * - On Windows, normalizes drive letter to lowercase for consistent comparison
7
+ *
8
+ * @param p - The path to normalize (relative or absolute)
9
+ * @returns The normalized absolute path
10
+ */
11
+ export declare function normalizePath(p: string): string;
12
+ //# sourceMappingURL=path-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-utils.d.ts","sourceRoot":"","sources":["../../src/lib/path-utils.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAU/C"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Path normalization utilities for cross-platform consistency.
3
+ */
4
+ import * as os from 'node:os';
5
+ import * as path from 'node:path';
6
+ /**
7
+ * Expand home directory shorthand (~/) to actual home path.
8
+ */
9
+ function expandHome(filepath) {
10
+ if (filepath.startsWith('~/') || filepath === '~') {
11
+ return path.join(os.homedir(), filepath.slice(1));
12
+ }
13
+ return filepath;
14
+ }
15
+ /**
16
+ * Normalize a path to a canonical, absolute form.
17
+ *
18
+ * - Expands ~ to home directory
19
+ * - Resolves to absolute path
20
+ * - On Windows, normalizes drive letter to lowercase for consistent comparison
21
+ *
22
+ * @param p - The path to normalize (relative or absolute)
23
+ * @returns The normalized absolute path
24
+ */
25
+ export function normalizePath(p) {
26
+ const expanded = expandHome(p);
27
+ const resolved = path.resolve(expanded);
28
+ // On Windows, normalize drive letter to lowercase (C: -> c:)
29
+ if (process.platform === 'win32' && /^[A-Z]:/.test(resolved)) {
30
+ return resolved.charAt(0).toLowerCase() + resolved.slice(1);
31
+ }
32
+ return resolved;
33
+ }
34
+ //# sourceMappingURL=path-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-utils.js","sourceRoot":"","sources":["../../src/lib/path-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC;;GAEG;AACH,SAAS,UAAU,CAAC,QAAgB;IAClC,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,CAAS;IACrC,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAExC,6DAA6D;IAC7D,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7D,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { Root } from '@modelcontextprotocol/sdk/types.js';
2
+ /**
3
+ * Set the list of directories that this server is allowed to access.
4
+ * All paths are normalized before storage.
5
+ */
6
+ export declare function setAllowedDirectories(dirs: string[]): void;
7
+ /**
8
+ * Get a copy of the current allowed directories list.
9
+ */
10
+ export declare function getAllowedDirectories(): string[];
11
+ interface ValidatedPathDetails {
12
+ /** Normalized version of the originally requested path (may still be a symlink). */
13
+ requestedPath: string;
14
+ /** Realpath-resolved absolute path (symlinks resolved). */
15
+ resolvedPath: string;
16
+ /** Whether the originally requested path is a symbolic link. */
17
+ isSymlink: boolean;
18
+ }
19
+ /**
20
+ * Like validateExistingPath(), but also returns the normalized requested path and whether it was a symlink.
21
+ * Useful for operations that need to report on symlinks without traversing them.
22
+ */
23
+ export declare function validateExistingPathDetailed(requestedPath: string): Promise<ValidatedPathDetails>;
24
+ export declare function validateExistingPath(requestedPath: string): Promise<string>;
25
+ /**
26
+ * Validates and extracts valid directory paths from MCP Root objects.
27
+ * Only file:// URIs pointing to existing directories are accepted.
28
+ */
29
+ export declare function getValidRootDirectories(roots: Root[]): Promise<string[]>;
30
+ export {};
31
+ //# sourceMappingURL=path-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-validation.d.ts","sourceRoot":"","sources":["../../src/lib/path-validation.ts"],"names":[],"mappings":"AAyCA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAQ/D;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAG1D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAEhD;AAyBD,UAAU,oBAAoB;IAC5B,oFAAoF;IACpF,aAAa,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,YAAY,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,SAAS,EAAE,OAAO,CAAC;CACpB;AA0GD;;;GAGG;AACH,wBAAsB,4BAA4B,CAChD,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,oBAAoB,CAAC,CAE/B;AAED,wBAAsB,oBAAoB,CACxC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,IAAI,EAAE,GACZ,OAAO,CAAC,MAAM,EAAE,CAAC,CAoCnB"}
@@ -0,0 +1,181 @@
1
+ /**
2
+ * Path validation and security module for filesystem access control.
3
+ *
4
+ * This module is the SECURITY BOUNDARY of the MCP server.
5
+ * All filesystem operations MUST call validateExistingPath() before accessing any path.
6
+ *
7
+ * Security properties:
8
+ * - Prevents access to paths outside allowed directories
9
+ * - Prevents symlink escapes (validates both requested path and resolved realpath)
10
+ * - Normalizes paths consistently across platforms
11
+ *
12
+ * ## TOCTOU (Time-of-Check-Time-of-Use) Considerations
13
+ *
14
+ * This module validates paths at a point in time. Between validation and actual
15
+ * file operations, the filesystem state may change (race condition). This is an
16
+ * inherent limitation of path-based filesystem access that cannot be fully mitigated
17
+ * without kernel-level support.
18
+ *
19
+ * **Mitigations applied:**
20
+ * 1. **Symlink resolution**: We resolve symlinks during validation via `fs.realpath()`,
21
+ * ensuring the resolved target is within allowed directories at validation time.
22
+ * 2. **Short validation window**: Validation is performed immediately before operations
23
+ * to minimize the race window.
24
+ * 3. **Read-only operations**: This server only performs read operations, limiting the
25
+ * impact of TOCTOU races (no data corruption risk).
26
+ *
27
+ * **Residual risks:**
28
+ * - A file could be replaced with a symlink between validation and read
29
+ * - A directory could be replaced with a symlink junction (Windows)
30
+ * - File permissions could change between validation and access
31
+ *
32
+ * **For higher security requirements:**
33
+ * - Use `O_NOFOLLOW` flag where supported (Linux)
34
+ * - Use file handles (`fs.open()`) and operate on handles instead of paths
35
+ * - Consider sandboxing at the OS level (containers, namespaces)
36
+ *
37
+ * @see https://cwe.mitre.org/data/definitions/367.html - CWE-367: TOCTOU Race Condition
38
+ */
39
+ import * as fs from 'node:fs/promises';
40
+ import { fileURLToPath } from 'node:url';
41
+ import { ErrorCode, McpError } from './errors.js';
42
+ import { normalizePath } from './path-utils.js';
43
+ /** Internal storage for allowed directories */
44
+ let allowedDirectories = [];
45
+ /**
46
+ * Set the list of directories that this server is allowed to access.
47
+ * All paths are normalized before storage.
48
+ */
49
+ export function setAllowedDirectories(dirs) {
50
+ const normalized = dirs.map(normalizePath).filter((d) => d.length > 0);
51
+ allowedDirectories = [...new Set(normalized)];
52
+ }
53
+ /**
54
+ * Get a copy of the current allowed directories list.
55
+ */
56
+ export function getAllowedDirectories() {
57
+ return [...allowedDirectories];
58
+ }
59
+ const PATH_SEPARATOR = process.platform === 'win32' ? '\\' : '/';
60
+ /**
61
+ * Normalize path for comparison (case-insensitive on Windows)
62
+ */
63
+ function normalizeForComparison(p) {
64
+ return process.platform === 'win32' ? p.toLowerCase() : p;
65
+ }
66
+ /**
67
+ * Check if a normalized path is within allowed directories.
68
+ */
69
+ function isPathWithinAllowedDirectories(normalizedPath) {
70
+ const candidate = normalizeForComparison(normalizedPath);
71
+ return allowedDirectories.some((allowedDir) => {
72
+ const allowed = normalizeForComparison(allowedDir);
73
+ // Exact match or is a child path
74
+ return (candidate === allowed || candidate.startsWith(allowed + PATH_SEPARATOR));
75
+ });
76
+ }
77
+ async function validateExistingPathDetailsInternal(requestedPath) {
78
+ // Validate input is not empty or only whitespace
79
+ if (!requestedPath || requestedPath.trim().length === 0) {
80
+ throw new McpError(ErrorCode.E_INVALID_INPUT, 'Path cannot be empty or whitespace', requestedPath);
81
+ }
82
+ const normalizedRequested = normalizePath(requestedPath);
83
+ if (!isPathWithinAllowedDirectories(normalizedRequested)) {
84
+ throw new McpError(ErrorCode.E_ACCESS_DENIED, `Access denied: Path '${requestedPath}' is outside allowed directories`, requestedPath, { normalizedPath: normalizedRequested });
85
+ }
86
+ let realPath;
87
+ try {
88
+ realPath = await fs.realpath(normalizedRequested);
89
+ }
90
+ catch (error) {
91
+ // Distinguish between different error types for better error messages
92
+ const nodeError = error;
93
+ if (nodeError.code === 'ENOENT') {
94
+ throw new McpError(ErrorCode.E_NOT_FOUND, `Path does not exist: ${requestedPath}`, requestedPath, { originalCode: nodeError.code }, error);
95
+ }
96
+ if (nodeError.code === 'EACCES' || nodeError.code === 'EPERM') {
97
+ throw new McpError(ErrorCode.E_PERMISSION_DENIED, `Permission denied accessing path: ${requestedPath}`, requestedPath, { originalCode: nodeError.code }, error);
98
+ }
99
+ if (nodeError.code === 'ELOOP') {
100
+ throw new McpError(ErrorCode.E_SYMLINK_NOT_ALLOWED, `Too many symbolic links in path: ${requestedPath}`, requestedPath, { originalCode: nodeError.code }, error);
101
+ }
102
+ if (nodeError.code === 'ENAMETOOLONG') {
103
+ throw new McpError(ErrorCode.E_INVALID_INPUT, `Path name too long: ${requestedPath}`, requestedPath, { originalCode: nodeError.code }, error);
104
+ }
105
+ // Generic fallback for other errors
106
+ throw new McpError(ErrorCode.E_NOT_FOUND, `Path is not accessible: ${requestedPath}`, requestedPath, { originalCode: nodeError.code, originalMessage: nodeError.message }, error);
107
+ }
108
+ const normalizedReal = normalizePath(realPath);
109
+ if (!isPathWithinAllowedDirectories(normalizedReal)) {
110
+ throw new McpError(ErrorCode.E_ACCESS_DENIED, `Access denied: Path '${requestedPath}' resolves to '${realPath}' which is outside allowed directories (symlink escape attempt)`, requestedPath, { resolvedPath: realPath, normalizedResolvedPath: normalizedReal });
111
+ }
112
+ // Detect if the *requested* path is a symlink without following it.
113
+ // Note: lstat runs after the allowed-directory string check above.
114
+ let isSymlink = false;
115
+ try {
116
+ const lstats = await fs.lstat(normalizedRequested);
117
+ isSymlink = lstats.isSymbolicLink();
118
+ }
119
+ catch {
120
+ // If lstat fails but realpath succeeded, treat as non-symlink.
121
+ // This can happen on some platforms/filesystems; safe default.
122
+ isSymlink = false;
123
+ }
124
+ return {
125
+ requestedPath: normalizedRequested,
126
+ resolvedPath: normalizedReal,
127
+ isSymlink,
128
+ };
129
+ }
130
+ /**
131
+ * Like validateExistingPath(), but also returns the normalized requested path and whether it was a symlink.
132
+ * Useful for operations that need to report on symlinks without traversing them.
133
+ */
134
+ export async function validateExistingPathDetailed(requestedPath) {
135
+ return validateExistingPathDetailsInternal(requestedPath);
136
+ }
137
+ export async function validateExistingPath(requestedPath) {
138
+ const details = await validateExistingPathDetailsInternal(requestedPath);
139
+ return details.resolvedPath;
140
+ }
141
+ /**
142
+ * Validates and extracts valid directory paths from MCP Root objects.
143
+ * Only file:// URIs pointing to existing directories are accepted.
144
+ */
145
+ export async function getValidRootDirectories(roots) {
146
+ const validDirs = [];
147
+ for (const root of roots) {
148
+ // Only accept file:// URIs
149
+ if (!root.uri.startsWith('file://')) {
150
+ console.error(`Skipping non-file:// root URI: ${root.uri}`);
151
+ continue;
152
+ }
153
+ try {
154
+ const dirPath = fileURLToPath(root.uri);
155
+ const normalizedPath = normalizePath(dirPath);
156
+ // Verify the directory exists and is accessible
157
+ const stats = await fs.stat(normalizedPath);
158
+ if (stats.isDirectory()) {
159
+ // Resolve symlinks to get the real path
160
+ try {
161
+ const realPath = await fs.realpath(normalizedPath);
162
+ validDirs.push(normalizePath(realPath));
163
+ }
164
+ catch {
165
+ // If realpath fails, use the normalized path
166
+ validDirs.push(normalizedPath);
167
+ }
168
+ }
169
+ else {
170
+ console.error(`Skipping root (not a directory): ${normalizedPath}`);
171
+ }
172
+ }
173
+ catch (error) {
174
+ const message = error instanceof Error ? error.message : String(error);
175
+ console.error(`Skipping inaccessible root ${root.uri}: ${message}`);
176
+ continue;
177
+ }
178
+ }
179
+ return validDirs;
180
+ }
181
+ //# sourceMappingURL=path-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-validation.js","sourceRoot":"","sources":["../../src/lib/path-validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { Root } from '@modelcontextprotocol/sdk/types.js';
2
+ /**
3
+ * Validates and extracts valid directory paths from MCP Root objects.
4
+ * Only file:// URIs pointing to existing directories are accepted.
5
+ */
6
+ export declare function getValidRootDirectories(roots: Root[]): Promise<string[]>;
7
+ //# sourceMappingURL=roots-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roots-utils.d.ts","sourceRoot":"","sources":["../../src/lib/roots-utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAI/D;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,IAAI,EAAE,GACZ,OAAO,CAAC,MAAM,EAAE,CAAC,CAgCnB"}
@@ -0,0 +1,39 @@
1
+ import * as fs from 'node:fs/promises';
2
+ import { fileURLToPath } from 'node:url';
3
+ import { normalizePath } from './path-utils.js';
4
+ /**
5
+ * Validates and extracts valid directory paths from MCP Root objects.
6
+ * Only file:// URIs pointing to existing directories are accepted.
7
+ */
8
+ export async function getValidRootDirectories(roots) {
9
+ const validDirs = [];
10
+ for (const root of roots) {
11
+ // Only accept file:// URIs
12
+ if (!root.uri.startsWith('file://')) {
13
+ continue;
14
+ }
15
+ try {
16
+ const dirPath = fileURLToPath(root.uri);
17
+ const normalizedPath = normalizePath(dirPath);
18
+ // Verify the directory exists and is accessible
19
+ const stats = await fs.stat(normalizedPath);
20
+ if (stats.isDirectory()) {
21
+ // Resolve symlinks to get the real path
22
+ try {
23
+ const realPath = await fs.realpath(normalizedPath);
24
+ validDirs.push(normalizePath(realPath));
25
+ }
26
+ catch {
27
+ // If realpath fails, use the normalized path
28
+ validDirs.push(normalizedPath);
29
+ }
30
+ }
31
+ }
32
+ catch {
33
+ // Skip invalid or inaccessible roots
34
+ continue;
35
+ }
36
+ }
37
+ return validDirs;
38
+ }
39
+ //# sourceMappingURL=roots-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roots-utils.js","sourceRoot":"","sources":["../../src/lib/roots-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIzC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,KAAa;IAEb,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,2BAA2B;QAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACpC,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;YAE9C,gDAAgD;YAChD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,wCAAwC;gBACxC,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;oBACnD,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC1C,CAAC;gBAAC,MAAM,CAAC;oBACP,6CAA6C;oBAC7C,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,qCAAqC;YACrC,SAAS;QACX,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @deprecated Import types directly from '../config/types.js' instead.
3
+ * This re-export exists only for backward compatibility.
4
+ */
5
+ export type { AnalyzeDirectoryResult, ContentMatch, DetailedError, DirectoryAnalysis, DirectoryEntry, DirectoryTreeResult, ErrorCode, ErrorResponse, FileInfo, FileType, ListDirectoryResult, MediaFileResult, SearchContentResult, SearchFilesResult, SearchResult, TreeEntry, } from '../config/types.js';
6
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,YAAY,EACV,sBAAsB,EACtB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,SAAS,EACT,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,SAAS,GACV,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,41 @@
1
+ import { z } from 'zod';
2
+ export declare const FileTypeSchema: z.ZodEnum<["file", "directory", "symlink", "other"]>;
3
+ export declare const ErrorSchema: z.ZodObject<{
4
+ code: z.ZodString;
5
+ message: z.ZodString;
6
+ path: z.ZodOptional<z.ZodString>;
7
+ suggestion: z.ZodOptional<z.ZodString>;
8
+ }, "strip", z.ZodTypeAny, {
9
+ code: string;
10
+ message: string;
11
+ path?: string | undefined;
12
+ suggestion?: string | undefined;
13
+ }, {
14
+ code: string;
15
+ message: string;
16
+ path?: string | undefined;
17
+ suggestion?: string | undefined;
18
+ }>;
19
+ /**
20
+ * Schema for tree entries - uses lazy evaluation for recursive structure.
21
+ * The base schema validates name, type, optional size, and optional children array.
22
+ */
23
+ declare const BaseTreeEntrySchema: z.ZodObject<{
24
+ name: z.ZodString;
25
+ type: z.ZodEnum<["file", "directory"]>;
26
+ size: z.ZodOptional<z.ZodNumber>;
27
+ }, "strip", z.ZodTypeAny, {
28
+ name: string;
29
+ type: "file" | "directory";
30
+ size?: number | undefined;
31
+ }, {
32
+ name: string;
33
+ type: "file" | "directory";
34
+ size?: number | undefined;
35
+ }>;
36
+ type TreeEntryType = z.infer<typeof BaseTreeEntrySchema> & {
37
+ children?: TreeEntryType[];
38
+ };
39
+ export declare const TreeEntrySchema: z.ZodType<TreeEntryType>;
40
+ export {};
41
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/schemas/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,cAAc,sDAAoD,CAAC;AAEhF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;EAKtB,CAAC;AAEH;;;GAGG;AACH,QAAA,MAAM,mBAAmB;;;;;;;;;;;;EAIvB,CAAC;AAEH,KAAK,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,GAAG;IACzD,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAGjD,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { z } from 'zod';
2
+ export const FileTypeSchema = z.enum(['file', 'directory', 'symlink', 'other']);
3
+ export const ErrorSchema = z.object({
4
+ code: z.string(),
5
+ message: z.string(),
6
+ path: z.string().optional(),
7
+ suggestion: z.string().optional(),
8
+ });
9
+ /**
10
+ * Schema for tree entries - uses lazy evaluation for recursive structure.
11
+ * The base schema validates name, type, optional size, and optional children array.
12
+ */
13
+ const BaseTreeEntrySchema = z.object({
14
+ name: z.string(),
15
+ type: z.enum(['file', 'directory']),
16
+ size: z.number().optional(),
17
+ });
18
+ export const TreeEntrySchema = BaseTreeEntrySchema.extend({
19
+ children: z.lazy(() => z.array(TreeEntrySchema).optional()),
20
+ });
21
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/schemas/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;AAEhF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC,CAAC;AAMH,MAAM,CAAC,MAAM,eAAe,GAC1B,mBAAmB,CAAC,MAAM,CAAC;IACzB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC;CAC5D,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { AnalyzeDirectoryInputSchema, DirectoryTreeInputSchema, GetFileInfoInputSchema, ListDirectoryInputSchema, ReadFileInputSchema, ReadMediaFileInputSchema, ReadMultipleFilesInputSchema, SearchContentInputSchema, SearchFilesInputSchema, } from './inputs.js';
2
+ export { AnalyzeDirectoryOutputSchema, DirectoryTreeOutputSchema, GetFileInfoOutputSchema, ListAllowedDirectoriesOutputSchema, ListDirectoryOutputSchema, ReadFileOutputSchema, ReadMediaFileOutputSchema, ReadMultipleFilesOutputSchema, SearchContentOutputSchema, SearchFilesOutputSchema, } from './outputs.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,EACxB,4BAA4B,EAC5B,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,4BAA4B,EAC5B,yBAAyB,EACzB,uBAAuB,EACvB,kCAAkC,EAClC,yBAAyB,EACzB,oBAAoB,EACpB,yBAAyB,EACzB,6BAA6B,EAC7B,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,5 @@
1
+ // Input schemas
2
+ export { AnalyzeDirectoryInputSchema, DirectoryTreeInputSchema, GetFileInfoInputSchema, ListDirectoryInputSchema, ReadFileInputSchema, ReadMediaFileInputSchema, ReadMultipleFilesInputSchema, SearchContentInputSchema, SearchFilesInputSchema, } from './inputs.js';
3
+ // Output schemas
4
+ export { AnalyzeDirectoryOutputSchema, DirectoryTreeOutputSchema, GetFileInfoOutputSchema, ListAllowedDirectoriesOutputSchema, ListDirectoryOutputSchema, ReadFileOutputSchema, ReadMediaFileOutputSchema, ReadMultipleFilesOutputSchema, SearchContentOutputSchema, SearchFilesOutputSchema, } from './outputs.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,EACxB,4BAA4B,EAC5B,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAErB,iBAAiB;AACjB,OAAO,EACL,4BAA4B,EAC5B,yBAAyB,EACzB,uBAAuB,EACvB,kCAAkC,EAClC,yBAAyB,EACzB,oBAAoB,EACpB,yBAAyB,EACzB,6BAA6B,EAC7B,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,72 @@
1
+ import { z } from 'zod';
2
+ export declare const ListDirectoryInputSchema: {
3
+ path: z.ZodString;
4
+ recursive: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
5
+ includeHidden: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
6
+ maxDepth: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
7
+ maxEntries: z.ZodOptional<z.ZodNumber>;
8
+ sortBy: z.ZodDefault<z.ZodOptional<z.ZodEnum<["name", "size", "modified", "type"]>>>;
9
+ includeSymlinkTargets: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
10
+ };
11
+ export declare const SearchFilesInputSchema: {
12
+ path: z.ZodString;
13
+ pattern: z.ZodString;
14
+ excludePatterns: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
15
+ maxResults: z.ZodOptional<z.ZodNumber>;
16
+ sortBy: z.ZodDefault<z.ZodOptional<z.ZodEnum<["name", "size", "modified", "path"]>>>;
17
+ maxDepth: z.ZodOptional<z.ZodNumber>;
18
+ };
19
+ export declare const ReadFileInputSchema: {
20
+ path: z.ZodString;
21
+ encoding: z.ZodDefault<z.ZodOptional<z.ZodEnum<["utf-8", "utf8", "ascii", "base64", "hex", "latin1"]>>>;
22
+ maxSize: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
23
+ lineStart: z.ZodOptional<z.ZodNumber>;
24
+ lineEnd: z.ZodOptional<z.ZodNumber>;
25
+ head: z.ZodOptional<z.ZodNumber>;
26
+ tail: z.ZodOptional<z.ZodNumber>;
27
+ };
28
+ export declare const ReadMultipleFilesInputSchema: {
29
+ paths: z.ZodArray<z.ZodString, "many">;
30
+ encoding: z.ZodDefault<z.ZodOptional<z.ZodEnum<["utf-8", "utf8", "ascii", "base64", "hex", "latin1"]>>>;
31
+ maxSize: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
32
+ head: z.ZodOptional<z.ZodNumber>;
33
+ tail: z.ZodOptional<z.ZodNumber>;
34
+ };
35
+ export declare const GetFileInfoInputSchema: {
36
+ path: z.ZodString;
37
+ };
38
+ export declare const SearchContentInputSchema: {
39
+ path: z.ZodString;
40
+ pattern: z.ZodString;
41
+ filePattern: z.ZodDefault<z.ZodOptional<z.ZodString>>;
42
+ excludePatterns: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
43
+ caseSensitive: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
44
+ maxResults: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
45
+ maxFileSize: z.ZodOptional<z.ZodNumber>;
46
+ maxFilesScanned: z.ZodOptional<z.ZodNumber>;
47
+ timeoutMs: z.ZodOptional<z.ZodNumber>;
48
+ skipBinary: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
49
+ contextLines: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
50
+ wholeWord: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
51
+ isLiteral: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
52
+ };
53
+ export declare const AnalyzeDirectoryInputSchema: {
54
+ path: z.ZodString;
55
+ maxDepth: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
56
+ topN: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
57
+ excludePatterns: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
58
+ includeHidden: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
59
+ };
60
+ export declare const DirectoryTreeInputSchema: {
61
+ path: z.ZodString;
62
+ maxDepth: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
63
+ excludePatterns: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
64
+ includeHidden: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
65
+ includeSize: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
66
+ maxFiles: z.ZodOptional<z.ZodNumber>;
67
+ };
68
+ export declare const ReadMediaFileInputSchema: {
69
+ path: z.ZodString;
70
+ maxSize: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
71
+ };
72
+ //# sourceMappingURL=inputs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputs.d.ts","sourceRoot":"","sources":["../../src/schemas/inputs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,eAAO,MAAM,wBAAwB;;;;;;;;CAoCpC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;CAmClC,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;CAgD/B,CAAC;AAEF,eAAO,MAAM,4BAA4B;;;;;;CAiCxC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;CAKlC,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;CAkFpC,CAAC;AAEF,eAAO,MAAM,2BAA2B;;;;;;CAgCvC,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;;;;CAoCpC,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;CAapC,CAAC"}