@rethunk/mcp-multi-root-git 2.9.1 → 3.1.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 (54) hide show
  1. package/AGENTS.md +4 -6
  2. package/CHANGELOG.md +31 -0
  3. package/HUMANS.md +4 -4
  4. package/dist/server/batch-commit-tool.js +24 -15
  5. package/dist/server/error-codes.js +6 -9
  6. package/dist/server/git-blame-tool.js +60 -16
  7. package/dist/server/git-branch-list-tool.js +1 -7
  8. package/dist/server/git-cherry-pick-tool.js +1 -1
  9. package/dist/server/git-diff-summary-tool.js +3 -3
  10. package/dist/server/git-diff-tool.js +1 -4
  11. package/dist/server/git-fetch-tool.js +3 -12
  12. package/dist/server/git-inventory-tool.js +4 -4
  13. package/dist/server/git-log-tool.js +2 -2
  14. package/dist/server/git-merge-tool.js +1 -1
  15. package/dist/server/git-parity-tool.js +2 -2
  16. package/dist/server/git-push-tool.js +1 -1
  17. package/dist/server/git-reflog-tool.js +1 -7
  18. package/dist/server/git-reset-soft-tool.js +1 -1
  19. package/dist/server/git-show-tool.js +2 -11
  20. package/dist/server/git-stash-tool.js +3 -12
  21. package/dist/server/git-status-tool.js +2 -2
  22. package/dist/server/git-tag-tool.js +1 -7
  23. package/dist/server/git-worktree-tool.js +3 -7
  24. package/dist/server/list-presets-tool.js +2 -8
  25. package/dist/server/roots.js +41 -80
  26. package/dist/server/schemas.js +11 -19
  27. package/dist/server/tool-parameter-schemas.js +3 -3
  28. package/dist/server.js +1 -1
  29. package/docs/mcp-tools.md +117 -136
  30. package/package.json +4 -4
  31. package/schemas/batch_commit.json +3 -15
  32. package/schemas/git_blame.json +12 -10
  33. package/schemas/git_branch_list.json +1 -7
  34. package/schemas/git_cherry_pick.json +1 -13
  35. package/schemas/git_diff.json +1 -7
  36. package/schemas/git_diff_summary.json +1 -15
  37. package/schemas/git_fetch.json +1 -7
  38. package/schemas/git_inventory.json +18 -23
  39. package/schemas/git_log.json +18 -23
  40. package/schemas/git_merge.json +1 -13
  41. package/schemas/git_parity.json +18 -23
  42. package/schemas/git_push.json +1 -13
  43. package/schemas/git_reflog.json +1 -7
  44. package/schemas/git_reset_soft.json +1 -13
  45. package/schemas/git_show.json +1 -7
  46. package/schemas/git_stash_apply.json +2 -8
  47. package/schemas/git_stash_list.json +1 -7
  48. package/schemas/git_status.json +18 -23
  49. package/schemas/git_tag.json +1 -7
  50. package/schemas/git_worktree_add.json +1 -13
  51. package/schemas/git_worktree_list.json +1 -7
  52. package/schemas/git_worktree_remove.json +1 -13
  53. package/schemas/list_presets.json +18 -23
  54. package/tool-parameters.schema.json +122 -297
@@ -5,20 +5,9 @@
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "workspaceRoot": {
8
- "description": "Highest-priority root override.",
8
+ "description": "Repo path. Default: first MCP root / cwd.",
9
9
  "type": "string"
10
10
  },
11
- "rootIndex": {
12
- "description": "0-based index into MCP roots; ignored if workspaceRoot set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
- "allWorkspaceRoots": {
18
- "default": false,
19
- "description": "Fan out across all MCP roots.",
20
- "type": "boolean"
21
- },
22
11
  "format": {
23
12
  "default": "markdown",
24
13
  "type": "string",
@@ -62,13 +51,13 @@
62
51
  "from": {
63
52
  "type": "integer",
64
53
  "minimum": 1,
65
- "maximum": 9007199254740991,
54
+ "maximum": 1000000,
66
55
  "description": "Start line number (1-indexed)."
67
56
  },
68
57
  "to": {
69
58
  "type": "integer",
70
59
  "minimum": 1,
71
- "maximum": 9007199254740991,
60
+ "maximum": 1000000,
72
61
  "description": "End line number (1-indexed, inclusive)."
73
62
  }
74
63
  },
@@ -115,7 +104,6 @@
115
104
  }
