@mcptoolshop/file-forge 0.1.0 → 0.2.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 (66) hide show
  1. package/README.md +168 -54
  2. package/package.json +1 -1
  3. package/build/config/index.d.ts +0 -29
  4. package/build/config/index.d.ts.map +0 -1
  5. package/build/config/index.js +0 -229
  6. package/build/config/index.js.map +0 -1
  7. package/build/index.d.ts +0 -9
  8. package/build/index.d.ts.map +0 -1
  9. package/build/index.js +0 -23
  10. package/build/index.js.map +0 -1
  11. package/build/security/index.d.ts +0 -8
  12. package/build/security/index.d.ts.map +0 -1
  13. package/build/security/index.js +0 -8
  14. package/build/security/index.js.map +0 -1
  15. package/build/security/read-only.d.ts +0 -32
  16. package/build/security/read-only.d.ts.map +0 -1
  17. package/build/security/read-only.js +0 -62
  18. package/build/security/read-only.js.map +0 -1
  19. package/build/security/sandbox.d.ts +0 -60
  20. package/build/security/sandbox.d.ts.map +0 -1
  21. package/build/security/sandbox.js +0 -231
  22. package/build/security/sandbox.js.map +0 -1
  23. package/build/server.d.ts +0 -20
  24. package/build/server.d.ts.map +0 -1
  25. package/build/server.js +0 -63
  26. package/build/server.js.map +0 -1
  27. package/build/tools/metadata.d.ts +0 -11
  28. package/build/tools/metadata.d.ts.map +0 -1
  29. package/build/tools/metadata.js +0 -423
  30. package/build/tools/metadata.js.map +0 -1
  31. package/build/tools/read.d.ts +0 -11
  32. package/build/tools/read.d.ts.map +0 -1
  33. package/build/tools/read.js +0 -335
  34. package/build/tools/read.js.map +0 -1
  35. package/build/tools/scaffold.d.ts +0 -11
  36. package/build/tools/scaffold.d.ts.map +0 -1
  37. package/build/tools/scaffold.js +0 -345
  38. package/build/tools/scaffold.js.map +0 -1
  39. package/build/tools/search.d.ts +0 -11
  40. package/build/tools/search.d.ts.map +0 -1
  41. package/build/tools/search.js +0 -250
  42. package/build/tools/search.js.map +0 -1
  43. package/build/tools/write.d.ts +0 -11
  44. package/build/tools/write.d.ts.map +0 -1
  45. package/build/tools/write.js +0 -538
  46. package/build/tools/write.js.map +0 -1
  47. package/build/types.d.ts +0 -402
  48. package/build/types.d.ts.map +0 -1
  49. package/build/types.js +0 -146
  50. package/build/types.js.map +0 -1
  51. package/build/utils/errors.d.ts +0 -43
  52. package/build/utils/errors.d.ts.map +0 -1
  53. package/build/utils/errors.js +0 -125
  54. package/build/utils/errors.js.map +0 -1
  55. package/build/utils/index.d.ts +0 -10
  56. package/build/utils/index.d.ts.map +0 -1
  57. package/build/utils/index.js +0 -9
  58. package/build/utils/index.js.map +0 -1
  59. package/build/utils/logger.d.ts +0 -88
  60. package/build/utils/logger.d.ts.map +0 -1
  61. package/build/utils/logger.js +0 -166
  62. package/build/utils/logger.js.map +0 -1
  63. package/build/utils/validation.d.ts +0 -43
  64. package/build/utils/validation.d.ts.map +0 -1
  65. package/build/utils/validation.js +0 -196
  66. package/build/utils/validation.js.map +0 -1
