@j0hanz/filesystem-context-mcp 1.0.6 → 1.0.8

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 (97) hide show
  1. package/dist/config/types.d.ts +18 -1
  2. package/dist/config/types.d.ts.map +1 -1
  3. package/dist/instructions.md +145 -181
  4. package/dist/lib/directory-helpers.d.ts +5 -0
  5. package/dist/lib/directory-helpers.d.ts.map +1 -0
  6. package/dist/lib/directory-helpers.js +39 -0
  7. package/dist/lib/directory-helpers.js.map +1 -0
  8. package/dist/lib/file-operations.d.ts.map +1 -1
  9. package/dist/lib/file-operations.js +32 -265
  10. package/dist/lib/file-operations.js.map +1 -1
  11. package/dist/lib/formatters.d.ts +12 -0
  12. package/dist/lib/formatters.d.ts.map +1 -1
  13. package/dist/lib/formatters.js +27 -0
  14. package/dist/lib/formatters.js.map +1 -1
  15. package/dist/lib/fs-helpers.d.ts +2 -1
  16. package/dist/lib/fs-helpers.d.ts.map +1 -1
  17. package/dist/lib/fs-helpers.js +24 -6
  18. package/dist/lib/fs-helpers.js.map +1 -1
  19. package/dist/lib/mcp-logger.d.ts +11 -0
  20. package/dist/lib/mcp-logger.d.ts.map +1 -0
  21. package/dist/lib/mcp-logger.js +45 -0
  22. package/dist/lib/mcp-logger.js.map +1 -0
  23. package/dist/lib/path-validation.d.ts +1 -6
  24. package/dist/lib/path-validation.d.ts.map +1 -1
  25. package/dist/lib/path-validation.js.map +1 -1
  26. package/dist/lib/search-helpers.d.ts +13 -0
  27. package/dist/lib/search-helpers.d.ts.map +1 -0
  28. package/dist/lib/search-helpers.js +181 -0
  29. package/dist/lib/search-helpers.js.map +1 -0
  30. package/dist/lib/sorting.d.ts +12 -0
  31. package/dist/lib/sorting.d.ts.map +1 -0
  32. package/dist/lib/sorting.js +41 -0
  33. package/dist/lib/sorting.js.map +1 -0
  34. package/dist/prompts/analyze-codebase.d.ts.map +1 -1
  35. package/dist/prompts/analyze-codebase.js +124 -38
  36. package/dist/prompts/analyze-codebase.js.map +1 -1
  37. package/dist/prompts/filesystem-query.d.ts.map +1 -1
  38. package/dist/prompts/filesystem-query.js +123 -68
  39. package/dist/prompts/filesystem-query.js.map +1 -1
  40. package/dist/prompts/find-duplicates.d.ts.map +1 -1
  41. package/dist/prompts/find-duplicates.js +56 -47
  42. package/dist/prompts/find-duplicates.js.map +1 -1
  43. package/dist/prompts/project-overview.d.ts.map +1 -1
  44. package/dist/prompts/project-overview.js +106 -35
  45. package/dist/prompts/project-overview.js.map +1 -1
  46. package/dist/prompts/search-and-replace.d.ts.map +1 -1
  47. package/dist/prompts/search-and-replace.js +104 -57
  48. package/dist/prompts/search-and-replace.js.map +1 -1
  49. package/dist/prompts/shared.d.ts +11 -0
  50. package/dist/prompts/shared.d.ts.map +1 -0
  51. package/dist/prompts/shared.js +32 -0
  52. package/dist/prompts/shared.js.map +1 -0
  53. package/dist/resources/index.d.ts +3 -0
  54. package/dist/resources/index.d.ts.map +1 -0
  55. package/dist/resources/index.js +54 -0
  56. package/dist/resources/index.js.map +1 -0
  57. package/dist/schemas/inputs.d.ts.map +1 -1
  58. package/dist/schemas/inputs.js +11 -7
  59. package/dist/schemas/inputs.js.map +1 -1
  60. package/dist/schemas/outputs.d.ts +10 -8
  61. package/dist/schemas/outputs.d.ts.map +1 -1
  62. package/dist/schemas/outputs.js +2 -0
  63. package/dist/schemas/outputs.js.map +1 -1
  64. package/dist/server.d.ts.map +1 -1
  65. package/dist/server.js +22 -15
  66. package/dist/server.js.map +1 -1
  67. package/dist/tools/analyze-directory.d.ts.map +1 -1
  68. package/dist/tools/analyze-directory.js +12 -5
  69. package/dist/tools/analyze-directory.js.map +1 -1
  70. package/dist/tools/directory-tree.d.ts.map +1 -1
  71. package/dist/tools/directory-tree.js +15 -3
  72. package/dist/tools/directory-tree.js.map +1 -1
  73. package/dist/tools/get-file-info.d.ts.map +1 -1
  74. package/dist/tools/get-file-info.js +4 -1
  75. package/dist/tools/get-file-info.js.map +1 -1
  76. package/dist/tools/list-allowed-dirs.d.ts.map +1 -1
  77. package/dist/tools/list-allowed-dirs.js +15 -2
  78. package/dist/tools/list-allowed-dirs.js.map +1 -1
  79. package/dist/tools/list-directory.d.ts.map +1 -1
  80. package/dist/tools/list-directory.js +15 -8
  81. package/dist/tools/list-directory.js.map +1 -1
  82. package/dist/tools/read-file.d.ts.map +1 -1
  83. package/dist/tools/read-file.js +6 -2
  84. package/dist/tools/read-file.js.map +1 -1
  85. package/dist/tools/read-media-file.d.ts.map +1 -1
  86. package/dist/tools/read-media-file.js +4 -1
  87. package/dist/tools/read-media-file.js.map +1 -1
  88. package/dist/tools/read-multiple-files.d.ts.map +1 -1
  89. package/dist/tools/read-multiple-files.js +6 -2
  90. package/dist/tools/read-multiple-files.js.map +1 -1
  91. package/dist/tools/search-content.d.ts.map +1 -1
  92. package/dist/tools/search-content.js +42 -5
  93. package/dist/tools/search-content.js.map +1 -1
  94. package/dist/tools/search-files.d.ts.map +1 -1
  95. package/dist/tools/search-files.js +14 -5
  96. package/dist/tools/search-files.js.map +1 -1
  97. package/package.json +1 -1
