mcp-win-stdio-git 0.2.3__tar.gz → 0.2.5__tar.gz

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.
@@ -1,60 +1,63 @@
1
- __pycache__/
2
- *.py[cod]
3
- *$py.class
4
- *.so
5
- .Python
6
- build/
7
- develop-eggs/
8
- dist/
9
- downloads/
10
- eggs/
11
- .eggs/
12
- lib/
13
- lib64/
14
- parts/
15
- sdist/
16
- var/
17
- wheels/
18
- share/python-wheels/
19
- *.egg-info/
20
- .installed.cfg
21
- *.egg
22
- MANIFEST
23
-
24
- *.manifest
25
- *.spec
26
- api.txt
27
- pip-log.txt
28
- pip-delete-this-directory.txt
29
- pypi api.txt
30
- htmlcov/
31
- .tox/
32
- .nox/
33
- .coverage
34
- .coverage.*
35
- .cache
36
- nosetests.xml
37
- coverage.xml
38
- *.cover
39
- *.py,cover
40
- .hypothesis/
41
- .pytest_cache/
42
- cover/
43
-
44
- *.mo
45
- *.pot
46
-
47
- .env
48
- .venv
49
- env/
50
- venv/
51
- ENV/
52
- env.bak/
53
- venv.bak/
54
-
55
- .idea/
56
- .vscode/
57
- *.swp
58
- *.swo
59
-
60
- *.log
1
+ __pycache__/
2
+ *.py[cod]
3
+ *$py.class
4
+ *.so
5
+ .Python
6
+ build/
7
+ develop-eggs/
8
+ dist/
9
+ downloads/
10
+ eggs/
11
+ .eggs/
12
+ lib/
13
+ lib64/
14
+ parts/
15
+ sdist/
16
+ var/
17
+ wheels/
18
+ share/python-wheels/
19
+ *.egg-info/
20
+ .installed.cfg
21
+ *.egg
22
+ MANIFEST
23
+
24
+ *.manifest
25
+ *.spec
26
+ api.txt
27
+ pypi-api.txt
28
+
29
+
30
+ pip-log.txt
31
+ pip-delete-this-directory.txt
32
+ pypi api.txt
33
+ htmlcov/
34
+ .tox/
35
+ .nox/
36
+ .coverage
37
+ .coverage.*
38
+ .cache
39
+ nosetests.xml
40
+ coverage.xml
41
+ *.cover
42
+ *.py,cover
43
+ .hypothesis/
44
+ .pytest_cache/
45
+ cover/
46
+
47
+ *.mo
48
+ *.pot
49
+
50
+ .env
51
+ .venv
52
+ env/
53
+ venv/
54
+ ENV/
55
+ env.bak/
56
+ venv.bak/
57
+
58
+ .idea/
59
+ .vscode/
60
+ *.swp
61
+ *.swo
62
+
63
+ *.log
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: mcp-win-stdio-git
3
- Version: 0.2.3
4
- Summary: Unified Git & GitHub Model Context Protocol (MCP) server for Windows & Claude: 26 tools combining local Git repository management and remote GitHub CLI (gh) operations with hybrid synergy workflows.
3
+ Version: 0.2.5
4
+ Summary: Unified Git & GitHub Model Context Protocol (MCP) server for Windows & Claude: 33 tools combining local Git repository management (init, remotes, restore, bookmarks, branching, commits, diffs) and remote GitHub CLI (gh) operations with hybrid synergy workflows.
5
5
  Author: Mohan Kumar Indala
6
6
  License-Expression: MIT
7
7
  Keywords: actions,ai,claude,gh,git,github,issues,llm,mcp,pull-requests,version-control
@@ -18,39 +18,43 @@ Classifier: Programming Language :: Python :: 3.13
18
18
  Classifier: Programming Language :: Python :: 3.14
19
19
  Classifier: Topic :: Software Development :: Version Control :: Git
20
20
  Requires-Python: >=3.10
21
- Requires-Dist: mcp-win-stdio>=0.2.3
21
+ Requires-Dist: mcp-win-stdio>=0.2.5
22
22
  Requires-Dist: mcp>=1.2.0