116
105
  },
117
106
  "required": [
118
- "allWorkspaceRoots",
119
107
  "format",
120
108
  "commits",
121
109
  "push",
@@ -5,15 +5,9 @@
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "workspaceRoot": {
8
- "description": "Highest-priority root override.",
8
+ "description": "Repo path. Default: first MCP root / cwd.",
9
9
  "type": "string"
10
10
  },
11
- "rootIndex": {
12
- "description": "0-based index into MCP roots; ignored if workspaceRoot set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
11
  "format": {
18
12
  "default": "markdown",
19
13
  "type": "string",
@@ -35,18 +29,26 @@
35
29
  "description": "First line of the range to blame (1-based). Requires endLine.",
36
30
  "type": "integer",
37
31
  "minimum": 1,
38
- "maximum": 9007199254740991
32
+ "maximum": 1000000
39
33
  },
40
34
  "endLine": {
41
35
  "description": "Last line of the range to blame (1-based, inclusive). Requires startLine.",
42
36
  "type": "integer",
43
37
  "minimum": 1,
44
- "maximum": 9007199254740991
38
+ "maximum": 1000000
39
+ },
40
+ "maxLines": {
41
+ "default": 2000,
42
+ "description": "Max blamed lines to return. Default: 2000.",
43
+ "type": "integer",
44
+ "minimum": 1,
45
+ "maximum": 10000
45
46
  }
46
47
  },
47
48
  "required": [
48
49
  "format",
49
- "path"
50
+ "path",
51
+ "maxLines"
50
52
  ],
51
53
  "additionalProperties": false
52
54
  }
@@ -5,15 +5,9 @@
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "workspaceRoot": {
8
- "description": "Highest-priority root override.",
8
+ "description": "Repo path. Default: first MCP root / cwd.",
9
9
  "type": "string"
10
10
  },