@@ -149,7 +149,7 @@ export interface DetailedError {
149
149
  details?: Record<string, unknown>;
150
150
  }
151
151
  export interface ErrorResponse {
152
- [x: string]: unknown;
152
+ [key: string]: unknown;
153
153
  content: {
154
154
  type: 'text';
155
155
  text: string;
@@ -177,4 +177,21 @@ export interface ImageDimensions {
177
177
  height: number;
178
178
  }
179
179
  export type ImageParser = (buffer: Buffer) => ImageDimensions | null;
180
+ export interface ValidatedPathDetails {
181
+ requestedPath: string;
182
+ resolvedPath: string;
183
+ isSymlink: boolean;
184
+ }
185
+ export interface ScanFileResult {
186
+ matches: ContentMatch[];
187
+ linesSkippedDueToRegexTimeout: number;
188
+ fileHadMatches: boolean;
189
+ }
190
+ export interface ParallelResult<R> {
191
+ results: R[];
192
+ errors: {
193
+ index: number;
194
+ error: Error;
195
+ }[];
196
+ }
180
197
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
@@ -1,245 +1,209 @@
1
1
  # Filesystem Context MCP Server
2
2
 
3
- > **Read-only** filesystem tools for exploring directories, searching files, and analyzing codebases. All operations are safe and idempotent.
3
+ > **Read-only** tools for exploring directories, searching files, and analyzing codebases via the [Model Context Protocol (MCP)](https://modelcontextprotocol.io/).
4
4
 
5
- ---
6
-
7
- ## Tool Selection Guide
5
+ This server enables AI assistants to safely explore and analyze filesystem contents without modification capabilities. All operations are sandboxed to explicitly allowed directories.
8
6
 
9
- ### Which Tool Should I Use?
7
+ ---
10
8
 
11
- | Goal | Tool | Key Parameters |
12
- | --------------------------------- | -------------------------- | ------------------------------------------------- |
13
- | See what directories I can access | `list_allowed_directories` | _(none)_ |
14
- | Visualize project structure | `directory_tree` | `maxDepth`, `excludePatterns`, `includeSize` |
15
- | List directory contents | `list_directory` | `recursive`, `sortBy`, `maxEntries` |
16
- | Get directory statistics | `analyze_directory` | `topN`, `excludePatterns` |
17
- | Find files by name/pattern | `search_files` | `pattern` (glob), `excludePatterns`, `maxResults` |
18
- | Search inside file contents | `search_content` | `pattern` (regex), `filePattern`, `contextLines` |
19
- | Read a single file | `read_file` | `head`, `tail`, `lineStart`/`lineEnd` |
20
- | Read multiple files | `read_multiple_files` | `paths[]`, `head`, `tail` |
21
- | Get file metadata | `get_file_info` | _(path only)_ |
22
- | Read images/binary files | `read_media_file` | `maxSize` |
9
+ ## Quick Reference
10
+
11
+ | Goal | Tool | Key Parameters |
12
+ | ------------------- | -------------------------- | ----------------------------------- |
13
+ | Check access | `list_allowed_directories` | |
14
+ | Project structure | `directory_tree` | `maxDepth`, `excludePatterns` |
15
+ | List contents | `list_directory` | `recursive`, `sortBy` |
16
+ | Directory stats | `analyze_directory` | `topN`, `excludePatterns` |
17
+ | Find files | `search_files` | `pattern` (glob), `maxResults` |
18
+ | Search in files | `search_content` | `pattern` (regex), `contextLines` |
19
+ | Read file | `read_file` | `head`, `tail`, `lineStart/lineEnd` |
20
+ | Read multiple files | `read_multiple_files` | `paths[]` — **preferred for 2+** |
21
+ | File metadata | `get_file_info` | `path` |
22
+ | Binary/media files | `read_media_file` | `maxSize` |
23
23
 
24
24
  ---
25
25
 
26
- ## Quick Start Workflow
26
+ ## Workflows
27
27
 
28
- **Always start here:**
28
+ ### Project Discovery
29
29
 
30
30
  ```text
31
- 1. list_allowed_directories Know your boundaries
32
- 2. directory_tree(path, maxDepth=3) → See project structure
33
- 3. analyze_directory(path) → Get statistics
31
+ list_allowed_directoriesdirectory_tree(maxDepth=3) analyze_directory → read_multiple_files([package.json, README.md])
34
32
  ```
35
33
 
36
- ---
34
+ ### Find & Read Code
37
35
 
38
- ## Tool Reference
36
+ ```text
37
+ search_files(pattern="**/*.ts") → read_multiple_files([...results])
38
+ ```
39
39
 
40
- ### `list_allowed_directories`
40
+ ### Search Patterns
41
41
 
42
- Returns all directories this server can access. **Call first** to understand scope.
42
+ ```text
43
+ search_content(pattern="TODO|FIXME", filePattern="**/*.ts", contextLines=2)
44
+ ```
43
45
 
44
- ### `directory_tree`
46
+ ### Common Glob Patterns
45
47
 
46
- Returns a JSON tree structure—ideal for AI parsing.
48
+ | Pattern | Matches |
49
+ | --------------------- | ----------------------------------------- |
50
+ | `**/*.ts` | All TypeScript files |
51
+ | `src/**/*.{js,jsx}` | JS/JSX files under `src/` |
52
+ | `**/test/**` | All files in any `test/` directory |
53
+ | `**/*.test.ts` | Test files by naming convention |
54
+ | `!**/node_modules/**` | Exclude `node_modules/` (use in excludes) |
47
55
 
48
- | Parameter | Type | Default | Description |
49
- | ----------------- | -------- | ------- | --------------------------- |
50
- | `path` | string | — | Directory to visualize |
51
- | `maxDepth` | number | 5 | How deep to traverse (0-50) |
52
- | `excludePatterns` | string[] | [] | Glob patterns to skip |
53
- | `includeHidden` | boolean | false | Include dotfiles |
54
- | `includeSize` | boolean | false | Show file sizes |
55
- | `maxFiles` | number | — | Limit total files returned |
56
+ ---
56
57
 
57
- **Example:** `directory_tree(path, maxDepth=3, excludePatterns=["node_modules", "dist"])`
58
+ ## Best Practices
58
59
 
59
- ### `list_directory`
60
+ **Do:**
60
61
 
61
- Flat listing with metadata. Use for detailed file information.
62
+ - Use `read_multiple_files` for 2+ files (parallel, resilient)
63
+ - Set `maxResults`, `maxDepth`, `maxEntries` limits
64
+ - Use `excludePatterns=["node_modules", ".git", "dist"]`
65
+ - Preview with `head=50` before full reads
62
66
 
63
- | Parameter | Type | Default | Description |
64
- | --------------- | ------- | ------- | ---------------------------------- |
65
- | `path` | string | — | Directory to list |
66
- | `recursive` | boolean | false | Include subdirectories |
67
- | `sortBy` | enum | "name" | `name`, `size`, `modified`, `type` |
68
- | `maxDepth` | number | 10 | Depth limit when recursive |
69
- | `maxEntries` | number | — | Limit results (up to 100,000) |
70
- | `includeHidden` | boolean | false | Include dotfiles |
67
+ **Don't:**
71
68
 
72
- ### `analyze_directory`
69
+ - Loop `read_file` — batch with `read_multiple_files`
70
+ - Recursive search without `maxDepth`
71
+ - Search without `maxResults` on large codebases
73
72
 
74
- Statistics: file counts, sizes, types, largest files, recent changes.
73
+ ## Tool Details
75
74
 
76
- | Parameter | Type | Default | Description |
77
- | ----------------- | -------- | ------- | ------------------------------ |
78
- | `path` | string | — | Directory to analyze |
79
- | `maxDepth` | number | 10 | How deep to analyze |
80
- | `topN` | number | 10 | Number of largest/recent files |
81
- | `excludePatterns` | string[] | [] | Patterns to skip |
82
- | `includeHidden` | boolean | false | Include dotfiles |
75
+ ### `directory_tree`
83
76
 
84
- ### `search_files`
77
+ JSON tree structure for AI parsing.
85
78
 
86
- Find files by glob pattern. Returns paths, sizes, and modification dates.
79
+ | Parameter | Default | Description |
80
+ | ----------------- | ------- | --------------------- |
81
+ | `path` | — | Directory path |
82
+ | `maxDepth` | 5 | Depth limit (0-50) |
83
+ | `excludePatterns` | [] | Glob patterns to skip |
84
+ | `includeHidden` | false | Include dotfiles |
85
+ | `includeSize` | false | Show file sizes |
86
+ | `maxFiles` | — | Limit total files |
87
87
 
88
- | Parameter | Type | Default | Description |
89
- | ----------------- | -------- | ------- | -------------------------------------- |
90
- | `path` | string | — | Base directory |
91
- | `pattern` | string | — | **Glob**: `**/*.ts`, `src/**/test*.js` |
92
- | `excludePatterns` | string[] | [] | Patterns to skip |
93
- | `maxResults` | number | — | Limit results (up to 10,000) |
94
- | `maxDepth` | number | — | Depth limit |
95
- | `sortBy` | enum | "path" | `name`, `size`, `modified`, `path` |
88
+ ### `search_files`
96
89
 
97
- **Common patterns:**
90
+ Find files by glob pattern.
98
91
 
99
- - `**/*.ts` All TypeScript files
100
- - `src/**/*.{js,jsx}` JS/JSX in src
101
- - `**/test/**`All test directories
102
- - `**/*.test.ts` — Test files by convention
92
+ | Parameter | Default | Description |
93
+ | ----------------- | ------- | ------------------------- |
94
+ | `path` | | Base directory |
95
+ | `pattern` | | Glob: `**/*.ts`, `src/**` |
96
+ | `excludePatterns` | [] | Patterns to skip |
97
+ | `maxResults` | — | Limit (up to 10,000) |
98
+ | `sortBy` | "path" | `name/size/modified/path` |
103
99
 
104
100
  ### `search_content`
105
101
 
106
- Grep-like search inside files. Returns matching lines with context.
107
-
108
- | Parameter | Type | Default | Description |
109
- | ----------------- | -------- | ------- | --------------------------------------- |
110
- | `path` | string | — | Base directory |
111
- | `pattern` | string | — | **Regex**: `TODO\|FIXME`, `function\s+` |
112
- | `filePattern` | string | `**/*` | Glob to filter files |
113
- | `excludePatterns` | string[] | [] | Patterns to skip |
114
- | `caseSensitive` | boolean | false | Case-sensitive matching |
115
- | `wholeWord` | boolean | false | Match whole words only |
116
- | `isLiteral` | boolean | false | Treat pattern as literal (not regex) |
117
- | `contextLines` | number | 0 | Lines before/after match (0-10) |
118
- | `maxResults` | number | 100 | Limit matches |
119
- | `maxFilesScanned` | number | — | Limit files to scan |
120
- | `maxFileSize` | number | 1MB | Skip files larger than this |
121
- | `timeoutMs` | number | — | Operation timeout |
122
- | `skipBinary` | boolean | true | Skip binary files |
123
-
124
- **Example:** `search_content(path, pattern="export (function|class)", filePattern="**/*.ts", contextLines=2)`
102
+ Grep-like regex search in files.
103
+
104
+ | Parameter | Default | Description |
105
+ | --------------- | ------- | ------------------------- |
106
+ | `path` | — | Base directory |
107
+ | `pattern` | — | Regex: `TODO\|FIXME` |
108
+ | `filePattern` | `**/*` | Glob filter |
109
+ | `contextLines` | 0 | Lines before/after (0-10) |
110
+ | `caseSensitive` | false | Case matching |
111
+ | `wholeWord` | false | Word boundaries |
112
+ | `isLiteral` | false | Escape regex |
113
+ | `maxResults` | 100 | Limit matches |
114
+ | `skipBinary` | true | Skip binary files |
125
115
 
126
116
  ### `read_file`
127
117
 
128
- Read a single file with optional line selection.
118
+ Read single file with line selection.
129
119
 
130
- | Parameter | Type | Default | Description |
131
- | ----------- | ------ | ------- | ------------------------------------------- |
132
- | `path` | string | — | File to read |
133
- | `encoding` | enum | "utf-8" | `utf-8`, `ascii`, `base64`, `hex`, `latin1` |
134
- | `maxSize` | number | 10MB | Maximum file size |
135
- | `head` | number | — | Read first N lines only |
136
- | `tail` | number | — | Read last N lines only |
137
- | `lineStart` | number | — | Start line (1-indexed) |
138
- | `lineEnd` | number | — | End line (inclusive) |
120
+ | Parameter | Default | Description |
121
+ | ----------- | ------- | ------------------------------- |
122
+ | `path` | — | File path |
123
+ | `encoding` | utf-8 | `utf-8/ascii/base64/hex/latin1` |
124
+ | `maxSize` | 10MB | Size limit |
125
+ | `head` | — | First N lines |
126
+ | `tail` | — | Last N lines |
127
+ | `lineStart` | — | Start line (1-indexed) |
128
+ | `lineEnd` | — | End line (inclusive) |
139
129
 
140
- **⚠️ Cannot combine:** `head`/`tail` with `lineStart`/`lineEnd`
130
+ > ⚠️ Cannot combine `head/tail` with `lineStart/lineEnd`
141
131
 
142
132
  ### `read_multiple_files`
143
133
 
144
- **Preferred for 2+ files** runs in parallel, individual failures don't block others.
134
+ Parallel batch reads — failures don't block others.
145
135
 
146
- | Parameter | Type | Default | Description |
147
- | ---------- | -------- | ------- | ----------------------- |
148
- | `paths` | string[] | — | Files to read (max 100) |
149
- | `encoding` | enum | "utf-8" | Encoding for all files |
150
- | `maxSize` | number | 10MB | Max size per file |
151
- | `head` | number | — | First N lines from each |
152
- | `tail` | number | — | Last N lines from each |
136
+ | Parameter | Default | Description |
137
+ | ---------- | ------- | ------------------ |
138
+ | `paths` | — | Array (max 100) |
139
+ | `encoding` | utf-8 | Encoding for all |
140
+ | `maxSize` | 10MB | Per-file limit |
141
+ | `head` | — | First N lines each |
142
+ | `tail` | — | Last N lines each |
153
143
 
154
- ### `get_file_info`
155
-
156
- Metadata only: size, timestamps, permissions, MIME type.
157
-
158
- | Parameter | Type | Description |
159
- | --------- | ------ | ----------------- |
160
- | `path` | string | File or directory |
161
-
162
- ### `read_media_file`
163
-
164
- Returns binary files as base64 with MIME type. Includes image dimensions.
165
-
166
- | Parameter | Type | Default | Description |
167
- | --------- | ------ | ------- | ------------------ |
168
- | `path` | string | — | Path to media file |
169
- | `maxSize` | number | 50MB | Maximum file size |
170
-
171
- ---
172
-
173
- ## Efficiency Best Practices
174
-
175
- ### ✅ Do
176
-
177
- - **Batch reads**: Use `read_multiple_files` for 2+ files
178
- - **Limit scope**: Always set `maxResults`, `maxDepth`, `maxEntries`
179
- - **Exclude noise**: Use `excludePatterns=["node_modules", ".git", "dist"]`
180
- - **Preview large files**: Use `head=50` or `tail=50` before full read
181
- - **Search then read**: `search_files` → `read_multiple_files`
144
+ ### `list_directory`
182
145
 
183
- ### Don't
146
+ Flat listing with metadata.
184
147
 
185
- - Call `read_file` in a loop — use `read_multiple_files`
186
- - Use `recursive=true` without `maxDepth` on large directories
187
- - Search with `maxResults` unset on large codebases
188
- - Read entire large files when you only need a section
148
+ | Parameter | Default | Description |
149
+ | ------------ | ------- | ------------------------- |
150
+ | `path` | — | Directory path |
151
+ | `recursive` | false | Include subdirs |
152
+ | `sortBy` | "name" | `name/size/modified/type` |
153
+ | `maxDepth` | 10 | Depth when recursive |
154
+ | `maxEntries` | — | Limit (up to 100,000) |
189
155
 
190
- ---
156
+ ### `analyze_directory`
191
157
 
192
- ## Common Workflows
158
+ Statistics: counts, sizes, types, largest/recent files.
193
159
 
194
- ### Project Discovery
160
+ | Parameter | Default | Description |
161
+ | ----------------- | ------- | ------------------ |
162
+ | `path` | — | Directory path |
163
+ | `maxDepth` | 10 | Analysis depth |
164
+ | `topN` | 10 | Top largest/recent |
165
+ | `excludePatterns` | [] | Patterns to skip |
195
166
 
196
- ```text
197
- list_allowed_directories
198
- directory_tree(path, maxDepth=3, excludePatterns=["node_modules",".git"])
199
- analyze_directory(path, excludePatterns=["node_modules"])
200
- read_multiple_files([package.json, README.md, tsconfig.json])
201
- ```
167
+ ### `read_media_file`
202
168
 
203
- ### Find and Read Code
169
+ Binary files as base64 with MIME type and dimensions.
204
170
 
205
- ```text
206
- search_files(path, pattern="**/*.service.ts")
207
- read_multiple_files([...results])
208
- ```
171
+ | Parameter | Default | Description |
172
+ | --------- | ------- | --------------- |
173
+ | `path` | — | Media file path |
174
+ | `maxSize` | 50MB | Size limit |
209
175
 
210
- ### Search Code Patterns
176
+ ### `get_file_info`
211
177
 
212
- ```text
213
- search_content(path, pattern="async function", filePattern="**/*.ts", contextLines=2)
214
- ```
178
+ Detailed metadata about a file or directory.
215
179
 
216
- ### Investigate Large Files
180
+ | Parameter | Default | Description |
181
+ | --------- | ------- | ------------------------- |
182
+ | `path` | — | Path to file or directory |
217
183
 
218
- ```text
219
- analyze_directory(path) → See largestFiles
220
- get_file_info(largefile) → Check exact size
221
- read_file(largefile, head=100) → Preview beginning
222
- ```
184
+ **Returns:** name, path, type, size, created, modified, accessed, permissions, isHidden, mimeType, symlinkTarget (if applicable).
223
185
 
224
186
  ---
225
187
 
226
- ## Error Recovery
188
+ ## Error Codes
227
189
 
228
- | Error Code | Meaning | Solution |
229
- | ------------------- | ----------------------------- | ------------------------------------------- |
230
- | `E_ACCESS_DENIED` | Path outside allowed dirs | Run `list_allowed_directories` |
231
- | `E_NOT_FOUND` | Path doesn't exist | Use `list_directory` to explore |
232
- | `E_NOT_FILE` | Expected file, got directory | Use `list_directory` or `directory_tree` |
233
- | `E_NOT_DIRECTORY` | Expected directory, got file | Use `read_file` or `get_file_info` |
234
- | `E_TOO_LARGE` | File exceeds size limit | Use `head`/`tail` or increase `maxSize` |
235
- | `E_BINARY_FILE` | Binary file in text operation | Use `read_media_file` instead |
236
- | `E_TIMEOUT` | Operation too slow | Reduce `maxResults`, `maxDepth`, `maxFiles` |
237
- | `E_INVALID_PATTERN` | Bad glob/regex syntax | Check pattern syntax |
190
+ | Code | Cause | Solution |
191
+ | --------------------- | ---------------------------- | ------------------------------------- |
192
+ | `E_ACCESS_DENIED` | Path outside allowed dirs | Check `list_allowed_directories` |
193
+ | `E_NOT_FOUND` | Path doesn't exist | Verify path with `list_directory` |
194
+ | `E_NOT_FILE` | Expected file, got directory | Use `list_directory` instead |
195
+ | `E_NOT_DIRECTORY` | Expected directory, got file | Use `read_file` instead |
196
+ | `E_TOO_LARGE` | File exceeds size limit | Use `head/tail` or increase `maxSize` |
197
+ | `E_BINARY_FILE` | Binary in text operation | Use `read_media_file` |
198
+ | `E_TIMEOUT` | Operation took too long | Reduce limits |
199
+ | `E_INVALID_PATTERN` | Malformed glob/regex | Check glob/regex syntax |
200
+ | `E_PERMISSION_DENIED` | OS-level access denied | Check file permissions |
238
201
 
239
202
  ---
240
203
 
241
- ## Security Notes
204
+ ## Security
242
205
 
243
- - **Read-only**: No writes, deletes, or modifications possible
244
- - **Path validation**: Symlinks cannot escape allowed directories
245
- - **Binary detection**: Prevents accidental large base64 in text output
206
+ - **Read-only** no writes, deletes, or modifications
207
+ - **Path validation** symlinks cannot escape allowed directories
208
+ - **Binary detection** prevents accidental base64 bloat
209
+ - **Input sanitization** — patterns validated for ReDoS protection
@@ -0,0 +1,5 @@
1
+ export declare function createExcludeMatcher(excludePatterns: string[]): (name: string, relativePath: string) => boolean;
2
+ export declare function handleDirectoryError(_error: unknown): void;
3
+ export declare function classifyAccessError(error: unknown): 'symlink' | 'inaccessible';
4
+ export declare function insertSorted<T>(arr: T[], item: T, compare: (a: T, b: T) => boolean, maxLen: number): void;
5
+ //# sourceMappingURL=directory-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directory-helpers.d.ts","sourceRoot":"","sources":["../../src/lib/directory-helpers.ts"],"names":[],"mappings":"AAKA,wBAAgB,oBAAoB,CAClC,eAAe,EAAE,MAAM,EAAE,GACxB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,OAAO,CAOjD;AAGD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAE1D;AAGD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,GACb,SAAS,GAAG,cAAc,CAS5B;AAGD,wBAAgB,YAAY,CAAC,CAAC,EAC5B,GAAG,EAAE,CAAC,EAAE,EACR,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,EAChC,MAAM,EAAE,MAAM,GACb,IAAI,CASN"}
@@ -0,0 +1,39 @@
1
+ import { Minimatch } from 'minimatch';
2
+ import { ErrorCode, McpError } from './errors.js';
3
+ // Create matcher from exclude patterns
4
+ export function createExcludeMatcher(excludePatterns) {
5
+ if (excludePatterns.length === 0) {
6
+ return () => false;
7
+ }
8
+ const matchers = excludePatterns.map((pattern) => new Minimatch(pattern));
9
+ return (name, relativePath) => matchers.some((m) => m.match(name) || m.match(relativePath));
10
+ }
11
+ // Handle directory operation errors (currently no-op)
12
+ export function handleDirectoryError(_error) {
13
+ void _error;
14
+ }
15
+ // Classify symlink/access errors for summary tracking
16
+ export function classifyAccessError(error) {
17
+ if (error instanceof McpError &&
18
+ (error.code === ErrorCode.E_ACCESS_DENIED ||
19
+ error.code === ErrorCode.E_SYMLINK_NOT_ALLOWED)) {
20
+ return 'symlink';
21
+ }
22
+ return 'inaccessible';
23
+ }
24
+ // Insert item into sorted array maintaining sort order (descending by comparator)
25
+ export function insertSorted(arr, item, compare, maxLen) {
26
+ if (maxLen <= 0)
27
+ return;
28
+ const idx = arr.findIndex((el) => compare(item, el));
29
+ if (idx === -1) {
30
+ if (arr.length < maxLen)
31
+ arr.push(item);
32
+ }
33
+ else {
34
+ arr.splice(idx, 0, item);
35
+ if (arr.length > maxLen)
36
+ arr.pop();
37
+ }
38
+ }
39
+ //# sourceMappingURL=directory-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directory-helpers.js","sourceRoot":"","sources":["../../src/lib/directory-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAElD,uCAAuC;AACvC,MAAM,UAAU,oBAAoB,CAClC,eAAyB;IAEzB,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC;IACrB,CAAC;IACD,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1E,OAAO,CAAC,IAAY,EAAE,YAAoB,EAAW,EAAE,CACrD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,oBAAoB,CAAC,MAAe;IAClD,KAAK,MAAM,CAAC;AACd,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,mBAAmB,CACjC,KAAc;IAEd,IACE,KAAK,YAAY,QAAQ;QACzB,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,eAAe;YACvC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,qBAAqB,CAAC,EACjD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,YAAY,CAC1B,GAAQ,EACR,IAAO,EACP,OAAgC,EAChC,MAAc;IAEd,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO;IACxB,MAAM,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IACrD,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;QACf,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACzB,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM;YAAE,GAAG,CAAC,GAAG,EAAE,CAAC;IACrC,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"file-operations.d.ts","sourceRoot":"","sources":["../../src/lib/file-operations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-operations.d.ts","sourceRoot":"","sources":["../../src/lib/file-operations.ts"],"names":[],"mappings":"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"}