23
23
  Description-Content-Type: text/markdown
24
24
 
25
25
  # mcp-win-stdio-git
26
26
 
27
- Unified Git & GitHub Model Context Protocol (MCP) server for Windows & Claude Desktop: **26 tools** seamlessly unifying local Git repository management and remote GitHub CLI (`gh`) operations with hybrid synergy workflows.
27
+ Unified Git & GitHub Model Context Protocol (MCP) server for Windows & Claude Desktop: **33 tools** seamlessly unifying local Git repository management and remote GitHub CLI (`gh`) operations with hybrid synergy workflows.
28
28
 
29
29
  Part of the **`mcp-win-stdio`** Windows-optimized suite.
30
30
 
31
31
  ---
32
32
 
33
- ## 🚀 Features (26 Tools)
33
+ ## 🚀 Features (33 Tools)
34
34
 
35
- - **Local Git Suite (16 Tools)**:
36
- - Branching (`git_branch`), staging & commits with identity checks (`git_commit`), token-safe diffs (`git_diff`), commit logs (`git_log`), stashing (`git_stash`), remote sync (`git_sync`), blame (`git_blame`), tags (`git_tag`), regex search (`git_grep`), and config (`git_config`).
37
- - Safe file restoration and guarded destructive reset (`git_reset`).
35
+ - **Local Git Suite (20 Tools)**:
36
+ - Repository initialization (`git_init`) and bookmark management (`use_repo`, `list_repos`, `add_repo`, `remove_repo`, `rename_alias`).
37
+ - Remotes management (`git_remote`: list, add, set-url, remove, get-url).
38
+ - Safe file restoration (`git_restore`) and guarded destructive reset (`git_reset`).
39
+ - Branching (`git_branch`), staging & commits with untracked safeguards (`git_commit`), paginated chunked diffs (`git_diff`), commit logs (`git_log`), stashing (`git_stash`), remote sync (`git_sync`), blame (`git_blame`), tags (`git_tag`), cherry-pick (`git_cherry_pick`), clean (`git_clean_untracked`), regex search (`git_grep`), and config (`git_config`).
38
40
  - Isolated background workspaces via `git_worktree`.
39
41
  - In-progress merge and rebase conflict detection & resolution (`git_conflict_resolve`).
40
- - Multi-repo switching and bookmarking (`repo_overview`, `use_repo`, `list_repos`, `add_repo`).
41
- - **Remote GitHub CLI Suite (8 Tools)**:
42
- - Pull requests (`gh_pr_list`, `gh_pr_view`, `gh_pr_diff`).
43
- - Issue tracking (`gh_issue_list`).
42
+ - **Remote GitHub CLI Suite (10 Tools)**:
43
+ - Pull requests (`gh_pr_list`, `gh_pr_view`, `gh_pr_diff`, `gh_pr_checkout`, `gh_pr_action`, `gh_pr_checks`, `gh_pr_review_comments`).
44
+ - Releases (`gh_release_list`, `gh_release_create`).
45
+ - Issue tracking (`gh_issue_list`, `gh_issue_view`, `gh_issue_create`, `gh_issue_comment`).
44
46
  - CI/CD workflow monitoring (`gh_run_status`).
47
+ - Global search (`gh_search`) and direct API caller (`gh_api`).
45
48
  - Gist snippet creation (`gh_gist_create`).
46
49
  - Multi-account awareness and switching (`gh_auth_status`, `gh_switch_account`).
47
- - **Hybrid Synergy Workflows (2 Tools)**:
50
+ - **Hybrid Synergy Workflows (3 Tools)**:
48
51
  - `repo_overview`: 360-degree status combining local branch, dirty status, ahead/behind tracking, active open PR, and latest GitHub Actions workflow run.
49
52
  - `pr_quickstart`: Stage -> commit -> push -> open GitHub PR via `gh pr create` in a single tool call.
50
53
  - `issue_start_work`: Fetches GitHub issue details and automatically checks out a linked feature branch `feature/<id>-<slug>`.
51
54
  - **Zero-Friction Fallback**:
52
55
  - Works 100% locally if GitHub CLI is not installed or unauthenticated, and provides copy-pasteable `winget` commands to install.
