@j0hanz/fs-context-mcp 2.1.4 → 2.1.5
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.
- package/README.md +46 -29
- package/dist/instructions.md +56 -34
- package/dist/lib/constants.d.ts +3 -0
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +46 -0
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/file-operations/read-multiple-files.d.ts.map +1 -1
- package/dist/lib/file-operations/read-multiple-files.js +1 -1
- package/dist/lib/file-operations/read-multiple-files.js.map +1 -1
- package/dist/lib/file-operations/search-content.d.ts +4 -0
- package/dist/lib/file-operations/search-content.d.ts.map +1 -1
- package/dist/lib/file-operations/search-content.js +15 -6
- package/dist/lib/file-operations/search-content.js.map +1 -1
- package/dist/lib/fs-helpers.d.ts.map +1 -1
- package/dist/lib/fs-helpers.js +5 -1
- package/dist/lib/fs-helpers.js.map +1 -1
- package/dist/lib/observability.d.ts.map +1 -1
- package/dist/lib/observability.js +42 -1
- package/dist/lib/observability.js.map +1 -1
- package/dist/lib/path-policy.d.ts +3 -0
- package/dist/lib/path-policy.d.ts.map +1 -0
- package/dist/lib/path-policy.js +69 -0
- package/dist/lib/path-policy.js.map +1 -0
- package/dist/lib/path-validation.d.ts +2 -0
- package/dist/lib/path-validation.d.ts.map +1 -1
- package/dist/lib/path-validation.js +18 -4
- package/dist/lib/path-validation.js.map +1 -1
- package/dist/schemas.d.ts +1 -0
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +11 -1
- package/dist/schemas.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +5 -18
- package/dist/server.js.map +1 -1
- package/dist/tools/list-directory.d.ts +4 -0
- package/dist/tools/list-directory.d.ts.map +1 -0
- package/dist/tools/list-directory.js +85 -0
- package/dist/tools/list-directory.js.map +1 -0
- package/dist/tools/read-multiple.d.ts +4 -0
- package/dist/tools/read-multiple.d.ts.map +1 -0
- package/dist/tools/read-multiple.js +109 -0
- package/dist/tools/read-multiple.js.map +1 -0
- package/dist/tools/read.d.ts +4 -0
- package/dist/tools/read.d.ts.map +1 -0
- package/dist/tools/read.js +92 -0
- package/dist/tools/read.js.map +1 -0
- package/dist/tools/roots.d.ts +4 -0
- package/dist/tools/roots.d.ts.map +1 -0
- package/dist/tools/roots.js +41 -0
- package/dist/tools/roots.js.map +1 -0
- package/dist/tools/search-content.d.ts +4 -0
- package/dist/tools/search-content.d.ts.map +1 -0
- package/dist/tools/search-content.js +156 -0
- package/dist/tools/search-content.js.map +1 -0
- package/dist/tools/search-files.d.ts +4 -0
- package/dist/tools/search-files.d.ts.map +1 -0
- package/dist/tools/search-files.js +82 -0
- package/dist/tools/search-files.js.map +1 -0
- package/dist/tools/shared.d.ts +61 -0
- package/dist/tools/shared.d.ts.map +1 -0
- package/dist/tools/shared.js +175 -0
- package/dist/tools/shared.js.map +1 -0
- package/dist/tools/stat-many.d.ts +4 -0
- package/dist/tools/stat-many.d.ts.map +1 -0
- package/dist/tools/stat-many.js +89 -0
- package/dist/tools/stat-many.js.map +1 -0
- package/dist/tools/stat.d.ts +4 -0
- package/dist/tools/stat.d.ts.map +1 -0
- package/dist/tools/stat.js +76 -0
- package/dist/tools/stat.js.map +1 -0
- package/dist/tools/tree.d.ts +4 -0
- package/dist/tools/tree.d.ts.map +1 -0
- package/dist/tools/tree.js +59 -0
- package/dist/tools/tree.js.map +1 -0
- package/dist/tools.d.ts +12 -31
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +19 -837
- package/dist/tools.js.map +1 -1
- package/package.json +13 -13
package/README.md
CHANGED
|
@@ -45,7 +45,7 @@ All operations are restricted to explicitly approved directories, with no write
|
|
|
45
45
|
### Search
|
|
46
46
|
|
|
47
47
|
- Content search across files using `grep`
|
|
48
|
-
- Respects `.gitignore` patterns and common ignore directories
|
|
48
|
+
- Respects root `.gitignore` patterns and common ignore directories
|
|
49
49
|
- Configurable search timeout and worker threads
|
|
50
50
|
|
|
51
51
|
### Security
|
|
@@ -54,6 +54,7 @@ All operations are restricted to explicitly approved directories, with no write
|
|
|
54
54
|
- Access restricted to explicitly approved directories
|
|
55
55
|
- Path traversal protection (blocks `..` and symlink escapes)
|
|
56
56
|
- RE2-based regex engine prevents ReDoS attacks
|
|
57
|
+
- Sensitive files (e.g., `.env`, `.npmrc`) are blocked by default; override via env allowlist
|
|
57
58
|
|
|
58
59
|
## When to Use
|
|
59
60
|
|
|
@@ -148,6 +149,7 @@ Notes:
|
|
|
148
149
|
|
|
149
150
|
- Windows drive-relative paths like `C:path` are rejected. Use `C:\path` or `C:/path`.
|
|
150
151
|
- Reserved Windows device names (e.g., `CON`, `NUL`) are blocked.
|
|
152
|
+
- If multiple roots are configured, tools require an explicit `path` to disambiguate.
|
|
151
153
|
|
|
152
154
|
## Configuration
|
|
153
155
|
|
|
@@ -155,16 +157,30 @@ All configuration is optional. Sizes in bytes, timeouts in milliseconds.
|
|
|
155
157
|
|
|
156
158
|
### Environment Variables
|
|
157
159
|
|
|
158
|
-
| Variable
|
|
159
|
-
|
|
|
160
|
-
| `MAX_FILE_SIZE`
|
|
161
|
-
| `MAX_READ_MANY_TOTAL_SIZE`
|
|
162
|
-
| `MAX_SEARCH_SIZE`
|
|
163
|
-
| `DEFAULT_SEARCH_TIMEOUT`
|
|
164
|
-
| `FS_CONTEXT_SEARCH_WORKERS`
|
|
160
|
+
| Variable | Default | Description |
|
|
161
|
+
| ---------------------------- | ----------------- | ----------------------------------------------------------------- |
|
|
162
|
+
| `MAX_FILE_SIZE` | 10MB | Max file size for read operations (range: 1MB-100MB) |
|
|
163
|
+
| `MAX_READ_MANY_TOTAL_SIZE` | 512KB | Max combined size for `read_many` (range: 10KB-100MB) |
|
|
164
|
+
| `MAX_SEARCH_SIZE` | 1MB | Max file size for content search (range: 100KB-10MB) |
|
|
165
|
+
| `DEFAULT_SEARCH_TIMEOUT` | 30000 | Timeout for search/list operations (range: 100-3600000ms) |
|
|
166
|
+
| `FS_CONTEXT_SEARCH_WORKERS` | min(cpu cores, 8) | Search worker threads (range: 0-16; 0 disables) |
|
|
167
|
+
| `FS_CONTEXT_ALLOW_SENSITIVE` | false | Allow reading sensitive files (set to `true` to disable denylist) |
|
|
168
|
+
| `FS_CONTEXT_DENYLIST` | (empty) | Additional denylist patterns (comma-separated globs) |
|
|
169
|
+
| `FS_CONTEXT_ALLOWLIST` | (empty) | Allowlist patterns that override denylist (comma-separated globs) |
|
|
170
|
+
| `FS_CONTEXT_TOOL_LOG_ERRORS` | false | Log tool failures to stderr with duration |
|
|
165
171
|
|
|
166
172
|
See [CONFIGURATION.md](CONFIGURATION.md) for examples and CLI usage.
|
|
167
173
|
|
|
174
|
+
### Sensitive File Policy
|
|
175
|
+
|
|
176
|
+
By default, reads and content searches are blocked for common secret filenames to reduce accidental leakage. The default denylist includes patterns like `.env`, `.npmrc`, `.aws/credentials`, `*.pem`, and `.mcpregistry_*_token`.
|
|
177
|
+
|
|
178
|
+
You can customize with:
|
|
179
|
+
|
|
180
|
+
- `FS_CONTEXT_ALLOW_SENSITIVE=true` to disable the default denylist.
|
|
181
|
+
- `FS_CONTEXT_DENYLIST` to add extra deny patterns (comma-separated globs using `*`).
|
|
182
|
+
- `FS_CONTEXT_ALLOWLIST` to allow specific paths even if they match the denylist.
|
|
183
|
+
|
|
168
184
|
## Resources
|
|
169
185
|
|
|
170
186
|
This server exposes standard MCP resources to provide static documentation and handle large content efficiently.
|
|
@@ -199,12 +215,12 @@ Returns: Allowed directory paths. Structured output includes `ok` and
|
|
|
199
215
|
### `ls`
|
|
200
216
|
|
|
201
217
|
List the immediate contents of a directory (non-recursive). Omit `path` to use
|
|
202
|
-
the
|
|
218
|
+
the sole allowed root (when only one root is configured).
|
|
203
219
|
|
|
204
|
-
| Parameter | Type | Required | Default
|
|
205
|
-
| --------------- | ------- | -------- |
|
|
206
|
-
| `path` | string | No | `
|
|
207
|
-
| `includeHidden` | boolean | No | `false`
|
|
220
|
+
| Parameter | Type | Required | Default | Description |
|
|
221
|
+
| --------------- | ------- | -------- | ----------- | ------------------------------------------------------- |
|
|
222
|
+
| `path` | string | No | `only root` | Directory path to list (omit when only one root exists) |
|
|
223
|
+
| `includeHidden` | boolean | No | `false` | Include hidden files and directories |
|
|
208
224
|
|
|
209
225
|
Returns: Entries with name, relativePath, type, size, and modified time.
|
|
210
226
|
Structured output includes `ok`, `path`, `entries`, and `totalEntries`.
|
|
@@ -213,21 +229,22 @@ Structured output includes `ok`, `path`, `entries`, and `totalEntries`.
|
|
|
213
229
|
|
|
214
230
|
### `find`
|
|
215
231
|
|
|
216
|
-
Search for files using glob patterns. Omit `path` to search from the
|
|
217
|
-
allowed root. By default, `find` excludes common dependency/build directories
|
|
232
|
+
Search for files using glob patterns. Omit `path` to search from the sole
|
|
233
|
+
allowed root (when only one root is configured). By default, `find` excludes common dependency/build directories
|
|
218
234
|
(node_modules, dist, .git, etc.); set `includeIgnored: true` to include ignored
|
|
219
235
|
directories and disable built-in excludes.
|
|
220
236
|
|
|
221
|
-
| Parameter | Type | Required | Default
|
|
222
|
-
| ---------------- | ------- | -------- |
|
|
223
|
-
| `path` | string | No | `
|
|
224
|
-
| `pattern` | string | Yes | -
|
|
225
|
-
| `includeIgnored` | boolean | No | `false`
|
|
226
|
-
| `maxResults` | number | No | `100`
|
|
237
|
+
| Parameter | Type | Required | Default | Description |
|
|
238
|
+
| ---------------- | ------- | -------- | ----------- | -------------------------------------------------------------- |
|
|
239
|
+
| `path` | string | No | `only root` | Base directory to search from (omit when only one root exists) |
|
|
240
|
+
| `pattern` | string | Yes | - | Glob pattern (e.g., `**/*.ts`, `src/**/*.js`) |
|
|
241
|
+
| `includeIgnored` | boolean | No | `false` | Include ignored dirs and disable built-in excludes |
|
|
242
|
+
| `maxResults` | number | No | `100` | Maximum matches to return (1-10000) |
|
|
227
243
|
|
|
228
244
|
Notes:
|
|
229
245
|
|
|
230
246
|
- When `includeIgnored=false`, results also respect a root `.gitignore` file (if present under the base `path`).
|
|
247
|
+
- Nested `.gitignore` files are not parsed.
|
|
231
248
|
|
|
232
249
|
Returns: Matching paths (relative) with size and modified date. Structured
|
|
233
250
|
output includes `ok`, `results`, `totalMatches`, and `truncated`.
|
|
@@ -236,10 +253,10 @@ output includes `ok`, `results`, `totalMatches`, and `truncated`.
|
|
|
236
253
|
|
|
237
254
|
### `tree`
|
|
238
255
|
|
|
239
|
-
Render a directory tree (bounded recursion). Omit `path` to use the
|
|
240
|
-
allowed root.
|
|
256
|
+
Render a directory tree (bounded recursion). Omit `path` to use the sole
|
|
257
|
+
allowed root (when only one root is configured).
|
|
241
258
|
|
|
242
|
-
- `path` (string, optional; default: `
|
|
259
|
+
- `path` (string, optional; default: `only root`): Base directory to render
|
|
243
260
|
- `maxDepth` (number, optional; default: `5`): Maximum recursion depth (0 = just the root)
|
|
244
261
|
- `maxEntries` (number, optional; default: `1000`): Maximum number of entries before truncating
|
|
245
262
|
- `includeHidden` (boolean, optional; default: `false`): Include hidden files/directories
|
|
@@ -340,11 +357,11 @@ Search for text content within files.
|
|
|
340
357
|
|
|
341
358
|
`pattern` is treated as a literal string and matched case-insensitively.
|
|
342
359
|
|
|
343
|
-
| Parameter | Type | Required | Default
|
|
344
|
-
| --------------- | ------- | -------- |
|
|
345
|
-
| `path` | string | No | `
|
|
346
|
-
| `pattern` | string | Yes | -
|
|
347
|
-
| `includeHidden` | boolean | No | `false`
|
|
360
|
+
| Parameter | Type | Required | Default | Description |
|
|
361
|
+
| --------------- | ------- | -------- | ----------- | ------------------------------------------------------------------------- |
|
|
362
|
+
| `path` | string | No | `only root` | Base directory or file path to search in (omit when only one root exists) |
|
|
363
|
+
| `pattern` | string | Yes | - | Text pattern to search for |
|
|
364
|
+
| `includeHidden` | boolean | No | `false` | Include hidden files and directories |
|
|
348
365
|
|
|
349
366
|
Example (search a single file):
|
|
350
367
|
|
package/dist/instructions.md
CHANGED
|
@@ -1,52 +1,74 @@
|
|
|
1
|
-
#
|
|
1
|
+
# fs-context Instructions
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> Guidance for the Agent: These instructions are available as a resource (`internal://instructions`) or prompt (`get-help`). Load them when you are unsure about tool usage.
|
|
4
4
|
|
|
5
5
|
## 1. Core Capability
|
|
6
6
|
|
|
7
|
-
- **Domain:** Read-only filesystem exploration, search, and inspection within allowed roots.
|
|
8
|
-
- **Primary Resources:**
|
|
9
|
-
- **Available Tools:** `roots`, `ls`, `tree`, `find`, `grep`, `read`, `read_many`, `stat`, `stat_many` (9 read-only tools).
|
|
7
|
+
- **Domain:** Read-only filesystem exploration, search, and inspection within explicitly allowed roots.
|
|
8
|
+
- **Primary Resources:** Directory trees, file content, metadata, and search results.
|
|
10
9
|
|
|
11
10
|
## 2. The "Golden Path" Workflows (Critical)
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
_Describe the standard order of operations using ONLY tools that exist._
|
|
14
13
|
|
|
15
|
-
### Workflow A:
|
|
14
|
+
### Workflow A: Discovery & Navigation
|
|
16
15
|
|
|
17
|
-
1. Call `roots` to confirm access.
|
|
18
|
-
2. Call `
|
|
19
|
-
|
|
20
|
-
> **Constraint:** Never assume a path; list or tree first.
|
|
16
|
+
1. Call `roots` to confirm designated access points.
|
|
17
|
+
2. Call `ls` (for single directory) or `tree` (for structure) to map layout.
|
|
18
|
+
> Constraint: Never guess paths. Always list first.
|
|
21
19
|
|
|
22
|
-
### Workflow B:
|
|
20
|
+
### Workflow B: Search & Retrieval
|
|
23
21
|
|
|
24
|
-
1. Call `find` to locate files by glob.
|
|
25
|
-
2. Call `grep` to
|
|
26
|
-
3. Call `read` (or `read_many`) to
|
|
27
|
-
>
|
|
22
|
+
1. Call `find` to locate files by name/glob pattern.
|
|
23
|
+
2. Call `grep` to find code by content/regex.
|
|
24
|
+
3. Call `read` (single) or `read_many` (batch) to inspect specific files.
|
|
25
|
+
> Constraint: Large readings return incomplete previews with resource URIs (`fs-context://result/...`).
|
|
28
26
|
|
|
29
|
-
|
|
27
|
+
## 3. Tool Nuances & Gotchas
|
|
30
28
|
|
|
31
|
-
|
|
32
|
-
2. Call `stat_many` for batch operations (up to 100 paths).
|
|
33
|
-
3. Use `tokenEstimate` field to gauge content size before reading.
|
|
34
|
-
> **Constraint:** `stat` does not read file content; use `read` for that.
|
|
29
|
+
_Do NOT repeat JSON schema. Focus on behavior and pitfalls._
|
|
35
30
|
|
|
36
|
-
|
|
31
|
+
- **`ls`**
|
|
32
|
+
- **Purpose:** Non-recursive directory listing.
|
|
33
|
+
- **Inputs:** `path` (relative to root). default: root.
|
|
34
|
+
- **Multi-root:** If multiple roots are configured, you must provide `path`.
|
|
35
|
+
- **Default filters:** Excludes common ignored directories (node_modules, dist, .git, etc). Set `includeIgnored=true` to include them.
|
|
36
|
+
- **Latency:** Fast.
|
|
37
|
+
- **Common failure modes:** `E_NOT_FOUND` if path incorrect.
|
|
37
38
|
|
|
38
|
-
- **`
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
|
|
46
|
-
-
|
|
39
|
+
- **`find`**
|
|
40
|
+
- **Purpose:** Recursive file search by globs.
|
|
41
|
+
- **Inputs:** `pattern` (glob like `**/*.ts`), `path` (base dir).
|
|
42
|
+
- **Multi-root:** If multiple roots are configured, you must provide `path`.
|
|
43
|
+
- **Side effects:** None.
|
|
44
|
+
- **Latency:** Scans disk; bounded by `maxResults` (default 100).
|
|
45
|
+
- **Gitignore scope:** Only the root `.gitignore` is applied (nested `.gitignore` is not parsed).
|
|
46
|
+
|
|
47
|
+
- **`grep`**
|
|
48
|
+
- **Purpose:** Content search using RE2 regex.
|
|
49
|
+
- **Inputs:** `pattern` (regex), `path` (base).
|
|
50
|
+
- **Limits:** Skips binaries & files >1MB. Truncates results >50 matches.
|
|
51
|
+
- **Multi-root:** If multiple roots are configured, you must provide `path`.
|
|
52
|
+
- **Sensitive files:** Access to common secret files is blocked by default. Override with `FS_CONTEXT_ALLOW_SENSITIVE=1` or add `FS_CONTEXT_ALLOWLIST`.
|
|
53
|
+
|
|
54
|
+
- **`read` / `read_many`**
|
|
55
|
+
- **Purpose:** Read file contents.
|
|
56
|
+
- **Inputs:** `path`/`paths`. Optional: `head` (first N lines) OR `startLine`/`endLine`.
|
|
57
|
+
- **Gotchas:** `head` is mutually exclusive with `startLine`/`endLine`. Large content returns `resourceUri` link.
|
|
58
|
+
- **Sensitive files:** Access to common secret files (e.g., `.env`, `.npmrc`) is blocked by default. Override with `FS_CONTEXT_ALLOW_SENSITIVE=1` or add `FS_CONTEXT_ALLOWLIST`.
|
|
59
|
+
|
|
60
|
+
- **`stat` / `stat_many`**
|
|
61
|
+
- **Purpose:** Metadata (size, modified, type) without content.
|
|
62
|
+
- **Inputs:** `path`/`paths`.
|
|
63
|
+
|
|
64
|
+
- **`tree`**
|
|
65
|
+
- **Purpose:** ASCII + JSON tree visualization.
|
|
66
|
+
- **Limits:** Max depth/entries apply. Good for high-level "glance".
|
|
67
|
+
- **Multi-root:** If multiple roots are configured, you must provide `path`.
|
|
47
68
|
|
|
48
69
|
## 4. Error Handling Strategy
|
|
49
70
|
|
|
50
|
-
- `E_ACCESS_DENIED`:
|
|
51
|
-
- `
|
|
52
|
-
- `E_TIMEOUT
|
|
71
|
+
- `E_ACCESS_DENIED`: You are trying to access a path outside allowed `roots`.
|
|
72
|
+
- `E_NOT_FOUND`: Re-run `ls` or `find` to verify the path exists.
|
|
73
|
+
- `E_TIMEOUT` / `E_UNKNOWN`: Reduce scope (subdir) or batch size.
|
|
74
|
+
- Resource Links (`fs-context://...`): Content was too large for inline. Read the provided URI to get full content.
|
package/dist/lib/constants.d.ts
CHANGED
|
@@ -14,6 +14,9 @@ export declare const DEFAULT_LIST_MAX_ENTRIES = 10000;
|
|
|
14
14
|
export declare const DEFAULT_SEARCH_MAX_FILES = 20000;
|
|
15
15
|
export declare const MAX_LINE_CONTENT_LENGTH = 200;
|
|
16
16
|
export declare const BINARY_CHECK_BUFFER_SIZE = 512;
|
|
17
|
+
export declare const DEFAULT_SENSITIVE_PATTERNS: readonly [".env", ".env.*", ".npmrc", ".pypirc", ".aws/credentials", ".aws/config", ".mcpregistry_*_token", "*.pem", "*.key", "*.p12", "*.pfx", "*.crt", "*.cer", "*id_rsa*", "*id_dsa*"];
|
|
18
|
+
export declare const SENSITIVE_FILE_DENYLIST: string[];
|
|
19
|
+
export declare const SENSITIVE_FILE_ALLOWLIST: string[];
|
|
17
20
|
export declare const KNOWN_BINARY_EXTENSIONS: Set<string>;
|
|
18
21
|
export declare const DEFAULT_EXCLUDE_PATTERNS: string[];
|
|
19
22
|
export declare function getMimeType(ext: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAkDA,eAAO,MAAM,oBAAoB,QAA0B,CAAC;AAG5D,eAAO,MAAM,wBAAwB,QAKpC,CAAC;AACF,eAAO,MAAM,kBAAkB,QAK9B,CAAC;AAEF,eAAO,MAAM,gCAAgC,QAK5C,CAAC;AACF,eAAO,MAAM,yBAAyB,QAKrC,CAAC;AAMF;;;;GAIG;AACH,eAAO,MAAM,cAAc,QAK1B,CAAC;AAGF,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAC9C,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAG9C,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C,eAAO,MAAM,0BAA0B,2LAgB7B,CAAC;AAEX,eAAO,MAAM,uBAAuB,UAGnC,CAAC;AAEF,eAAO,MAAM,wBAAwB,UAAqB,CAAC;AAE3D,eAAO,MAAM,uBAAuB,aAyClC,CAAC;AAEH,eAAO,MAAM,wBAAwB,UAwBpC,CAAC;AA6DF,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG/C"}
|
package/dist/lib/constants.js
CHANGED
|
@@ -11,6 +11,27 @@ function parseEnvInt(envVar, defaultValue, min, max) {
|
|
|
11
11
|
}
|
|
12
12
|
return parsed;
|
|
13
13
|
}
|
|
14
|
+
function parseEnvBool(envVar, defaultValue) {
|
|
15
|
+
const value = process.env[envVar];
|
|
16
|
+
if (value === undefined)
|
|
17
|
+
return defaultValue;
|
|
18
|
+
const normalized = value.trim().toLowerCase();
|
|
19
|
+
if (['1', 'true', 'yes', 'y', 'on'].includes(normalized))
|
|
20
|
+
return true;
|
|
21
|
+
if (['0', 'false', 'no', 'n', 'off'].includes(normalized))
|
|
22
|
+
return false;
|
|
23
|
+
console.error(`[WARNING] Invalid ${envVar} value: ${value} (must be true/false). Using default: ${String(defaultValue)}`);
|
|
24
|
+
return defaultValue;
|
|
25
|
+
}
|
|
26
|
+
function parseEnvList(envVar) {
|
|
27
|
+
const value = process.env[envVar];
|
|
28
|
+
if (!value)
|
|
29
|
+
return [];
|
|
30
|
+
return value
|
|
31
|
+
.split(/[,\n]/u)
|
|
32
|
+
.map((entry) => entry.trim())
|
|
33
|
+
.filter((entry) => entry.length > 0);
|
|
34
|
+
}
|
|
14
35
|
// Auto-tuned parallelism based on CPU cores (no env override)
|
|
15
36
|
function getOptimalParallelism() {
|
|
16
37
|
const cpuCores = availableParallelism();
|
|
@@ -23,6 +44,9 @@ export const MAX_SEARCHABLE_FILE_SIZE = parseEnvInt('MAX_SEARCH_SIZE', 1024 * 10
|
|
|
23
44
|
export const MAX_TEXT_FILE_SIZE = parseEnvInt('MAX_FILE_SIZE', 10 * 1024 * 1024, 1024 * 1024, 100 * 1024 * 1024);
|
|
24
45
|
export const DEFAULT_READ_MANY_MAX_TOTAL_SIZE = parseEnvInt('MAX_READ_MANY_TOTAL_SIZE', 512 * 1024, 10 * 1024, 100 * 1024 * 1024);
|
|
25
46
|
export const DEFAULT_SEARCH_TIMEOUT_MS = parseEnvInt('DEFAULT_SEARCH_TIMEOUT', 30000, 100, 3600000);
|
|
47
|
+
const ALLOW_SENSITIVE_FILES = parseEnvBool('FS_CONTEXT_ALLOW_SENSITIVE', false);
|
|
48
|
+
const ENV_DENYLIST = parseEnvList('FS_CONTEXT_DENYLIST');
|
|
49
|
+
const ENV_ALLOWLIST = parseEnvList('FS_CONTEXT_ALLOWLIST');
|
|
26
50
|
/**
|
|
27
51
|
* Number of search worker threads to use.
|
|
28
52
|
* Default: CPU cores (capped at 8 for optimal I/O performance).
|
|
@@ -36,6 +60,28 @@ export const DEFAULT_SEARCH_MAX_FILES = 20000;
|
|
|
36
60
|
// Non-configurable constants
|
|
37
61
|
export const MAX_LINE_CONTENT_LENGTH = 200;
|
|
38
62
|
export const BINARY_CHECK_BUFFER_SIZE = 512;
|
|
63
|
+
export const DEFAULT_SENSITIVE_PATTERNS = [
|
|
64
|
+
'.env',
|
|
65
|
+
'.env.*',
|
|
66
|
+
'.npmrc',
|
|
67
|
+
'.pypirc',
|
|
68
|
+
'.aws/credentials',
|
|
69
|
+
'.aws/config',
|
|
70
|
+
'.mcpregistry_*_token',
|
|
71
|
+
'*.pem',
|
|
72
|
+
'*.key',
|
|
73
|
+
'*.p12',
|
|
74
|
+
'*.pfx',
|
|
75
|
+
'*.crt',
|
|
76
|
+
'*.cer',
|
|
77
|
+
'*id_rsa*',
|
|
78
|
+
'*id_dsa*',
|
|
79
|
+
];
|
|
80
|
+
export const SENSITIVE_FILE_DENYLIST = [
|
|
81
|
+
...(ALLOW_SENSITIVE_FILES ? [] : DEFAULT_SENSITIVE_PATTERNS),
|
|
82
|
+
...ENV_DENYLIST,
|
|
83
|
+
];
|
|
84
|
+
export const SENSITIVE_FILE_ALLOWLIST = [...ENV_ALLOWLIST];
|
|
39
85
|
export const KNOWN_BINARY_EXTENSIONS = new Set([
|
|
40
86
|
'.png',
|
|
41
87
|
'.jpg',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-multiple-files.d.ts","sourceRoot":"","sources":["../../../src/lib/file-operations/read-multiple-files.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAWD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;
|
|
1
|
+
{"version":3,"file":"read-multiple-files.d.ts","sourceRoot":"","sources":["../../../src/lib/file-operations/read-multiple-files.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAWD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AA+TD,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAgC/B"}
|
|
@@ -115,7 +115,7 @@ async function validateFilesInParallel(filePaths, signal) {
|
|
|
115
115
|
const tasks = filePaths
|
|
116
116
|
.map((filePath, index) => ({ filePath, index }))
|
|
117
117
|
.filter((task) => task.filePath);
|
|
118
|
-
const { results } = await processInParallel(tasks, async (task) => tryValidateFile(task.filePath, task.index, signal), PARALLEL_CONCURRENCY);
|
|
118
|
+
const { results } = await processInParallel(tasks, async (task) => tryValidateFile(task.filePath, task.index, signal), PARALLEL_CONCURRENCY, signal);
|
|
119
119
|
const validated = new Map();
|
|
120
120
|
for (const info of results) {
|
|
121
121
|
if (!info)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-multiple-files.js","sourceRoot":"","sources":["../../../src/lib/file-operations/read-multiple-files.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"read-multiple-files.js","sourceRoot":"","sources":["../../../src/lib/file-operations/read-multiple-files.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,10 @@ interface SearchOptions {
|
|
|
18
18
|
}
|
|
19
19
|
export interface SearchContentOptions extends Partial<SearchOptions> {
|
|
20
20
|
signal?: AbortSignal;
|
|
21
|
+
onProgress?: (progress: {
|
|
22
|
+
total?: number;
|
|
23
|
+
current: number;
|
|
24
|
+
}) => void;
|
|
21
25
|
}
|
|
22
26
|
export interface MatcherOptions {
|
|
23
27
|
caseSensitive: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-content.d.ts","sourceRoot":"","sources":["../../../src/lib/file-operations/search-content.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AAUxC,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"search-content.d.ts","sourceRoot":"","sources":["../../../src/lib/file-operations/search-content.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ import { DEFAULT_EXCLUDE_PATTERNS, DEFAULT_SEARCH_MAX_FILES, DEFAULT_SEARCH_TIME
|
|
|
9
9
|
import { ErrorCode, McpError } from '../errors.js';
|
|
10
10
|
import { assertNotAborted, createTimedAbortSignal, isProbablyBinary, withAbort, } from '../fs-helpers.js';
|
|
11
11
|
import { publishOpsTraceEnd, publishOpsTraceError, publishOpsTraceStart, shouldPublishOpsTrace, } from '../observability.js';
|
|
12
|
+
import { assertAllowedFileAccess, isSensitivePath } from '../path-policy.js';
|
|
12
13
|
import { getAllowedDirectories, isPathWithinDirectories, normalizePath, toAccessDeniedWithHint, validateExistingDirectory, validateExistingPathDetailed, } from '../path-validation.js';
|
|
13
14
|
import { globEntries } from './glob-engine.js';
|
|
14
15
|
const INTERNAL_MAX_RESULTS = 500;
|
|
@@ -307,6 +308,7 @@ async function executeSearchSingleFile(file, baseDir, pattern, opts, signal) {
|
|
|
307
308
|
const summary = createScanSummary();
|
|
308
309
|
const matches = [];
|
|
309
310
|
summary.filesScanned = 1;
|
|
311
|
+
assertAllowedFileAccess(file.requestedPath, file.resolvedPath);
|
|
310
312
|
const matcher = buildMatcher(pattern, context.matcherOptions);
|
|
311
313
|
await scanSequentialFile(file, matcher, context.scanOptions, signal, opts.maxResults, matches, summary);
|
|
312
314
|
shouldStopOnSignalOrLimit(signal, matches.length, opts.maxResults, summary);
|
|
@@ -352,7 +354,7 @@ async function resolveEntryPath(entry, allowedDirs, signal) {
|
|
|
352
354
|
return null;
|
|
353
355
|
}
|
|
354
356
|
}
|
|
355
|
-
async function* collectFromStream(stream, opts, allowedDirs, signal, summary) {
|
|
357
|
+
async function* collectFromStream(stream, opts, allowedDirs, signal, summary, onProgress) {
|
|
356
358
|
for await (const entry of stream) {
|
|
357
359
|
if (!entry.dirent.isFile())
|
|
358
360
|
continue;
|
|
@@ -364,11 +366,18 @@ async function* collectFromStream(stream, opts, allowedDirs, signal, summary) {
|
|
|
364
366
|
summary.skippedInaccessible++;
|
|
365
367
|
continue;
|
|
366
368
|
}
|
|
369
|
+
if (isSensitivePath(resolved.requestedPath, resolved.resolvedPath)) {
|
|
370
|
+
summary.skippedInaccessible++;
|
|
371
|
+
continue;
|
|
372
|
+
}
|
|
367
373
|
summary.filesScanned++;
|
|
374
|
+
if (onProgress && summary.filesScanned % 50 === 0) {
|
|
375
|
+
onProgress({ current: summary.filesScanned });
|
|
376
|
+
}
|
|
368
377
|
yield resolved;
|
|
369
378
|
}
|
|
370
379
|
}
|
|
371
|
-
function collectFilesStream(root, opts, allowedDirs, signal) {
|
|
380
|
+
function collectFilesStream(root, opts, allowedDirs, signal, onProgress) {
|
|
372
381
|
const summary = createScanSummary();
|
|
373
382
|
const stream = globEntries({
|
|
374
383
|
cwd: root,
|
|
@@ -383,7 +392,7 @@ function collectFilesStream(root, opts, allowedDirs, signal) {
|
|
|
383
392
|
suppressErrors: true,
|
|
384
393
|
});
|
|
385
394
|
return {
|
|
386
|
-
stream: collectFromStream(stream, opts, allowedDirs, signal, summary),
|
|
395
|
+
stream: collectFromStream(stream, opts, allowedDirs, signal, summary, onProgress),
|
|
387
396
|
summary,
|
|
388
397
|
};
|
|
389
398
|
}
|
|
@@ -913,9 +922,9 @@ function buildSearchResult(root, pattern, filePattern, matches, summary) {
|
|
|
913
922
|
summary: buildSummary(summary, matches),
|
|
914
923
|
};
|
|
915
924
|
}
|
|
916
|
-
async function executeSearch(root, pattern, opts, allowedDirs, signal) {
|
|
925
|
+
async function executeSearch(root, pattern, opts, allowedDirs, signal, onProgress) {
|
|
917
926
|
return await withSearchExecution(pattern, opts, async (context) => {
|
|
918
|
-
const { stream, summary } = collectFilesStream(root, opts, allowedDirs, signal);
|
|
927
|
+
const { stream, summary } = collectFilesStream(root, opts, allowedDirs, signal, onProgress);
|
|
919
928
|
const matches = await scanMatches(stream, pattern, context.matcherOptions, context.scanOptions, opts.maxResults, signal, summary);
|
|
920
929
|
return buildSearchResult(root, pattern, opts.filePattern, matches, summary);
|
|
921
930
|
});
|
|
@@ -929,7 +938,7 @@ export async function searchContent(basePath, pattern, options = {}) {
|
|
|
929
938
|
const stats = await withAbort(fsp.stat(details.resolvedPath), signal);
|
|
930
939
|
if (stats.isDirectory()) {
|
|
931
940
|
const root = await validateExistingDirectory(details.resolvedPath, signal);
|
|
932
|
-
return await executeSearch(root, pattern, opts, allowedDirs, signal);
|
|
941
|
+
return await executeSearch(root, pattern, opts, allowedDirs, signal, options.onProgress);
|
|
933
942
|
}
|
|
934
943
|
if (stats.isFile()) {
|
|
935
944
|
const baseDir = path.dirname(details.requestedPath);
|