@andrebuzeli/git-mcp 10.0.0 → 10.0.2

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 (125) hide show
  1. package/dist/index.js +28 -3
  2. package/dist/prompts/gitPrompts.d.ts +1 -22
  3. package/dist/prompts/gitPrompts.js +58 -179
  4. package/dist/server.js +11 -6
  5. package/dist/tools/gitAnalytics.d.ts +28 -0
  6. package/dist/tools/gitAnalytics.js +28 -0
  7. package/dist/tools/gitArchive.d.ts +37 -0
  8. package/dist/tools/gitArchive.js +37 -0
  9. package/dist/tools/gitBackup.d.ts +32 -0
  10. package/dist/tools/gitBackup.js +32 -0
  11. package/dist/tools/gitBranches.d.ts +48 -0
  12. package/dist/tools/gitBranches.js +48 -0
  13. package/dist/tools/gitConfig.d.ts +36 -0
  14. package/dist/tools/gitConfig.js +36 -0
  15. package/dist/tools/gitFiles.d.ts +51 -0
  16. package/dist/tools/gitFiles.js +49 -0
  17. package/dist/tools/gitFix.tool.d.ts +23 -0
  18. package/dist/tools/gitFix.tool.js +23 -0
  19. package/dist/tools/gitHistory.d.ts +47 -0
  20. package/dist/tools/gitHistory.js +45 -0
  21. package/dist/tools/gitIgnore.d.ts +35 -0
  22. package/dist/tools/gitIgnore.js +33 -0
  23. package/dist/tools/gitIssues.d.ts +78 -0
  24. package/dist/tools/gitIssues.js +74 -0
  25. package/dist/tools/gitMonitor.d.ts +24 -0
  26. package/dist/tools/gitMonitor.js +24 -0
  27. package/dist/tools/gitPush.d.ts +5 -0
  28. package/dist/tools/gitPush.js +7 -1
  29. package/dist/tools/gitSync.d.ts +24 -0
  30. package/dist/tools/gitSync.js +130 -42
  31. package/dist/tools/gitUpdate.d.ts +46 -0
  32. package/dist/tools/gitUpdate.js +44 -0
  33. package/dist/tools/gitUpload.d.ts +31 -0
  34. package/dist/tools/gitUpload.js +46 -5
  35. package/dist/tools/gitWorkflow.d.ts +103 -0
  36. package/dist/tools/gitWorkflow.js +130 -3
  37. package/dist/types.d.ts +1 -0
  38. package/dist/utils/agentHelpers.d.ts +11 -0
  39. package/dist/utils/agentHelpers.js +41 -0
  40. package/dist/utils/contextDetector.d.ts +0 -0
  41. package/dist/utils/contextDetector.js +1 -0
  42. package/dist/utils/gitAdapter.d.ts +2 -2
  43. package/dist/utils/gitAdapter.js +4 -4
  44. package/package.json +1 -1
  45. package/dist/.tsbuildinfo +0 -1
  46. package/dist/config.d.ts.map +0 -1
  47. package/dist/config.js.map +0 -1
  48. package/dist/index.d.ts.map +0 -1
  49. package/dist/index.js.map +0 -1
  50. package/dist/prompts/gitPrompts.d.ts.map +0 -1
  51. package/dist/prompts/gitPrompts.js.map +0 -1
  52. package/dist/providers/giteaProvider.d.ts.map +0 -1
  53. package/dist/providers/giteaProvider.js.map +0 -1
  54. package/dist/providers/githubProvider.d.ts.map +0 -1
  55. package/dist/providers/githubProvider.js.map +0 -1
  56. package/dist/providers/providerManager.d.ts.map +0 -1
  57. package/dist/providers/providerManager.js.map +0 -1
  58. package/dist/resources/toolsGuide.d.ts.map +0 -1
  59. package/dist/resources/toolsGuide.js.map +0 -1
  60. package/dist/server.d.ts.map +0 -1
  61. package/dist/server.js.map +0 -1
  62. package/dist/tools/gitAnalytics.d.ts.map +0 -1
  63. package/dist/tools/gitAnalytics.js.map +0 -1
  64. package/dist/tools/gitArchive.d.ts.map +0 -1
  65. package/dist/tools/gitArchive.js.map +0 -1
  66. package/dist/tools/gitBackup.d.ts.map +0 -1
  67. package/dist/tools/gitBackup.js.map +0 -1
  68. package/dist/tools/gitBranches.d.ts.map +0 -1
  69. package/dist/tools/gitBranches.js.map +0 -1
  70. package/dist/tools/gitChangelog.d.ts.map +0 -1
  71. package/dist/tools/gitChangelog.js.map +0 -1
  72. package/dist/tools/gitConfig.d.ts.map +0 -1
  73. package/dist/tools/gitConfig.js.map +0 -1
  74. package/dist/tools/gitFiles.d.ts.map +0 -1
  75. package/dist/tools/gitFiles.js.map +0 -1
  76. package/dist/tools/gitFix.d.ts.map +0 -1
  77. package/dist/tools/gitFix.js.map +0 -1
  78. package/dist/tools/gitFix.tool.d.ts.map +0 -1
  79. package/dist/tools/gitFix.tool.js.map +0 -1
  80. package/dist/tools/gitHistory.d.ts.map +0 -1
  81. package/dist/tools/gitHistory.js.map +0 -1
  82. package/dist/tools/gitIgnore.d.ts.map +0 -1
  83. package/dist/tools/gitIgnore.js.map +0 -1
  84. package/dist/tools/gitIssues.d.ts.map +0 -1
  85. package/dist/tools/gitIssues.js.map +0 -1
  86. package/dist/tools/gitLog.d.ts.map +0 -1
  87. package/dist/tools/gitLog.js.map +0 -1
  88. package/dist/tools/gitMonitor.d.ts.map +0 -1
  89. package/dist/tools/gitMonitor.js.map +0 -1
  90. package/dist/tools/gitPackages.d.ts.map +0 -1
  91. package/dist/tools/gitPackages.js.map +0 -1
  92. package/dist/tools/gitPulls.d.ts.map +0 -1
  93. package/dist/tools/gitPulls.js.map +0 -1
  94. package/dist/tools/gitPush.d.ts.map +0 -1
  95. package/dist/tools/gitPush.js.map +0 -1
  96. package/dist/tools/gitRelease.d.ts.map +0 -1
  97. package/dist/tools/gitRelease.js.map +0 -1
  98. package/dist/tools/gitRemote.d.ts.map +0 -1
  99. package/dist/tools/gitRemote.js.map +0 -1
  100. package/dist/tools/gitReset.d.ts.map +0 -1
  101. package/dist/tools/gitReset.js.map +0 -1
  102. package/dist/tools/gitStash.d.ts.map +0 -1
  103. package/dist/tools/gitStash.js.map +0 -1
  104. package/dist/tools/gitSync.d.ts.map +0 -1
  105. package/dist/tools/gitSync.js.map +0 -1
  106. package/dist/tools/gitTags.d.ts.map +0 -1
  107. package/dist/tools/gitTags.js.map +0 -1
  108. package/dist/tools/gitUpdate.d.ts.map +0 -1
  109. package/dist/tools/gitUpdate.js.map +0 -1
  110. package/dist/tools/gitUpload.d.ts.map +0 -1
  111. package/dist/tools/gitUpload.js.map +0 -1
  112. package/dist/tools/gitWorkflow.d.ts.map +0 -1
  113. package/dist/tools/gitWorkflow.js.map +0 -1
  114. package/dist/types.d.ts.map +0 -1
  115. package/dist/types.js.map +0 -1
  116. package/dist/utils/apiHelpers.d.ts.map +0 -1
  117. package/dist/utils/apiHelpers.js.map +0 -1
  118. package/dist/utils/errors.d.ts.map +0 -1
  119. package/dist/utils/errors.js.map +0 -1
  120. package/dist/utils/gitAdapter.d.ts.map +0 -1
  121. package/dist/utils/gitAdapter.js.map +0 -1
  122. package/dist/utils/repoHelpers.d.ts.map +0 -1
  123. package/dist/utils/repoHelpers.js.map +0 -1
  124. package/dist/utils/safetyController.d.ts.map +0 -1
  125. package/dist/utils/safetyController.js.map +0 -1