53
56
 
57
+
54
58
  ---
55
59
 
56
60
  ## 📋 Prerequisites & Setup
@@ -1,32 +1,36 @@
1
1
  # mcp-win-stdio-git
2
2
 
3
- Unified Git & GitHub Model Context Protocol (MCP) server for Windows & Claude Desktop: **26 tools** seamlessly unifying local Git repository management and remote GitHub CLI (`gh`) operations with hybrid synergy workflows.
3
+ Unified Git & GitHub Model Context Protocol (MCP) server for Windows & Claude Desktop: **33 tools** seamlessly unifying local Git repository management and remote GitHub CLI (`gh`) operations with hybrid synergy workflows.
4
4
 
5
5
  Part of the **`mcp-win-stdio`** Windows-optimized suite.
6
6
 
7
7
  ---
8
8
 
9
- ## 🚀 Features (26 Tools)
9
+ ## 🚀 Features (33 Tools)
10
10
 
11
- - **Local Git Suite (16 Tools)**:
12
- - Branching (`git_branch`), staging & commits with identity checks (`git_commit`), token-safe diffs (`git_diff`), commit logs (`git_log`), stashing (`git_stash`), remote sync (`git_sync`), blame (`git_blame`), tags (`git_tag`), regex search (`git_grep`), and config (`git_config`).
13
- - Safe file restoration and guarded destructive reset (`git_reset`).
11
+ - **Local Git Suite (20 Tools)**:
12
+ - Repository initialization (`git_init`) and bookmark management (`use_repo`, `list_repos`, `add_repo`, `remove_repo`, `rename_alias`).
13
+ - Remotes management (`git_remote`: list, add, set-url, remove, get-url).
14
+ - Safe file restoration (`git_restore`) and guarded destructive reset (`git_reset`).
15
+ - Branching (`git_branch`), staging & commits with untracked safeguards (`git_commit`), paginated chunked diffs (`git_diff`), commit logs (`git_log`), stashing (`git_stash`), remote sync (`git_sync`), blame (`git_blame`), tags (`git_tag`), cherry-pick (`git_cherry_pick`), clean (`git_clean_untracked`), regex search (`git_grep`), and config (`git_config`).
14
16
  - Isolated background workspaces via `git_worktree`.
15
17
  - In-progress merge and rebase conflict detection & resolution (`git_conflict_resolve`).
16
- - Multi-repo switching and bookmarking (`repo_overview`, `use_repo`, `list_repos`, `add_repo`).
17
- - **Remote GitHub CLI Suite (8 Tools)**:
18
- - Pull requests (`gh_pr_list`, `gh_pr_view`, `gh_pr_diff`).
19
- - Issue tracking (`gh_issue_list`).
18
+ - **Remote GitHub CLI Suite (10 Tools)**:
19
+ - Pull requests (`gh_pr_list`, `gh_pr_view`, `gh_pr_diff`, `gh_pr_checkout`, `gh_pr_action`, `gh_pr_checks`, `gh_pr_review_comments`).
20
+ - Releases (`gh_release_list`, `gh_release_create`).
21
+ - Issue tracking (`gh_issue_list`, `gh_issue_view`, `gh_issue_create`, `gh_issue_comment`).
20
22
  - CI/CD workflow monitoring (`gh_run_status`).
23
+ - Global search (`gh_search`) and direct API caller (`gh_api`).
21
24
  - Gist snippet creation (`gh_gist_create`).
22
25
  - Multi-account awareness and switching (`gh_auth_status`, `gh_switch_account`).
23
- - **Hybrid Synergy Workflows (2 Tools)**:
26
+ - **Hybrid Synergy Workflows (3 Tools)**:
24
27
  - `repo_overview`: 360-degree status combining local branch, dirty status, ahead/behind tracking, active open PR, and latest GitHub Actions workflow run.
25
28
  - `pr_quickstart`: Stage -> commit -> push -> open GitHub PR via `gh pr create` in a single tool call.
26
29
  - `issue_start_work`: Fetches GitHub issue details and automatically checks out a linked feature branch `feature/<id>-<slug>`.
