@rethunk/mcp-multi-root-git 3.1.0 → 4.0.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.
- package/AGENTS.md +21 -15
- package/CHANGELOG.md +114 -39
- package/HUMANS.md +20 -39
- package/README.md +30 -13
- package/dist/repo-paths.js +57 -13
- package/dist/server/batch-commit-tool.js +187 -46
- package/dist/server/error-codes.js +25 -7
- package/dist/server/git-blame-tool.js +6 -3
- package/dist/server/git-branch-tool.js +151 -0
- package/dist/server/git-cherry-pick-tool.js +220 -11
- package/dist/server/git-conflicts-tool.js +230 -0
- package/dist/server/git-diff-summary-tool.js +36 -25
- package/dist/server/git-diff-tool.js +55 -27
- package/dist/server/git-grep-tool.js +188 -0
- package/dist/server/git-inventory-tool.js +26 -6
- package/dist/server/git-log-tool.js +35 -4
- package/dist/server/git-merge-tool.js +70 -12
- package/dist/server/git-parity-tool.js +13 -4
- package/dist/server/git-push-tool.js +3 -1
- package/dist/server/git-refs.js +48 -17
- package/dist/server/git-revert-tool.js +160 -0
- package/dist/server/git-show-tool.js +7 -3
- package/dist/server/git-stash-tool.js +110 -67
- package/dist/server/git-tag-tool.js +7 -6
- package/dist/server/git-worktree-tool.js +65 -53
- package/dist/server/git.js +116 -24
- package/dist/server/inventory.js +90 -32
- package/dist/server/presets-resource.js +37 -20
- package/dist/server/presets.js +87 -15
- package/dist/server/roots.js +13 -1
- package/dist/server/schemas.js +9 -2
- package/dist/server/test-harness.js +11 -4
- package/dist/server/tool-parameter-schemas.js +44 -55
- package/dist/server/tools.js +36 -17
- package/dist/server.js +1 -1
- package/docs/install.md +52 -5
- package/docs/mcp-tools.md +385 -178
- package/package.json +6 -6
- package/schemas/batch_commit.json +2 -2
- package/schemas/git_blame.json +1 -1
- package/schemas/git_branch.json +54 -0
- package/schemas/git_cherry_pick.json +12 -2
- package/schemas/git_cherry_pick_continue.json +34 -0
- package/schemas/{git_reflog.json → git_conflicts.json} +12 -12
- package/schemas/git_diff.json +11 -3
- package/schemas/git_grep.json +85 -0
- package/schemas/git_inventory.json +19 -5
- package/schemas/git_log.json +7 -6
- package/schemas/git_merge.json +2 -2
- package/schemas/git_parity.json +0 -5
- package/schemas/git_revert.json +47 -0
- package/schemas/git_show.json +1 -1
- package/schemas/git_stash_push.json +47 -0
- package/schemas/git_status.json +0 -5
- package/schemas/git_worktree_add.json +1 -1
- package/schemas/git_worktree_remove.json +1 -1
- package/schemas/index.json +28 -23
- package/schemas/list_presets.json +0 -5
- package/tool-parameters.schema.json +326 -167
- package/dist/server/git-branch-list-tool.js +0 -132
- package/dist/server/git-fetch-tool.js +0 -257
- package/dist/server/git-reflog-tool.js +0 -120
- package/schemas/git_branch_list.json +0 -30
- package/schemas/git_fetch.json +0 -46
- package/schemas/git_stash_list.json +0 -24
- package/schemas/git_worktree_list.json +0 -24
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rethunk/mcp-multi-root-git",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"description": "MCP stdio server: multi-root git status, inventory, and HEAD parity checks. Generic tools usable by any workspace.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": false,
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"lint": "biome check .",
|
|
45
45
|
"format": "biome check --write .",
|
|
46
46
|
"typecheck": "tsc --noEmit",
|
|
47
|
-
"ci": "bun run schema:tools:check && bun run lint && bun run typecheck && bun run test && bun run build"
|
|
47
|
+
"ci": "bun run schema:tools:check && bun run schema:individual:check && bun run lint && bun run typecheck && set -o pipefail && bun run test:coverage 2>&1 | tee .coverage-ci.txt && bun run coverage:check .coverage-ci.txt 80 && bun run build"
|
|
48
48
|
},
|
|
49
49
|
"keywords": [
|
|
50
50
|
"mcp",
|
|
@@ -67,15 +67,15 @@
|
|
|
67
67
|
"access": "public"
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|
|
70
|
-
"fastmcp": "^4.
|
|
70
|
+
"fastmcp": "^4.7.2",
|
|
71
71
|
"zod": "^4.4.3"
|
|
72
72
|
},
|
|
73
73
|
"devDependencies": {
|
|
74
|
-
"@biomejs/biome": "^2.5.
|
|
74
|
+
"@biomejs/biome": "^2.5.4",
|
|
75
75
|
"@types/bun": "^1.3.14",
|
|
76
|
-
"@types/node": "^26.1.
|
|
76
|
+
"@types/node": "^26.1.1",
|
|
77
77
|
"rimraf": "^6.1.3",
|
|
78
|
-
"typescript": "^
|
|
78
|
+
"typescript": "^7.0.2"
|
|
79
79
|
},
|
|
80
80
|
"overrides": {
|
|
81
81
|
"@hono/node-server": "^1.19.14",
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
}
|
|
78
78
|
]
|
|
79
79
|
},
|
|
80
|
-
"description": "Paths to stage, relative to git root. String or `{ path, lines }` for hunk-level staging. Deleted tracked files are staged via `git rm --cached`. Cannot combine `lines` with a deleted file."
|
|
80
|
+
"description": "Paths to stage, relative to git root. String or `{ path, lines }` for hunk-level staging. Each path is staged individually (`git add` / `git apply --cached` / `git rm --cached`); on mid-entry stage failure, already-staged paths for that entry are unstaged. Deleted tracked files are staged via `git rm --cached`. Cannot combine `lines` with a deleted file. Rejects `.`, the repo root, and directory pathspecs."
|
|
81
81
|
}
|
|
82
82
|
},
|
|
83
83
|
"required": [
|
|
@@ -99,7 +99,7 @@
|
|
|
99
99
|
},
|
|
100
100
|
"dryRun": {
|
|
101
101
|
"default": false,
|
|
102
|
-
"description": "Stage files and return a preview without writing commits;
|
|
102
|
+
"description": "Stage files and return a preview without writing commits; restores the index afterwards. Response is marked DRY RUN.",
|
|
103
103
|
"type": "boolean"
|
|
104
104
|
}
|
|
105
105
|
},
|
package/schemas/git_blame.json
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"description": "Repo-relative path to the file to blame."
|
|
23
23
|
},
|
|
24
24
|
"ref": {
|
|
25
|
-
"description": "Optional commit-ish (SHA, branch, tag) to blame at.",
|
|
25
|
+
"description": "Optional commit-ish (SHA, branch, tag) to blame at. Ancestor notation is accepted (e.g. \"HEAD~3\", \"main^2\").",
|
|
26
26
|
"type": "string"
|
|
27
27
|
},
|
|
28
28
|
"startLine": {
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "@rethunk/mcp-multi-root-git: git_branch",
|
|
4
|
+
"description": "Parameter schema for the 'git_branch' MCP tool.",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"workspaceRoot": {
|
|
8
|
+
"description": "Repo path. Default: first MCP root / cwd.",
|
|
9
|
+
"type": "string"
|
|
10
|
+
},
|
|
11
|
+
"format": {
|
|
12
|
+
"default": "markdown",
|
|
13
|
+
"type": "string",
|
|
14
|
+
"enum": [
|
|
15
|
+
"markdown",
|
|
16
|
+
"json"
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
"action": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"enum": [
|
|
22
|
+
"create",
|
|
23
|
+
"delete",
|
|
24
|
+
"rename"
|
|
25
|
+
],
|
|
26
|
+
"description": "Which branch operation to perform."
|
|
27
|
+
},
|
|
28
|
+
"name": {
|
|
29
|
+
"type": "string",
|
|
30
|
+
"minLength": 1,
|
|
31
|
+
"description": "Branch name to create/delete, or the existing branch name for rename."
|
|
32
|
+
},
|
|
33
|
+
"from": {
|
|
34
|
+
"description": "Commit-ish to base a new branch on (create only). Default: HEAD.",
|
|
35
|
+
"type": "string"
|
|
36
|
+
},
|
|
37
|
+
"newName": {
|
|
38
|
+
"description": "New branch name (required for rename).",
|
|
39
|
+
"type": "string"
|
|
40
|
+
},
|
|
41
|
+
"force": {
|
|
42
|
+
"default": false,
|
|
43
|
+
"description": "Force-delete an unmerged branch (`git branch -D`). Delete only; never overrides protected-branch rejection.",
|
|
44
|
+
"type": "boolean"
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"required": [
|
|
48
|
+
"format",
|
|
49
|
+
"action",
|
|
50
|
+
"name",
|
|
51
|
+
"force"
|
|
52
|
+
],
|
|
53
|
+
"additionalProperties": false
|
|
54
|
+
}
|
|
@@ -37,13 +37,22 @@
|
|
|
37
37
|
},
|
|
38
38
|
"deleteMergedWorktrees": {
|
|
39
39
|
"default": false,
|
|
40
|
-
"description": "Remove local worktrees on branch-kind sources after success. Protected tails skipped.",
|
|
40
|
+
"description": "Remove local worktrees on branch-kind sources after success. Protected names and path tails skipped.",
|
|
41
41
|
"type": "boolean"
|
|
42
42
|
},
|
|
43
43
|
"strictMergedRefEquality": {
|
|
44
44
|
"default": false,
|
|
45
45
|
"description": "false (default): delete branch when every commit is content-equivalent on destination (patch-id, normal cherry-pick outcome). true: require strict ref ancestry (`git branch -d` semantics — will refuse after cherry-pick due to SHA mismatch).",
|
|
46
46
|
"type": "boolean"
|
|
47
|
+
},
|
|
48
|
+
"onConflict": {
|
|
49
|
+
"default": "abort",
|
|
50
|
+
"description": "`abort` (default): on conflict, run `cherry-pick --abort` and roll back the whole range (unchanged behavior). `pause`: on conflict, leave the conflict and native cherry-pick sequencer state in place — commits already applied stay applied — so it can be resolved and resumed via `git_cherry_pick_continue`.",
|
|
51
|
+
"type": "string",
|
|
52
|
+
"enum": [
|
|
53
|
+
"abort",
|
|
54
|
+
"pause"
|
|
55
|
+
]
|
|
47
56
|
}
|
|
48
57
|
},
|
|
49
58
|
"required": [
|
|
@@ -51,7 +60,8 @@
|
|
|
51
60
|
"sources",
|
|
52
61
|
"deleteMergedBranches",
|
|
53
62
|
"deleteMergedWorktrees",
|
|
54
|
-
"strictMergedRefEquality"
|
|
63
|
+
"strictMergedRefEquality",
|
|
64
|
+
"onConflict"
|
|
55
65
|
],
|
|
56
66
|
"additionalProperties": false
|
|
57
67
|
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "@rethunk/mcp-multi-root-git: git_cherry_pick_continue",
|
|
4
|
+
"description": "Parameter schema for the 'git_cherry_pick_continue' MCP tool.",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"workspaceRoot": {
|
|
8
|
+
"description": "Repo path. Default: first MCP root / cwd.",
|
|
9
|
+
"type": "string"
|
|
10
|
+
},
|
|
11
|
+
"format": {
|
|
12
|
+
"default": "markdown",
|
|
13
|
+
"type": "string",
|
|
14
|
+
"enum": [
|
|
15
|
+
"markdown",
|
|
16
|
+
"json"
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
"action": {
|
|
20
|
+
"default": "continue",
|
|
21
|
+
"description": "\"continue\" (default): resolve conflicts, stage them, then resume the sequencer. \"abort\": roll back to the pre-cherry-pick HEAD.",
|
|
22
|
+
"type": "string",
|
|
23
|
+
"enum": [
|
|
24
|
+
"continue",
|
|
25
|
+
"abort"
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"required": [
|
|
30
|
+
"format",
|
|
31
|
+
"action"
|
|
32
|
+
],
|
|
33
|
+
"additionalProperties": false
|
|
34
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"title": "@rethunk/mcp-multi-root-git:
|
|
4
|
-
"description": "Parameter schema for the '
|
|
3
|
+
"title": "@rethunk/mcp-multi-root-git: git_conflicts",
|
|
4
|
+
"description": "Parameter schema for the 'git_conflicts' MCP tool.",
|
|
5
5
|
"type": "object",
|
|
6
6
|
"properties": {
|
|
7
7
|
"workspaceRoot": {
|
|
@@ -16,23 +16,23 @@
|
|
|
16
16
|
"json"
|
|
17
17
|
]
|
|
18
18
|
},
|
|
19
|
-
"
|
|
20
|
-
"default":
|
|
21
|
-
"description": "
|
|
22
|
-
"type": "
|
|
19
|
+
"withHunks": {
|
|
20
|
+
"default": true,
|
|
21
|
+
"description": "Parse conflict-marker hunks per file. Set false for just the path list.",
|
|
22
|
+
"type": "boolean"
|
|
23
23
|
},
|
|
24
|
-
"
|
|
25
|
-
"default":
|
|
26
|
-
"description": "
|
|
24
|
+
"maxLinesPerFile": {
|
|
25
|
+
"default": 200,
|
|
26
|
+
"description": "Cap on lines scanned per file before marking `truncated: true`.",
|
|
27
27
|
"type": "integer",
|
|
28
28
|
"minimum": 1,
|
|
29
|
-
"maximum":
|
|
29
|
+
"maximum": 2000
|
|
30
30
|
}
|
|
31
31
|
},
|
|
32
32
|
"required": [
|
|
33
33
|
"format",
|
|
34
|
-
"
|
|
35
|
-
"
|
|
34
|
+
"withHunks",
|
|
35
|
+
"maxLinesPerFile"
|
|
36
36
|
],
|
|
37
37
|
"additionalProperties": false
|
|
38
38
|
}
|
package/schemas/git_diff.json
CHANGED
|
@@ -17,11 +17,11 @@
|
|
|
17
17
|
]
|
|
18
18
|
},
|
|
19
19
|
"base": {
|
|
20
|
-
"description": "Base ref (e.g. \"main\"
|
|
20
|
+
"description": "Base ref (e.g. \"main\"). Ancestor notation is accepted (e.g. \"HEAD~3\", \"main^2\"). Omit for unstaged changes.",
|
|
21
21
|
"type": "string"
|
|
22
22
|
},
|
|
23
23
|
"head": {
|
|
24
|
-
"description": "Head ref (e.g. \"feature-branch\"). Defaults to HEAD. Used only when `base` is set.",
|
|
24
|
+
"description": "Head ref (e.g. \"feature-branch\"). Ancestor notation is accepted (e.g. \"HEAD~3\", \"main^2\"). Defaults to HEAD. Used only when `base` is set.",
|
|
25
25
|
"type": "string"
|
|
26
26
|
},
|
|
27
27
|
"path": {
|
|
@@ -45,11 +45,19 @@
|
|
|
45
45
|
"type": "integer",
|
|
46
46
|
"minimum": 0,
|
|
47
47
|
"maximum": 100
|
|
48
|
+
},
|
|
49
|
+
"maxBytes": {
|
|
50
|
+
"default": 512000,
|
|
51
|
+
"description": "Max UTF-8 bytes of diff text to return (default 512000). Oversized output is truncated with truncated:true.",
|
|
52
|
+
"type": "integer",
|
|
53
|
+
"minimum": 1024,
|
|
54
|
+
"maximum": 10000000
|
|
48
55
|
}
|
|
49
56
|
},
|
|
50
57
|
"required": [
|
|
51
58
|
"format",
|
|
52
|
-
"staged"
|
|
59
|
+
"staged",
|
|
60
|
+
"maxBytes"
|
|
53
61
|
],
|
|
54
62
|
"additionalProperties": false
|
|
55
63
|
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "@rethunk/mcp-multi-root-git: git_grep",
|
|
4
|
+
"description": "Parameter schema for the 'git_grep' MCP tool.",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"root": {
|
|
8
|
+
"description": "Repo path, array of paths, or \"*\" for all MCP roots.",
|
|
9
|
+
"anyOf": [
|
|
10
|
+
{
|
|
11
|
+
"type": "string"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"type": "array",
|
|
15
|
+
"items": {
|
|
16
|
+
"type": "string"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
"format": {
|
|
22
|
+
"default": "markdown",
|
|
23
|
+
"type": "string",
|
|
24
|
+
"enum": [
|
|
25
|
+
"markdown",
|
|
26
|
+
"json"
|
|
27
|
+
]
|
|
28
|
+
},
|
|
29
|
+
"pickaxe": {
|
|
30
|
+
"type": "object",
|
|
31
|
+
"properties": {
|
|
32
|
+
"mode": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"enum": [
|
|
35
|
+
"S",
|
|
36
|
+
"G"
|
|
37
|
+
],
|
|
38
|
+
"description": "`S` = pickaxe string (`git log -S`); `G` = pickaxe regex (`git log -G`)."
|
|
39
|
+
},
|
|
40
|
+
"term": {
|
|
41
|
+
"type": "string",
|
|
42
|
+
"minLength": 1,
|
|
43
|
+
"maxLength": 500,
|
|
44
|
+
"description": "Search term / regex for pickaxe history."
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"required": [
|
|
48
|
+
"mode",
|
|
49
|
+
"term"
|
|
50
|
+
],
|
|
51
|
+
"additionalProperties": false,
|
|
52
|
+
"description": "Pickaxe history search. Returns `commits[]` (sha + subject) per root."
|
|
53
|
+
},
|
|
54
|
+
"ref": {
|
|
55
|
+
"description": "Commit/branch/tag to use as the history tip. Must be a safe ref token.",
|
|
56
|
+
"type": "string"
|
|
57
|
+
},
|
|
58
|
+
"paths": {
|
|
59
|
+
"description": "Limit history to these paths (must resolve within the repo root).",
|
|
60
|
+
"type": "array",
|
|
61
|
+
"items": {
|
|
62
|
+
"type": "string"
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"ignoreCase": {
|
|
66
|
+
"default": false,
|
|
67
|
+
"description": "Case-insensitive match (`-i`; affects `G` mode regexes).",
|
|
68
|
+
"type": "boolean"
|
|
69
|
+
},
|
|
70
|
+
"maxMatches": {
|
|
71
|
+
"default": 200,
|
|
72
|
+
"description": "Max commits per root (hard cap 1000, default 200).",
|
|
73
|
+
"type": "integer",
|
|
74
|
+
"minimum": 1,
|
|
75
|
+
"maximum": 1000
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"required": [
|
|
79
|
+
"format",
|
|
80
|
+
"pickaxe",
|
|
81
|
+
"ignoreCase",
|
|
82
|
+
"maxMatches"
|
|
83
|
+
],
|
|
84
|
+
"additionalProperties": false
|
|
85
|
+
}
|
|
@@ -11,15 +11,10 @@
|
|
|
11
11
|
"type": "string"
|
|
12
12
|
},
|
|
13
13
|
{
|
|
14
|
-
"maxItems": 256,
|
|
15
14
|
"type": "array",
|
|
16
15
|
"items": {
|
|
17
16
|
"type": "string"
|
|
18
17
|
}
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
"type": "string",
|
|
22
|
-
"const": "*"
|
|
23
18
|
}
|
|
24
19
|
]
|
|
25
20
|
},
|
|
@@ -53,6 +48,25 @@
|
|
|
53
48
|
"description": "Pair with `remote`.",
|
|
54
49
|
"type": "string"
|
|
55
50
|
},
|
|
51
|
+
"compareRefs": {
|
|
52
|
+
"description": "Ahead/behind between two local refs (e.g. main vs a feature branch), independent of upstream tracking.",
|
|
53
|
+
"type": "object",
|
|
54
|
+
"properties": {
|
|
55
|
+
"left": {
|
|
56
|
+
"type": "string",
|
|
57
|
+
"description": "Base ref (ahead = commits in right not in left)."
|
|
58
|
+
},
|
|
59
|
+
"right": {
|
|
60
|
+
"type": "string",
|
|
61
|
+
"description": "Other ref (behind = commits in left not in right)."
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"required": [
|
|
65
|
+
"left",
|
|
66
|
+
"right"
|
|
67
|
+
],
|
|
68
|
+
"additionalProperties": false
|
|
69
|
+
},
|
|
56
70
|
"maxRoots": {
|
|
57
71
|
"default": 64,
|
|
58
72
|
"type": "integer",
|
package/schemas/git_log.json
CHANGED
|
@@ -11,15 +11,10 @@
|
|
|
11
11
|
"type": "string"
|
|
12
12
|
},
|
|
13
13
|
{
|
|
14
|
-
"maxItems": 256,
|
|
15
14
|
"type": "array",
|
|
16
15
|
"items": {
|
|
17
16
|
"type": "string"
|
|
18
17
|
}
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
"type": "string",
|
|
22
|
-
"const": "*"
|
|
23
18
|
}
|
|
24
19
|
]
|
|
25
20
|
},
|
|
@@ -62,11 +57,17 @@
|
|
|
62
57
|
"branch": {
|
|
63
58
|
"description": "Ref/branch to log from. Default: HEAD.",
|
|
64
59
|
"type": "string"
|
|
60
|
+
},
|
|
61
|
+
"follow": {
|
|
62
|
+
"default": false,
|
|
63
|
+
"description": "Pass `git log --follow` for rename-aware history. Requires exactly one entry in `paths`.",
|
|
64
|
+
"type": "boolean"
|
|
65
65
|
}
|
|
66
66
|
},
|
|
67
67
|
"required": [
|
|
68
68
|
"format",
|
|
69
|
-
"maxCommits"
|
|
69
|
+
"maxCommits",
|
|
70
|
+
"follow"
|
|
70
71
|
],
|
|
71
72
|
"additionalProperties": false
|
|
72
73
|
}
|
package/schemas/git_merge.json
CHANGED
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
},
|
|
33
33
|
"strategy": {
|
|
34
34
|
"default": "auto",
|
|
35
|
-
"description": "`auto` (default): cascade fast-forward → rebase → merge-commit per source. `ff-only`: only fast-forward, fail if diverged. `rebase`: rebase source onto destination, then fast-forward (no merge-commit fallback). `merge`: always create a merge commit (no fast-forward).",
|
|
35
|
+
"description": "`auto` (default): cascade fast-forward → rebase → merge-commit per source. `ff-only`: only fast-forward, fail if diverged. `rebase`: rebase source onto destination, then fast-forward (no merge-commit fallback). `merge`: always create a merge commit (no fast-forward). Note: `auto`/`rebase` rewrite the source branch tip in place when rebasing (new SHAs).",
|
|
36
36
|
"type": "string",
|
|
37
37
|
"enum": [
|
|
38
38
|
"auto",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
},
|
|
53
53
|
"deleteMergedWorktrees": {
|
|
54
54
|
"default": false,
|
|
55
|
-
"description": "Remove local worktrees on source branches after clean merge (`git worktree remove`). Protected tails skipped.",
|
|
55
|
+
"description": "Remove local worktrees on source branches after clean merge (`git worktree remove`). Protected source names and path tails skipped.",
|
|
56
56
|
"type": "boolean"
|
|
57
57
|
}
|
|
58
58
|
},
|
package/schemas/git_parity.json
CHANGED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "@rethunk/mcp-multi-root-git: git_revert",
|
|
4
|
+
"description": "Parameter schema for the 'git_revert' MCP tool.",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"workspaceRoot": {
|
|
8
|
+
"description": "Repo path. Default: first MCP root / cwd.",
|
|
9
|
+
"type": "string"
|
|
10
|
+
},
|
|
11
|
+
"format": {
|
|
12
|
+
"default": "markdown",
|
|
13
|
+
"type": "string",
|
|
14
|
+
"enum": [
|
|
15
|
+
"markdown",
|
|
16
|
+
"json"
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
"sources": {
|
|
20
|
+
"minItems": 1,
|
|
21
|
+
"maxItems": 20,
|
|
22
|
+
"type": "array",
|
|
23
|
+
"items": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"minLength": 1
|
|
26
|
+
},
|
|
27
|
+
"description": "Commits to revert, applied in order: SHA, branch/tag name, or ancestor notation (`HEAD~1`)."
|
|
28
|
+
},
|
|
29
|
+
"noCommit": {
|
|
30
|
+
"default": false,
|
|
31
|
+
"description": "Pass `--no-commit`: apply the revert(s) to the index/working tree without committing (changes are left staged instead).",
|
|
32
|
+
"type": "boolean"
|
|
33
|
+
},
|
|
34
|
+
"mainline": {
|
|
35
|
+
"description": "Parent number (`-m N`) to diff against — required when reverting a merge commit.",
|
|
36
|
+
"type": "integer",
|
|
37
|
+
"minimum": 1,
|
|
38
|
+
"maximum": 9007199254740991
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"required": [
|
|
42
|
+
"format",
|
|
43
|
+
"sources",
|
|
44
|
+
"noCommit"
|
|
45
|
+
],
|
|
46
|
+
"additionalProperties": false
|
|
47
|
+
}
|
package/schemas/git_show.json
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"ref": {
|
|
20
20
|
"type": "string",
|
|
21
21
|
"minLength": 1,
|
|
22
|
-
"description": "Commit reference (SHA, branch, tag, or
|
|
22
|
+
"description": "Commit reference (SHA, branch, tag, or ancestor notation like \"HEAD~3\", \"main^2\")."
|
|
23
23
|
},
|
|
24
24
|
"path": {
|
|
25
25
|
"description": "Optional single file path to inspect at the ref. Merged with `paths` when both are provided.",
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "@rethunk/mcp-multi-root-git: git_stash_push",
|
|
4
|
+
"description": "Parameter schema for the 'git_stash_push' MCP tool.",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"workspaceRoot": {
|
|
8
|
+
"description": "Repo path. Default: first MCP root / cwd.",
|
|
9
|
+
"type": "string"
|
|
10
|
+
},
|
|
11
|
+
"format": {
|
|
12
|
+
"default": "markdown",
|
|
13
|
+
"type": "string",
|
|
14
|
+
"enum": [
|
|
15
|
+
"markdown",
|
|
16
|
+
"json"
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
"message": {
|
|
20
|
+
"description": "Stash subject message (`git stash push -m <message>`).",
|
|
21
|
+
"type": "string"
|
|
22
|
+
},
|
|
23
|
+
"includeUntracked": {
|
|
24
|
+
"default": false,
|
|
25
|
+
"description": "Include untracked files in the stash (`git stash push -u`).",
|
|
26
|
+
"type": "boolean"
|
|
27
|
+
},
|
|
28
|
+
"keepIndex": {
|
|
29
|
+
"default": false,
|
|
30
|
+
"description": "Keep staged changes in the index after stashing (`git stash push --keep-index`).",
|
|
31
|
+
"type": "boolean"
|
|
32
|
+
},
|
|
33
|
+
"paths": {
|
|
34
|
+
"description": "Scope the stash to specific paths, relative to git root (must resolve within repo root).",
|
|
35
|
+
"type": "array",
|
|
36
|
+
"items": {
|
|
37
|
+
"type": "string"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"required": [
|
|
42
|
+
"format",
|
|
43
|
+
"includeUntracked",
|
|
44
|
+
"keepIndex"
|
|
45
|
+
],
|
|
46
|
+
"additionalProperties": false
|
|
47
|
+
}
|
package/schemas/git_status.json
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"path": {
|
|
20
20
|
"type": "string",
|
|
21
21
|
"minLength": 1,
|
|
22
|
-
"description": "Filesystem path for the new worktree (relative paths resolved from git toplevel)."
|
|
22
|
+
"description": "Filesystem path for the new worktree (relative paths resolved from git toplevel). Sibling directories outside the repo toplevel are allowed; leading `-` and NUL are rejected."
|
|
23
23
|
},
|
|
24
24
|
"branch": {
|
|
25
25
|
"type": "string",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"path": {
|
|
20
20
|
"type": "string",
|
|
21
21
|
"minLength": 1,
|
|
22
|
-
"description": "Path of the worktree to remove. Must not be the main worktree."
|
|
22
|
+
"description": "Path of the worktree to remove. Must not be the main worktree. Sibling paths outside the repo toplevel are allowed; leading `-` and NUL are rejected."
|
|
23
23
|
},
|
|
24
24
|
"force": {
|
|
25
25
|
"default": false,
|