@@ -2,6 +2,38 @@ import { Tool, MCPContext } from '../types.js';
2
2
  export declare class GitBackupTool implements Tool {
3
3
  name: string;
4
4
  description: string;
5
+ inputSchema: {
6
+ type: "object";
7
+ properties: {
8
+ projectPath: {
9
+ type: string;
10
+ description: string;
11
+ };
12
+ action: {
13
+ type: string;
14
+ enum: string[];
15
+ description: string;
16
+ };
17
+ backupPath: {
18
+ type: string;
19
+ description: string;
20
+ };
21
+ compress: {
22
+ type: string;
23
+ description: string;
24
+ };
25
+ confirm: {
26
+ type: string;
27
+ description: string;
28
+ };
29
+ name: {
30
+ type: string;
31
+ description: string;
32
+ };
33
+ };
34
+ required: string[];
35
+ additionalProperties: boolean;
36
+ };
5
37
  handle(params: Record<string, any>, ctx: MCPContext): Promise<{
6
38
  success: boolean;
7
39
  backupPath: string;
@@ -6,6 +6,38 @@ export class GitBackupTool {
6
6
  constructor() {
7
7
  this.name = 'git-backup';
8
8
  this.description = 'Repository backup and restore operations';
9
+ this.inputSchema = {
10
+ type: "object",
11
+ properties: {
12
+ projectPath: {
13
+ type: "string",
14
+ description: "Absolute path to the project/repository (REQUIRED)"
15
+ },
16
+ action: {
17
+ type: "string",
18
+ enum: ["backup", "list", "verify", "restore"],
19
+ description: "Action to perform: backup (create backup), list (list backups), verify (verify backup), restore (restore from backup)"
20
+ },
21
+ backupPath: {
22
+ type: "string",
23
+ description: "Path to backup file (required for restore/verify)"
24
+ },
25
+ compress: {
26
+ type: "boolean",
27
+ description: "Compress backup (optional for backup, default: true)"
28
+ },
29
+ confirm: {
30
+ type: "boolean",
31
+ description: "Confirm destructive operations (optional for restore)"
32
+ },
33
+ name: {
34
+ type: "string",
35
+ description: "Backup name (optional for backup)"
36
+ }
37
+ },
38
+ required: ["projectPath", "action"],
39
+ additionalProperties: true
40
+ };
9
41
  }
10
42
  async handle(params, ctx) {
11
43
  const action = params.action;
@@ -2,5 +2,53 @@ import { Tool, MCPContext } from '../types.js';
2
2
  export declare class GitBranchesTool implements Tool {
3
3
  name: string;
4
4
  description: string;
5
+ inputSchema: {
6
+ type: "object";
7
+ properties: {
8
+ projectPath: {
9
+ type: string;
10
+ description: string;
11
+ };
12
+ action: {
13
+ type: string;
14
+ enum: string[];
15
+ description: string;
16
+ };
17
+ branchName: {
18
+ type: string;
19
+ description: string;
20
+ };
21
+ checkout: {
22
+ type: string;
23
+ description: string;
24
+ };
25
+ sourceBranch: {
26
+ type: string;
27
+ description: string;
28
+ };
29
+ confirm: {
30
+ type: string;
31
+ description: string;
32
+ };
33
+ force: {
34
+ type: string;
35
+ description: string;
36
+ };
37
+ targetBranch: {
38
+ type: string;
39
+ description: string;
40
+ };
41
+ baseBranch: {
42
+ type: string;
43
+ description: string;
44
+ };
45
+ compareBranch: {
46
+ type: string;
47
+ description: string;
48
+ };
49
+ };
50
+ required: string[];
51
+ additionalProperties: boolean;
52
+ };
5
53
  handle(params: Record<string, any>, ctx: MCPContext): Promise<any>;
6
54
  }
@@ -7,6 +7,54 @@ export class GitBranchesTool {
7
7
  constructor() {
8
8
  this.name = 'git-branches';
9
9
  this.description = 'Branch management operations - automatic dual-provider execution for remote queries';
10
+ this.inputSchema = {
11
+ type: "object",
12
+ properties: {
13
+ projectPath: {
14
+ type: "string",
15
+ description: "Absolute path to the project/repository (REQUIRED)"
16
+ },
17
+ action: {
18
+ type: "string",
19
+ enum: ["create", "list", "get", "delete", "merge", "compare"],
20
+ description: "Action to perform: create (create branch), list (list branches), get (get branch info), delete (delete branch), merge (merge branches), compare (compare branches)"
21
+ },
22
+ branchName: {
23
+ type: "string",
24
+ description: "Branch name (required for create/get/delete/merge)"
25
+ },
26
+ checkout: {
27
+ type: "boolean",
28
+ description: "Checkout after creating branch (optional for create, default: true)"
29
+ },
30
+ sourceBranch: {
31
+ type: "string",
32
+ description: "Source branch to create from (optional for create)"
33
+ },
34
+ confirm: {
35
+ type: "boolean",
36
+ description: "Confirm destructive operations (optional for delete)"
37
+ },
38
+ force: {
39
+ type: "boolean",
40
+ description: "Force delete branch (optional for delete)"
41
+ },
42
+ targetBranch: {
43
+ type: "string",
44
+ description: "Target branch for merge (optional for merge)"
45
+ },
46
+ baseBranch: {
47
+ type: "string",
48
+ description: "Base branch for comparison (required for compare)"
49
+ },
50
+ compareBranch: {
51
+ type: "string",
52
+ description: "Branch to compare against base (required for compare)"
53
+ }
54
+ },
55
+ required: ["projectPath", "action"],
56
+ additionalProperties: true
57
+ };
10
58
  }
11
59
  async handle(params, ctx) {
12
60
  const action = params.action;
@@ -2,6 +2,42 @@ import { Tool, MCPContext } from '../types.js';
2
2
  export declare class GitConfigTool implements Tool {
3
3
  name: string;
4
4
  description: string;
5
+ inputSchema: {
6
+ type: "object";
7
+ properties: {
8
+ action: {
9
+ type: string;
10
+ enum: string[];
11
+ description: string;
12
+ };
13
+ projectPath: {
14
+ type: string;
15
+ description: string;
16
+ };
17
+ global: {
18
+ type: string;
19
+ description: string;
20
+ };
21
+ system: {
22
+ type: string;
23
+ description: string;
24
+ };
25
+ key: {
26
+ type: string;
27
+ description: string;
28
+ };
29
+ value: {
30
+ type: string;
31
+ description: string;
32
+ };
33
+ showScope: {
34
+ type: string;
35
+ description: string;
36
+ };
37
+ };
38
+ required: string[];
39
+ additionalProperties: boolean;
40
+ };
5
41
  handle(params: Record<string, any>, ctx: MCPContext): Promise<{
6
42
  success: boolean;
7
43
  key: any;
@@ -6,6 +6,42 @@ export class GitConfigTool {
6
6
  constructor() {
7
7
  this.name = 'git-config';
8
8
  this.description = 'Git configuration management - local Git operations';
9
+ this.inputSchema = {
10
+ type: "object",
11
+ properties: {
12
+ action: {
13
+ type: "string",
14
+ enum: ["get", "set", "unset", "list", "show", "edit"],
15
+ description: "Configuration operation to perform"
16
+ },
17
+ projectPath: {
18
+ type: "string",
19
+ description: "Absolute path to the Git repository (REQUIRED)"
20
+ },
21
+ global: {
22
+ type: "boolean",
23
+ description: "Use global configuration scope (optional, default: false)"
24
+ },
25
+ system: {
26
+ type: "boolean",
27
+ description: "Use system configuration scope (optional, default: false)"
28
+ },
29
+ key: {
30
+ type: "string",
31
+ description: "Configuration key name (e.g., 'user.name', 'user.email') - required for get, set, unset, show"
32
+ },
33
+ value: {
34
+ type: "string",
35
+ description: "Configuration value to set - required for set action"
36
+ },
37
+ showScope: {
38
+ type: "boolean",
39
+ description: "Include configuration scope in show action response (optional, default: false)"
40
+ }
41
+ },
42
+ required: ["projectPath", "action"],
43
+ additionalProperties: true
44
+ };
9
45
  }
10
46
  async handle(params, ctx) {
11
47
  const action = params.action;
@@ -2,6 +2,57 @@ import { Tool } from '../types.js';
2
2
  export declare class GitFilesTool implements Tool {
3
3
  name: string;
4
4
  description: string;
5
+ inputSchema: {
6
+ type: "object";
7
+ properties: {
8
+ action: {
9
+ type: string;
10
+ enum: string[];
11
+ description: string;
12
+ };
13
+ projectPath: {
14
+ type: string;
15
+ description: string;
16
+ };
17
+ filePath: {
18
+ type: string;
19
+ description: string;
20
+ };
21
+ directoryPath: {
22
+ type: string;
23
+ description: string;
24
+ };
25
+ content: {
26
+ type: string;
27
+ description: string;
28
+ };
29
+ comment: {
30
+ type: string;
31
+ description: string;
32
+ };
33
+ patterns: {
34
+ type: string;
35
+ items: {
36
+ type: string;
37
+ };
38
+ description: string;
39
+ };
40
+ searchText: {
41
+ type: string;
42
+ description: string;
43
+ };
44
+ query: {
45
+ type: string;
46
+ description: string;
47
+ };
48
+ searchPath: {
49
+ type: string;
50
+ description: string;
51
+ };
52
+ };
53
+ required: string[];
54
+ additionalProperties: boolean;
55
+ };
5
56
  handle(params: Record<string, any>): Promise<{
6
57
  success: boolean;
7
58
  path: string;
@@ -5,6 +5,55 @@ export class GitFilesTool {
5
5
  constructor() {
6
6
  this.name = 'git-files';
7
7
  this.description = 'Read-only file operations for repositories - local operations only';
8
+ this.inputSchema = {
9
+ type: "object",
10
+ properties: {
11
+ action: {
12
+ type: "string",
13
+ enum: ["read", "list", "create", "update", "delete", "search"],
14
+ description: "File operation to perform"
15
+ },
16
+ projectPath: {
17
+ type: "string",
18
+ description: "Absolute path to the project directory (REQUIRED)"
19
+ },
20
+ filePath: {
21
+ type: "string",
22
+ description: "Relative path to the file within projectPath - required for read, create, update, delete"
23
+ },
24
+ directoryPath: {
25
+ type: "string",
26
+ description: "Relative path to directory for listing - optional, defaults to projectPath root"
27
+ },
28
+ content: {
29
+ type: "string",
30
+ description: "File content to write - required for create and update actions"
31
+ },
32
+ comment: {
33
+ type: "string",
34
+ description: "Comment to add when appending patterns to .gitignore - optional for add action"
35
+ },
36
+ patterns: {
37
+ type: "array",
38
+ items: { type: "string" },
39
+ description: "Array of file patterns - required for add and remove actions"
40
+ },
41
+ searchText: {
42
+ type: "string",
43
+ description: "Text to search for in files - required for search action"
44
+ },
45
+ query: {
46
+ type: "string",
47
+ description: "Alternative name for searchText - required for search action"
48
+ },
49
+ searchPath: {
50
+ type: "string",
51
+ description: "Relative path to search within - optional for search, defaults to projectPath root"
52
+ }
53
+ },
54
+ required: ["projectPath", "action"],
55
+ additionalProperties: true
56
+ };
8
57
  }
9
58
  async handle(params) {
10
59
  const action = params.action;
@@ -2,6 +2,29 @@ import { Tool } from '../types.js';
2
2
  export declare class GitFixTool implements Tool {
3
3
  name: string;
4
4
  description: string;
5
+ inputSchema: {
6
+ type: "object";
7
+ properties: {
8
+ projectPath: {
9
+ type: string;
10
+ description: string;
11
+ };
12
+ githubRepo: {
13
+ type: string;
14
+ description: string;
15
+ };
16
+ giteaRepo: {
17
+ type: string;
18
+ description: string;
19
+ };
20
+ autoDetect: {
21
+ type: string;
22
+ description: string;
23
+ };
24
+ };
25
+ required: string[];
26
+ additionalProperties: boolean;
27
+ };
5
28
  handle(args: any): Promise<{
6
29
  content: any[];
7
30
  }>;
@@ -62,6 +62,29 @@ export class GitFixTool {
62
62
  - GITEA_URL env var (default: http://nas-ubuntu:9999)
63
63
  - Git must be installed and accessible
64
64
  `;
65
+ this.inputSchema = {
66
+ type: "object",
67
+ properties: {
68
+ projectPath: {
69
+ type: "string",
70
+ description: "Absolute path to the Git repository (REQUIRED)"
71
+ },
72
+ githubRepo: {
73
+ type: "string",
74
+ description: "GitHub repo in format 'owner/repo' (optional, auto-detected)"
75
+ },
76
+ giteaRepo: {
77
+ type: "string",
78
+ description: "Gitea repo in format 'owner/repo' (optional, auto-detected)"
79
+ },
80
+ autoDetect: {
81
+ type: "boolean",
82
+ description: "Auto-detect repos from existing remotes (optional, default: true)"
83
+ }
84
+ },
85
+ required: ["projectPath"],
86
+ additionalProperties: true
87
+ };
65
88
  }
66
89
  async handle(args) {
67
90
  return handleGitFix(args);
@@ -7,6 +7,53 @@ import { Tool, MCPContext } from '../types.js';
7
7
  export declare class GitHistoryTool implements Tool {
8
8
  name: string;
9
9
  description: string;
10
+ inputSchema: {
11
+ type: "object";
12
+ properties: {
13
+ action: {
14
+ type: string;
15
+ enum: string[];
16
+ description: string;
17
+ };
18
+ projectPath: {
19
+ type: string;
20
+ description: string;
21
+ };
22
+ description: {
23
+ type: string;
24
+ description: string;
25
+ };
26
+ message: {
27
+ type: string;
28
+ description: string;
29
+ };
30
+ title: {
31
+ type: string;
32
+ description: string;
33
+ };
34
+ tags: {
35
+ type: string;
36
+ items: {
37
+ type: string;
38
+ };
39
+ description: string;
40
+ };
41
+ category: {
42
+ type: string;
43
+ description: string;
44
+ };
45
+ owner: {
46
+ type: string;
47
+ description: string;
48
+ };
49
+ repo: {
50
+ type: string;
51
+ description: string;
52
+ };
53
+ };
54
+ required: string[];
55
+ additionalProperties: boolean;
56
+ };
10
57
  handle(params: Record<string, any>, ctx: MCPContext): Promise<any>;
11
58
  private trackChange;
12
59
  private listLocalHistory;
@@ -13,6 +13,51 @@ export class GitHistoryTool {
13
13
  constructor() {
14
14
  this.name = 'git-history';
15
15
  this.description = 'Maintain detailed history of all project changes with remote tracking via issues - automatic dual-provider execution';
16
+ this.inputSchema = {
17
+ type: "object",
18
+ properties: {
19
+ action: {
20
+ type: "string",
21
+ enum: ["track", "list", "sync", "report"],
22
+ description: "History operation to perform"
23
+ },
24
+ projectPath: {
25
+ type: "string",
26
+ description: "Absolute path to the Git repository"
27
+ },
28
+ description: {
29
+ type: "string",
30
+ description: "Description of the change being tracked - optional for track action"
31
+ },
32
+ message: {
33
+ type: "string",
34
+ description: "Alternative name for description - optional for track action"
35
+ },
36
+ title: {
37
+ type: "string",
38
+ description: "Custom title for the history issue - optional for track action"
39
+ },
40
+ tags: {
41
+ type: "array",
42
+ items: { type: "string" },
43
+ description: "Tags to categorize the change - optional for track action"
44
+ },
45
+ category: {
46
+ type: "string",
47
+ description: "Category of the change (e.g., 'feature', 'bugfix', 'refactor') - optional for track action, default: 'general'"
48
+ },
49
+ owner: {
50
+ type: "string",
51
+ description: "Repository owner username - optional, uses env vars if not provided"
52
+ },
53
+ repo: {
54
+ type: "string",
55
+ description: "Repository name - optional, auto-detected from projectPath"
56
+ }
57
+ },
58
+ required: ["projectPath", "action"],
59
+ additionalProperties: true
60
+ };
16
61
  }
17
62
  async handle(params, ctx) {
18
63
  const projectPath = params.projectPath;
@@ -6,6 +6,41 @@ import { Tool, MCPContext } from '../types.js';
6
6
  export declare class GitIgnoreTool implements Tool {
7
7
  name: string;
8
8
  description: string;
9
+ inputSchema: {
10
+ type: "object";
11
+ properties: {
12
+ action: {
13
+ type: string;
14
+ enum: string[];
15
+ description: string;
16
+ };
17
+ projectPath: {
18
+ type: string;
19
+ description: string;
20
+ };
21
+ template: {
22
+ type: string;
23
+ description: string;
24
+ };
25
+ patterns: {
26
+ type: string;
27
+ items: {
28
+ type: string;
29
+ };
30
+ description: string;
31
+ };
32
+ comment: {
33
+ type: string;
34
+ description: string;
35
+ };
36
+ content: {
37
+ type: string;
38
+ description: string;
39
+ };
40
+ };
41
+ required: string[];
42
+ additionalProperties: boolean;
43
+ };
9
44
  handle(params: Record<string, any>, ctx: MCPContext): Promise<{
10
45
  success: boolean;
11
46
  path: string;
@@ -9,6 +9,39 @@ export class GitIgnoreTool {
9
9
  constructor() {
10
10
  this.name = 'git-ignore';
11
11
  this.description = 'Manage .gitignore file - create, add, remove, and update ignore patterns';
12
+ this.inputSchema = {
13
+ type: "object",
14
+ properties: {
15
+ action: {
16
+ type: "string",
17
+ enum: ["read", "create", "ensure", "add", "remove", "update", "clear"],
18
+ description: "Git ignore operation to perform"
19
+ },
20
+ projectPath: {
21
+ type: "string",
22
+ description: "Absolute path to the Git repository"
23
+ },
24
+ template: {
25
+ type: "string",
26
+ description: "Template to use for creating .gitignore (e.g., 'default', 'node', 'python') - optional for create, ensure, clear"
27
+ },
28
+ patterns: {
29
+ type: "array",
30
+ items: { type: "string" },
31
+ description: "Array of file patterns to add or remove - required for add and remove actions"
32
+ },
33
+ comment: {
34
+ type: "string",
35
+ description: "Comment to add before patterns - optional for add action"
36
+ },
37
+ content: {
38
+ type: "string",
39
+ description: "Complete .gitignore content to write - required for update action"
40
+ }
41
+ },
42
+ required: ["projectPath", "action"],
43
+ additionalProperties: true
44
+ };
12
45
  }
13
46
  async handle(params, ctx) {
14
47
  const projectPath = params.projectPath;