27
30
  - **Zero-Friction Fallback**:
28
31
  - Works 100% locally if GitHub CLI is not installed or unauthenticated, and provides copy-pasteable `winget` commands to install.
29
32
 
33
+
30
34
  ---
31
35
 
32
36
  ## 📋 Prerequisites & Setup
@@ -1,41 +1,42 @@
1
- [build-system]
2
- requires = ["hatchling"]
3
- build-backend = "hatchling.build"
4
-
5
- [project]
6
- name = "mcp-win-stdio-git"
7
- version = "0.2.3"
8
- description = "Unified Git & GitHub Model Context Protocol (MCP) server for Windows & Claude: 26 tools combining local Git repository management and remote GitHub CLI (gh) operations with hybrid synergy workflows."
9
- readme = "README.md"
10
- requires-python = ">=3.10"
11
- license = "MIT"
12
- authors = [
13
- { name = "Mohan Kumar Indala" }
14
- ]
15
- keywords = ["mcp", "claude", "git", "github", "gh", "version-control", "pull-requests", "issues", "actions", "ai", "llm"]
16
- classifiers = [
17
- "Development Status :: 4 - Beta",
18
- "Environment :: Win32 (MS Windows)",
19
- "Intended Audience :: Developers",
20
- "License :: OSI Approved :: MIT License",
21
- "Operating System :: Microsoft :: Windows",
22
- "Programming Language :: Python :: 3",
23
- "Programming Language :: Python :: 3.10",
24
- "Programming Language :: Python :: 3.11",
25
- "Programming Language :: Python :: 3.12",
26
- "Programming Language :: Python :: 3.13",
27
- "Programming Language :: Python :: 3.14",
28
- "Topic :: Software Development :: Version Control :: Git",
29
- ]
30
-
31
- dependencies = [
32
- "mcp-win-stdio>=0.2.3",
33
- "mcp>=1.2.0",
34
- ]
35
-
36
- [project.scripts]
37
- mcp-win-stdio-git = "mcp_win_stdio.git.cli:main"
38
- mws-git = "mcp_win_stdio.git.cli:main"
39
-
40
- [tool.hatch.build.targets.wheel]
41
- packages = ["src/mcp_win_stdio"]
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "mcp-win-stdio-git"
7
+ version = "0.2.5"
8
+ description = "Unified Git & GitHub Model Context Protocol (MCP) server for Windows & Claude: 33 tools combining local Git repository management (init, remotes, restore, bookmarks, branching, commits, diffs) and remote GitHub CLI (gh) operations with hybrid synergy workflows."
9
+ readme = "README.md"
10
+
11
+ requires-python = ">=3.10"
12
+ license = "MIT"
13
+ authors = [
14
+ { name = "Mohan Kumar Indala" }
15
+ ]
16
+ keywords = ["mcp", "claude", "git", "github", "gh", "version-control", "pull-requests", "issues", "actions", "ai", "llm"]
17
+ classifiers = [
18
+ "Development Status :: 4 - Beta",
19
+ "Environment :: Win32 (MS Windows)",
20
+ "Intended Audience :: Developers",
21
+ "License :: OSI Approved :: MIT License",
22
+ "Operating System :: Microsoft :: Windows",
23
+ "Programming Language :: Python :: 3",
24
+ "Programming Language :: Python :: 3.10",
25
+ "Programming Language :: Python :: 3.11",
26
+ "Programming Language :: Python :: 3.12",
27
+ "Programming Language :: Python :: 3.13",
28
+ "Programming Language :: Python :: 3.14",
29
+ "Topic :: Software Development :: Version Control :: Git",
30
+ ]
31
+
32
+ dependencies = [
33
+ "mcp-win-stdio>=0.2.5",
34
+ "mcp>=1.2.0",
35
+ ]
36
+
37
+ [project.scripts]
38
+ mcp-win-stdio-git = "mcp_win_stdio.git.cli:main"
39
+ mws-git = "mcp_win_stdio.git.cli:main"
40
+
41
+ [tool.hatch.build.targets.wheel]
42
+ packages = ["src/mcp_win_stdio"]
@@ -1,5 +1,5 @@
1
- """
2
- Git & GitHub MCP Server for mcp-win-stdio.
3
- """
4
-
5
- __version__ = "0.2.3"
1
+ """
2
+ Git & GitHub MCP Server for mcp-win-stdio.
3
+ """
4
+
5
+ __version__ = "0.2.5"
@@ -3,8 +3,6 @@ CLI entry point for mcp-win-stdio-git.
3
3
  """
4
4
 
5
5
  import argparse
6
- import os
7
- from pathlib import Path
8
6
  import shutil
9
7
  import subprocess
10
8
  import sys
@@ -18,7 +16,7 @@ if sys.platform == "win32":
18
16
  pass
19
17
 
20
18
  from mcp_win_stdio.git import __version__
21
- from mcp_win_stdio.git.server import mcp, is_git_installed, is_gh_installed
19
+ from mcp_win_stdio.git.server import mcp
22
20
 
23
21
 
24
22
  def cmd_run(args: argparse.Namespace) -> None:
@@ -46,12 +44,12 @@ def cmd_doctor(args: argparse.Namespace) -> None:
46
44
  if name and email:
47
45
  print(f"[OK] Git Identity: {name} <{email}>")
48
46
  else:
49
- print(f"[WARN] Git Identity: Not configured (missing user.name or user.email)")
50
- print(f" -> Run: git config --global user.name \"Your Name\"")
51
- print(f" -> Run: git config --global user.email \"you@example.com\"")
47
+ print("[WARN] Git Identity: Not configured (missing user.name or user.email)")
48
+ print(' -> Run: git config --global user.name "Your Name"')
49
+ print(' -> Run: git config --global user.email "you@example.com"')
52
50
  else:
53
- print(f"[FAIL] Git CLI: Not found on PATH")
54
- print(f" -> Install Git: winget install --id Git.Git -e")
51
+ print("[FAIL] Git CLI: Not found on PATH")
52
+ print(" -> Install Git: winget install --id Git.Git -e")
55
53
  if sys.stdin.isatty():
56
54
  install = input(" Would you like to install Git now via winget? [Y/n]: ").strip().lower()
57
55
  if install not in ("n", "no"):
@@ -61,13 +59,17 @@ def cmd_doctor(args: argparse.Namespace) -> None:
61
59
  gh_bin = shutil.which("gh")
62
60
  if gh_bin:
63
61
  try:
64
- ver_line = subprocess.run(["gh", "--version"], capture_output=True, text=True, check=True).stdout.splitlines()[0]
62
+ ver_line = subprocess.run(
63
+ ["gh", "--version"], capture_output=True, text=True, check=True
64
+ ).stdout.splitlines()[0]
65
65
  print(f"[OK] GitHub CLI: {ver_line} ({gh_bin})")
66
66
  except Exception:
67
67
  print(f"[OK] GitHub CLI: Found at {gh_bin}")
68
68
 
69
69
  # GitHub Auth status
70
- auth_res = subprocess.run(["gh", "auth", "status"], capture_output=True, text=True, encoding="utf-8", errors="replace")
70
+ auth_res = subprocess.run(
71
+ ["gh", "auth", "status"], capture_output=True, text=True, encoding="utf-8", errors="replace"
72
+ )
71
73
  auth_out = auth_res.stderr or auth_res.stdout
72
74
  if "Logged in to" in auth_out:
73
75
  first_account = [ln.strip() for ln in auth_out.splitlines() if "Logged in to" in ln]
@@ -76,22 +78,24 @@ def cmd_doctor(args: argparse.Namespace) -> None:
76
78
  print(f"[OK] GitHub Auth: Logged in ({account_str})")
77
79
 
78
80
  # Check Git credential helper integration
79
- helper_res = subprocess.run(["git", "config", "--get-all", "credential.helper"], capture_output=True, text=True).stdout
81
+ helper_res = subprocess.run(
82
+ ["git", "config", "--get-all", "credential.helper"], capture_output=True, text=True
83
+ ).stdout
80
84
  if "gh" in helper_res:
81
- print(f"[OK] Git Credential Helper: Linked to gh (account switching active)")
85
+ print("[OK] Git Credential Helper: Linked to gh (account switching active)")
82
86
  else:
83
- print(f"[WARN] Git Credential Helper: Not linked to GitHub CLI.")
84
- print(f" -> Run: gh auth setup-git")
85
- print(f" (Required for git commands & account switching to use gh authentication)")
87
+ print("[WARN] Git Credential Helper: Not linked to GitHub CLI.")
88
+ print(" -> Run: gh auth setup-git")
89
+ print(" (Required for git commands & account switching to use gh authentication)")
86
90
  else:
87
- print(f"[INFO] GitHub Auth: Not logged in")
88
- print(f" -> Step 1: gh auth login")
89
- print(f" -> Step 2: gh auth setup-git (essential for git commands & account switching)")
91
+ print("[INFO] GitHub Auth: Not logged in")
92
+ print(" -> Step 1: gh auth login")
93
+ print(" -> Step 2: gh auth setup-git (essential for git commands & account switching)")
90
94
  else:
91
- print(f"[INFO] GitHub CLI: Not found on PATH (enables PR, Issue, and Actions tools)")
92
- print(f" -> Step 1: winget install --id GitHub.cli -e")
93
- print(f" -> Step 2: gh auth login")
94
- print(f" -> Step 3: gh auth setup-git (essential for git commands & account switching)")
95
+ print("[INFO] GitHub CLI: Not found on PATH (enables PR, Issue, and Actions tools)")
96
+ print(" -> Step 1: winget install --id GitHub.cli -e")
97
+ print(" -> Step 2: gh auth login")
98
+ print(" -> Step 3: gh auth setup-git (essential for git commands & account switching)")
95
99
  if sys.stdin.isatty():
96
100
  install = input(" Would you like to install GitHub CLI now via winget? [y/N]: ").strip().lower()
97
101
  if install in ("y", "yes"):
@@ -103,6 +107,7 @@ def cmd_doctor(args: argparse.Namespace) -> None:
103
107
  def cmd_guide(args: argparse.Namespace) -> None:
104
108
  """Print Git MCP guide and prompt recipes."""
105
109
  from mcp_win_stdio.git.guide import print_git_guide
110
+
106
111
  print_git_guide()
107
112
 
108
113
 
@@ -25,7 +25,9 @@ def get_git_prerequisites_status() -> dict:
25
25
 
26
26
  if gh_bin:
27
27
  try:
28
- res = subprocess.run(["gh", "auth", "status"], capture_output=True, text=True, encoding="utf-8", errors="replace")
28
+ res = subprocess.run(
29
+ ["gh", "auth", "status"], capture_output=True, text=True, encoding="utf-8", errors="replace"
30
+ )
29
31
  out = res.stderr or res.stdout
30
32
  if "Logged in to" in out:
31
33
  gh_logged_in = True
@@ -38,7 +40,9 @@ def get_git_prerequisites_status() -> dict:
38
40
 
39
41
  if git_bin and gh_bin:
40
42
  try:
41
- helper_res = subprocess.run(["git", "config", "--get-all", "credential.helper"], capture_output=True, text=True)
43
+ helper_res = subprocess.run(
44
+ ["git", "config", "--get-all", "credential.helper"], capture_output=True, text=True
45
+ )
42
46
  if "gh" in helper_res.stdout:
43
47
  cred_helper_linked = True
44
48
  except Exception:
@@ -141,7 +145,9 @@ def print_git_guide() -> None:
141
145
  print("-" * 80)
142
146
  print(" 1. 'Give me a 360-degree overview of the current repo, open PRs, and recent CI runs using repo_overview.'")
143
147
  print(" 2. 'Pick up issue #12, check its details, and create a local branch using issue_start_work.'")
144
- print(" 3. 'Stage all modified files, commit with message \"feat: new feature\", push, and open a PR with pr_quickstart.'")
148
+ print(
149
+ " 3. 'Stage all modified files, commit with message \"feat: new feature\", push, and open a PR with pr_quickstart.'"
150
+ )
145
151
  print(" 4. 'Switch active GitHub account to my work account using gh_switch_account.'")
146
152
  print("=" * 80 + "\n")
147
153