@@ -1,423 +0,0 @@
1
- /**
2
- * MCP File Forge - File Metadata Tools
3
- *
4
- * Tools for getting file statistics and checking existence.
5
- */
6
- import * as fs from 'node:fs/promises';
7
- import * as path from 'node:path';
8
- import { z } from 'zod';
9
- import { FileStatInputSchema, FileExistsInputSchema } from '../types.js';
10
- /**
11
- * Format bytes into human-readable size.
12
- */
13
- function formatBytes(bytes) {
14
- if (bytes === 0)
15
- return '0 Bytes';
16
- const k = 1024;
17
- const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
18
- const i = Math.floor(Math.log(bytes) / Math.log(k));
19
- return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
20
- }
21
- /**
22
- * Get file or directory statistics.
23
- */
24
- async function fileStatImpl(input) {
25
- try {
26
- const absolutePath = path.resolve(input.path);
27
- const stats = await fs.stat(absolutePath);
28
- const lstat = await fs.lstat(absolutePath);
29
- const result = {
30
- path: absolutePath,
31
- name: path.basename(absolutePath),
32
- size: stats.size,
33
- isFile: stats.isFile(),
34
- isDirectory: stats.isDirectory(),
35
- isSymlink: lstat.isSymbolicLink(),
36
- created: stats.birthtime.toISOString(),
37
- modified: stats.mtime.toISOString(),
38
- accessed: stats.atime.toISOString(),
39
- };
40
- // Add formatted size for convenience
41
- const formattedResult = {
42
- ...result,
43
- sizeFormatted: formatBytes(stats.size),
44
- };
45
- return {
46
- content: [
47
- {
48
- type: 'text',
49
- text: JSON.stringify(formattedResult, null, 2),
50
- },
51
- ],
52
- };
53
- }
54
- catch (error) {
55
- const err = error;
56
- if (err.code === 'ENOENT') {
57
- return {
58
- isError: true,
59
- content: [
60
- {
61
- type: 'text',
62
- text: JSON.stringify({
63
- code: 'FILE_NOT_FOUND',
64
- message: `Path not found: ${input.path}`,
65
- }),
66
- },
67
- ],
68
- };
69
- }
70
- if (err.code === 'EACCES') {
71
- return {
72
- isError: true,
73
- content: [
74
- {
75
- type: 'text',
76
- text: JSON.stringify({
77
- code: 'PERMISSION_DENIED',
78
- message: `Permission denied: ${input.path}`,
79
- }),
80
- },
81
- ],
82
- };
83
- }
84
- return {
85
- isError: true,
86
- content: [
87
- {
88
- type: 'text',
89
- text: JSON.stringify({
90
- code: 'UNKNOWN_ERROR',
91
- message: `Error getting stats: ${err.message}`,
92
- }),
93
- },
94
- ],
95
- };
96
- }
97
- }
98
- /**
99
- * Check if a file or directory exists.
100
- */
101
- async function fileExistsImpl(input) {
102
- try {
103
- const absolutePath = path.resolve(input.path);
104
- try {
105
- const stats = await fs.stat(absolutePath);
106
- // Check type if specified
107
- if (input.type === 'file' && !stats.isFile()) {
108
- return {
109
- content: [
110
- {
111
- type: 'text',
112
- text: JSON.stringify({
113
- exists: false,
114
- path: absolutePath,
115
- reason: 'Path exists but is not a file',
116
- actualType: stats.isDirectory() ? 'directory' : 'other',
117
- }),
118
- },
119
- ],
120
- };
121
- }
122
- if (input.type === 'directory' && !stats.isDirectory()) {
123
- return {
124
- content: [
125
- {
126
- type: 'text',
127
- text: JSON.stringify({
128
- exists: false,
129
- path: absolutePath,
130
- reason: 'Path exists but is not a directory',
131
- actualType: stats.isFile() ? 'file' : 'other',
132
- }),
133
- },
134
- ],
135
- };
136
- }
137
- return {
138
- content: [
139
- {
140
- type: 'text',
141
- text: JSON.stringify({
142
- exists: true,
143
- path: absolutePath,
144
- isFile: stats.isFile(),
145
- isDirectory: stats.isDirectory(),
146
- }),
147
- },
148
- ],
149
- };
150
- }
151
- catch {
152
- return {
153
- content: [
154
- {
155
- type: 'text',
156
- text: JSON.stringify({
157
- exists: false,
158
- path: absolutePath,
159
- }),
160
- },
161
- ],
162
- };
163
- }
164
- }
165
- catch (error) {
166
- const err = error;
167
- return {
168
- isError: true,
169
- content: [
170
- {
171
- type: 'text',
172
- text: JSON.stringify({
173
- code: 'UNKNOWN_ERROR',
174
- message: `Error checking existence: ${err.message}`,
175
- }),
176
- },
177
- ],
178
- };
179
- }
180
- }
181
- /**
182
- * Get disk usage for a directory.
183
- */
184
- async function getDiskUsageImpl(input) {
185
- try {
186
- const absolutePath = path.resolve(input.path);
187
- const maxDepth = input.max_depth ?? 1;
188
- const stats = await fs.stat(absolutePath);
189
- if (!stats.isDirectory()) {
190
- return {
191
- content: [
192
- {
193
- type: 'text',
194
- text: JSON.stringify({
195
- path: absolutePath,
196
- size: stats.size,
197
- sizeFormatted: formatBytes(stats.size),
198
- isFile: true,
199
- }),
200
- },
201
- ],
202
- };
203
- }
204
- // Calculate directory size
205
- const usage = await calculateDirSize(absolutePath, 0, maxDepth);
206
- return {
207
- content: [
208
- {
209
- type: 'text',
210
- text: JSON.stringify({
211
- path: absolutePath,
212
- totalSize: usage.totalSize,
213
- totalSizeFormatted: formatBytes(usage.totalSize),
214
- fileCount: usage.fileCount,
215
- directoryCount: usage.directoryCount,
216
- breakdown: usage.breakdown,
217
- }, null, 2),
218
- },
219
- ],
220
- };
221
- }
222
- catch (error) {
223
- const err = error;
224
- if (err.code === 'ENOENT') {
225
- return {
226
- isError: true,
227
- content: [
228
- {
229
- type: 'text',
230
- text: JSON.stringify({
231
- code: 'FILE_NOT_FOUND',
232
- message: `Path not found: ${input.path}`,
233
- }),
234
- },
235
- ],
236
- };
237
- }
238
- return {
239
- isError: true,
240
- content: [
241
- {
242
- type: 'text',
243
- text: JSON.stringify({
244
- code: 'UNKNOWN_ERROR',
245
- message: `Error calculating disk usage: ${err.message}`,
246
- }),
247
- },
248
- ],
249
- };
250
- }
251
- }
252
- /**
253
- * Recursively calculate directory size.
254
- */
255
- async function calculateDirSize(dirPath, currentDepth, maxDepth) {
256
- let totalSize = 0;
257
- let fileCount = 0;
258
- let directoryCount = 0;
259
- const breakdown = [];
260
- try {
261
- const entries = await fs.readdir(dirPath, { withFileTypes: true });
262
- for (const entry of entries) {
263
- const entryPath = path.join(dirPath, entry.name);
264
- try {
265
- if (entry.isFile()) {
266
- const stats = await fs.stat(entryPath);
267
- totalSize += stats.size;
268
- fileCount++;
269
- if (currentDepth < maxDepth) {
270
- breakdown.push({
271
- name: entry.name,
272
- size: stats.size,
273
- sizeFormatted: formatBytes(stats.size),
274
- });
275
- }
276
- }
277
- else if (entry.isDirectory()) {
278
- directoryCount++;
279
- const subResult = await calculateDirSize(entryPath, currentDepth + 1, maxDepth);
280
- totalSize += subResult.totalSize;
281
- fileCount += subResult.fileCount;
282
- directoryCount += subResult.directoryCount;
283
- if (currentDepth < maxDepth) {
284
- breakdown.push({
285
- name: entry.name + '/',
286
- size: subResult.totalSize,
287
- sizeFormatted: formatBytes(subResult.totalSize),
288
- });
289
- }
290
- }
291
- }
292
- catch {
293
- // Skip entries we can't access
294
- }
295
- }
296
- }
297
- catch {
298
- // Ignore permission errors on directories
299
- }
300
- // Sort breakdown by size descending
301
- breakdown.sort((a, b) => b.size - a.size);
302
- return { totalSize, fileCount, directoryCount, breakdown };
303
- }
304
- /**
305
- * Compare two files or directories.
306
- */
307
- async function compareFilesImpl(input) {
308
- try {
309
- const path1 = path.resolve(input.path1);
310
- const path2 = path.resolve(input.path2);
311
- const [stats1, stats2] = await Promise.all([
312
- fs.stat(path1).catch(() => null),
313
- fs.stat(path2).catch(() => null),
314
- ]);
315
- if (!stats1) {
316
- return {
317
- isError: true,
318
- content: [
319
- {
320
- type: 'text',
321
- text: JSON.stringify({
322
- code: 'FILE_NOT_FOUND',
323
- message: `First path not found: ${input.path1}`,
324
- }),
325
- },
326
- ],
327
- };
328
- }
329
- if (!stats2) {
330
- return {
331
- isError: true,
332
- content: [
333
- {
334
- type: 'text',
335
- text: JSON.stringify({
336
- code: 'FILE_NOT_FOUND',
337
- message: `Second path not found: ${input.path2}`,
338
- }),
339
- },
340
- ],
341
- };
342
- }
343
- const comparison = {
344
- path1,
345
- path2,
346
- sameType: stats1.isFile() === stats2.isFile(),
347
- sameSize: stats1.size === stats2.size,
348
- file1: {
349
- isFile: stats1.isFile(),
350
- size: stats1.size,
351
- sizeFormatted: formatBytes(stats1.size),
352
- modified: stats1.mtime.toISOString(),
353
- },
354
- file2: {
355
- isFile: stats2.isFile(),
356
- size: stats2.size,
357
- sizeFormatted: formatBytes(stats2.size),
358
- modified: stats2.mtime.toISOString(),
359
- },
360
- newerFile: stats1.mtime > stats2.mtime ? 'path1' : 'path2',
361
- sizeDifference: stats1.size - stats2.size,
362
- sizeDifferenceFormatted: formatBytes(Math.abs(stats1.size - stats2.size)),
363
- };
364
- return {
365
- content: [
366
- {
367
- type: 'text',
368
- text: JSON.stringify(comparison, null, 2),
369
- },
370
- ],
371
- };
372
- }
373
- catch (error) {
374
- const err = error;
375
- return {
376
- isError: true,
377
- content: [
378
- {
379
- type: 'text',
380
- text: JSON.stringify({
381
- code: 'UNKNOWN_ERROR',
382
- message: `Error comparing files: ${err.message}`,
383
- }),
384
- },
385
- ],
386
- };
387
- }
388
- }
389
- /**
390
- * Register file metadata tools with the MCP server.
391
- */
392
- export function registerMetadataTools(server) {
393
- // file_stat tool
394
- server.tool('file_stat', 'Get file or directory statistics', {
395
- path: z.string().describe('Path to file or directory'),
396
- }, async (args) => {
397
- const input = FileStatInputSchema.parse(args);
398
- return await fileStatImpl(input);
399
- });
400
- // file_exists tool
401
- server.tool('file_exists', 'Check if a file or directory exists', {
402
- path: z.string().describe('Path to check'),
403
- type: z.enum(['file', 'directory', 'any']).optional().describe('Type to check for'),
404
- }, async (args) => {
405
- const input = FileExistsInputSchema.parse(args);
406
- return await fileExistsImpl(input);
407
- });
408
- // get_disk_usage tool
409
- server.tool('get_disk_usage', 'Get disk usage for a directory', {
410
- path: z.string().describe('Path to directory'),
411
- max_depth: z.number().optional().describe('Max depth for breakdown'),
412
- }, async (args) => {
413
- return await getDiskUsageImpl(args);
414
- });
415
- // compare_files tool
416
- server.tool('compare_files', 'Compare two files or directories', {
417
- path1: z.string().describe('First path'),
418
- path2: z.string().describe('Second path'),
419
- }, async (args) => {
420
- return await compareFilesImpl(args);
421
- });
422
- }
423
- //# sourceMappingURL=metadata.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/tools/metadata.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- /**
2
- * MCP File Forge - File Reading Tools
3
- *
4
- * Tools for reading files and directories.
5
- */
6
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
7
- /**
8
- * Register file reading tools with the MCP server.
9
- */
10
- export declare function registerReadTools(server: McpServer): void;
11
- //# sourceMappingURL=read.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/tools/read.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAuVpE;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgDzD"}