11
- "rootIndex": {
12
- "description": "0-based index into MCP roots; ignored if workspaceRoot set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
11
  "format": {
18
12
  "default": "markdown",
19
13
  "type": "string",
@@ -5,20 +5,9 @@
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "workspaceRoot": {
8
- "description": "Highest-priority root override.",
8
+ "description": "Repo path. Default: first MCP root / cwd.",
9
9
  "type": "string"
10
10
  },
11
- "rootIndex": {
12
- "description": "0-based index into MCP roots; ignored if workspaceRoot set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
- "allWorkspaceRoots": {
18
- "default": false,
19
- "description": "Fan out across all MCP roots.",
20
- "type": "boolean"
21
- },
22
11
  "format": {
23
12
  "default": "markdown",
24
13
  "type": "string",
@@ -58,7 +47,6 @@
58
47
  }
59
48
  },
60
49
  "required": [
61
- "allWorkspaceRoots",
62
50
  "format",
63
51
  "sources",
64
52
  "deleteMergedBranches",
@@ -5,15 +5,9 @@
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "workspaceRoot": {
8
- "description": "Highest-priority root override.",
8
+ "description": "Repo path. Default: first MCP root / cwd.",
9
9
  "type": "string"
10
10
  },
11
- "rootIndex": {
12
- "description": "0-based index into MCP roots; ignored if workspaceRoot set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
11
  "format": {
18
12
  "default": "markdown",
19
13
  "type": "string",
@@ -5,23 +5,9 @@
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "workspaceRoot": {
8
- "description": "Highest-priority root override.",
8
+ "description": "Repo path. Default: first MCP root / cwd.",
9
9
  "type": "string"
10
10
  },
11
- "rootIndex": {
12
- "description": "0-based index into MCP roots; ignored if workspaceRoot set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
- "absoluteGitRoots": {
18
- "description": "Absolute paths to git repo roots; use for sibling clones under a non-git parent.",
19
- "maxItems": 256,
20
- "type": "array",
21
- "items": {
22
- "type": "string"
23
- }
24
- },
25
11
  "format": {
26
12
  "default": "markdown",
27
13
  "type": "string",
@@ -5,15 +5,9 @@
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "workspaceRoot": {
8
- "description": "Highest-priority root override.",
8
+ "description": "Repo path. Default: first MCP root / cwd.",
9
9
  "type": "string"
10
10
  },
11
- "rootIndex": {
12
- "description": "0-based index into MCP roots; ignored if workspaceRoot set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
11
  "format": {
18
12
  "default": "markdown",
19
13
  "type": "string",
@@ -4,28 +4,24 @@
4
4
  "description": "Parameter schema for the 'git_inventory' MCP tool.",
5
5
  "type": "object",
6
6
  "properties": {
7
- "workspaceRoot": {
8
- "description": "Highest-priority root override.",
9
- "type": "string"
10
- },
11
- "rootIndex": {
12
- "description": "0-based index into MCP roots; ignored if workspaceRoot set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
- "allWorkspaceRoots": {
18
- "default": false,
19
- "description": "Fan out across all MCP roots.",
20
- "type": "boolean"
21
- },
22
- "absoluteGitRoots": {
23
- "description": "Absolute paths to git repo roots; use for sibling clones under a non-git parent.",
24
- "maxItems": 256,
25
- "type": "array",
26
- "items": {
27
- "type": "string"
28
- }
7
+ "root": {
8
+ "description": "Repo path, array of paths, or \"*\" for all MCP roots.",
9
+ "anyOf": [
10
+ {
11
+ "type": "string"
12
+ },
13
+ {
14
+ "maxItems": 256,
15
+ "type": "array",
16
+ "items": {
17
+ "type": "string"
18
+ }
19
+ },
20
+ {
21
+ "type": "string",
22
+ "const": "*"
23
+ }
24
+ ]
29
25
  },
30
26
  "format": {
31
27
  "default": "markdown",
@@ -65,7 +61,6 @@
65
61
  }
66
62
  },
67
63
  "required": [
68
- "allWorkspaceRoots",
69
64
  "format",
70
65
  "presetMerge",
71
66
  "maxRoots"
@@ -4,28 +4,24 @@
4
4
  "description": "Parameter schema for the 'git_log' MCP tool.",
5
5
  "type": "object",
6
6
  "properties": {
7
- "workspaceRoot": {
8
- "description": "Highest-priority root override.",
9
- "type": "string"
10
- },
11
- "rootIndex": {
12
- "description": "0-based index into MCP roots; ignored if workspaceRoot set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
- "allWorkspaceRoots": {
18
- "default": false,
19
- "description": "Fan out across all MCP roots.",
20
- "type": "boolean"
21
- },
22
- "absoluteGitRoots": {
23
- "description": "Absolute paths to git repo roots; use for sibling clones under a non-git parent.",
24
- "maxItems": 256,
25
- "type": "array",
26
- "items": {
27
- "type": "string"
28
- }
7
+ "root": {
8
+ "description": "Repo path, array of paths, or \"*\" for all MCP roots.",
9
+ "anyOf": [
10
+ {
11
+ "type": "string"
12
+ },
13
+ {
14
+ "maxItems": 256,
15
+ "type": "array",
16
+ "items": {
17
+ "type": "string"
18
+ }
19
+ },
20
+ {
21
+ "type": "string",
22
+ "const": "*"
23
+ }
24
+ ]
29
25
  },
30
26
  "format": {
31
27
  "default": "markdown",
@@ -69,7 +65,6 @@
69
65
  }
70
66
  },
71
67
  "required": [
72
- "allWorkspaceRoots",
73
68
  "format",
74
69
  "maxCommits"
75
70
  ],
@@ -5,20 +5,9 @@
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "workspaceRoot": {
8
- "description": "Highest-priority root override.",
8
+ "description": "Repo path. Default: first MCP root / cwd.",
9
9
  "type": "string"
10
10
  },
11
- "rootIndex": {
12
- "description": "0-based index into MCP roots; ignored if workspaceRoot set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
- "allWorkspaceRoots": {
18
- "default": false,
19
- "description": "Fan out across all MCP roots.",
20
- "type": "boolean"
21
- },
22
11
  "format": {
23
12
  "default": "markdown",
24
13
  "type": "string",
@@ -68,7 +57,6 @@
68
57
  }
69
58
  },
70
59
  "required": [
71
- "allWorkspaceRoots",
72
60
  "format",
73
61
  "sources",
74
62
  "strategy",
@@ -4,28 +4,24 @@
4
4
  "description": "Parameter schema for the 'git_parity' MCP tool.",
5
5
  "type": "object",
6
6
  "properties": {
7
- "workspaceRoot": {
8
- "description": "Highest-priority root override.",
9
- "type": "string"
10
- },
11
- "rootIndex": {
12
- "description": "0-based index into MCP roots; ignored if workspaceRoot set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
- "allWorkspaceRoots": {
18
- "default": false,
19
- "description": "Fan out across all MCP roots.",
20
- "type": "boolean"
21
- },
22
- "absoluteGitRoots": {
23
- "description": "Absolute paths to git repo roots; use for sibling clones under a non-git parent.",
24
- "maxItems": 256,
25
- "type": "array",
26
- "items": {
27
- "type": "string"
28
- }
7
+ "root": {
8
+ "description": "Repo path, array of paths, or \"*\" for all MCP roots.",
9
+ "anyOf": [
10
+ {
11
+ "type": "string"
12
+ },
13
+ {
14
+ "maxItems": 256,
15
+ "type": "array",
16
+ "items": {
17
+ "type": "string"
18
+ }
19
+ },
20
+ {
21
+ "type": "string",
22
+ "const": "*"
23
+ }
24
+ ]
29
25
  },
30
26
  "format": {
31
27
  "default": "markdown",
@@ -66,7 +62,6 @@
66
62
  }
67
63
  },
68
64
  "required": [
69
- "allWorkspaceRoots",
70
65
  "format",
71
66
  "presetMerge"
72
67
  ],
@@ -5,20 +5,9 @@
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "workspaceRoot": {
8
- "description": "Highest-priority root override.",
8
+ "description": "Repo path. Default: first MCP root / cwd.",
9
9
  "type": "string"
10
10
  },
11
- "rootIndex": {
12
- "description": "0-based index into MCP roots; ignored if workspaceRoot set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
- "allWorkspaceRoots": {
18
- "default": false,
19
- "description": "Fan out across all MCP roots.",
20
- "type": "boolean"
21
- },
22
11
  "format": {
23
12
  "default": "markdown",
24
13
  "type": "string",
@@ -42,7 +31,6 @@
42
31
  }
43
32
  },
44
33
  "required": [
45
- "allWorkspaceRoots",
46
34
  "format",
47
35
  "setUpstream"
48
36
  ],
@@ -5,15 +5,9 @@
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "workspaceRoot": {
8
- "description": "Highest-priority root override.",
8
+ "description": "Repo path. Default: first MCP root / cwd.",
9
9
  "type": "string"
10
10
  },
11
- "rootIndex": {
12
- "description": "0-based index into MCP roots; ignored if workspaceRoot set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
11
  "format": {
18
12
  "default": "markdown",
19
13
  "type": "string",
@@ -5,20 +5,9 @@
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "workspaceRoot": {
8
- "description": "Highest-priority root override.",
8
+ "description": "Repo path. Default: first MCP root / cwd.",
9
9
  "type": "string"
10
10
  },
11
- "rootIndex": {
12
- "description": "0-based index into MCP roots; ignored if workspaceRoot set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
- "allWorkspaceRoots": {
18
- "default": false,
19
- "description": "Fan out across all MCP roots.",
20
- "type": "boolean"
21
- },
22
11
  "format": {
23
12
  "default": "markdown",
24
13
  "type": "string",
@@ -34,7 +23,6 @@
34
23
  }
35
24
  },
36
25
  "required": [
37
- "allWorkspaceRoots",
38
26
  "format",
39
27
  "ref"
40
28
  ],
@@ -5,15 +5,9 @@
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "workspaceRoot": {
8
- "description": "Highest-priority root override.",
8
+ "description": "Repo path. Default: first MCP root / cwd.",
9
9
  "type": "string"
10
10
  },
11
- "rootIndex": {
12
- "description": "0-based index into MCP roots; ignored if workspaceRoot set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
11
  "format": {
18
12
  "default": "markdown",
19
13
  "type": "string",
@@ -5,15 +5,9 @@
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "workspaceRoot": {
8
- "description": "Highest-priority root override.",
8
+ "description": "Repo path. Default: first MCP root / cwd.",
9
9
  "type": "string"
10
10
  },
11
- "rootIndex": {
12
- "description": "0-based index into MCP roots; ignored if workspaceRoot set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
11
  "format": {
18
12
  "default": "markdown",
19
13
  "type": "string",
@@ -27,7 +21,7 @@
27
21
  "description": "Stash index (defaults to 0 for stash@{0}).",
28
22
  "type": "integer",
29
23
  "minimum": 0,
30
- "maximum": 9007199254740991
24
+ "maximum": 10000
31
25
  },
32
26
  "pop": {
33
27
  "default": false,
@@ -5,15 +5,9 @@
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "workspaceRoot": {
8
- "description": "Highest-priority root override.",
8
+ "description": "Repo path. Default: first MCP root / cwd.",
9
9
  "type": "string"
10
10
  },
11
- "rootIndex": {
12
- "description": "0-based index into MCP roots; ignored if workspaceRoot set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
11
  "format": {
18
12
  "default": "markdown",
19
13
  "type": "string",
@@ -4,28 +4,24 @@
4
4
  "description": "Parameter schema for the 'git_status' MCP tool.",
5
5
  "type": "object",
6
6
  "properties": {
7
- "workspaceRoot": {
8
- "description": "Highest-priority root override.",
9
- "type": "string"
10
- },
11
- "rootIndex": {
12
- "description": "0-based index into MCP roots; ignored if workspaceRoot set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
- "allWorkspaceRoots": {
18
- "default": false,
19
- "description": "Fan out across all MCP roots.",
20
- "type": "boolean"
21
- },
22
- "absoluteGitRoots": {
23
- "description": "Absolute paths to git repo roots; use for sibling clones under a non-git parent.",
24
- "maxItems": 256,
25
- "type": "array",
26
- "items": {
27
- "type": "string"
28
- }
7
+ "root": {
8
+ "description": "Repo path, array of paths, or \"*\" for all MCP roots.",
9
+ "anyOf": [
10
+ {
11
+ "type": "string"
12
+ },
13
+ {
14
+ "maxItems": 256,
15
+ "type": "array",
16
+ "items": {
17
+ "type": "string"
18
+ }
19
+ },
20
+ {
21
+ "type": "string",
22
+ "const": "*"
23
+ }
24
+ ]
29
25
  },
30
26
  "format": {
31
27
  "default": "markdown",
@@ -41,7 +37,6 @@
41
37
  }
42
38
  },
43
39
  "required": [
44
- "allWorkspaceRoots",
45
40
  "format",
46
41
  "includeSubmodules"
47
42
  ],
@@ -5,15 +5,9 @@
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "workspaceRoot": {
8
- "description": "Highest-priority root override.",
8
+ "description": "Repo path. Default: first MCP root / cwd.",
9
9
  "type": "string"
10
10
  },
11
- "rootIndex": {
12
- "description": "0-based index into MCP roots; ignored if workspaceRoot set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
11
  "format": {
18
12
  "default": "markdown",
19
13
  "type": "string",
@@ -5,20 +5,9 @@
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "workspaceRoot": {
8
- "description": "Highest-priority root override.",
8
+ "description": "Repo path. Default: first MCP root / cwd.",
9
9
  "type": "string"
10
10
  },
11
- "rootIndex": {
12
- "description": "0-based index into MCP roots; ignored if workspaceRoot set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
- "allWorkspaceRoots": {
18
- "default": false,
19
- "description": "Fan out across all MCP roots.",
20
- "type": "boolean"
21
- },
22
11
  "format": {
23
12
  "default": "markdown",
24
13
  "type": "string",
@@ -43,7 +32,6 @@
43
32
  }
44
33
  },
45
34
  "required": [
46
- "allWorkspaceRoots",
47
35
  "format",
48
36
  "path",
49
37
  "branch"
@@ -5,15 +5,9 @@
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "workspaceRoot": {
8
- "description": "Highest-priority root override.",
8
+ "description": "Repo path. Default: first MCP root / cwd.",
9
9
  "type": "string"
10
10
  },
11
- "rootIndex": {
12
- "description": "0-based index into MCP roots; ignored if workspaceRoot set.",
13
- "type": "integer",
14
- "minimum": 0,
15
- "maximum": 9007199254740991
16
- },
17
11
  "format": {
18
12
  "default": "markdown",
19
13
  "type": "string",