mcp-win-stdio-git 0.2.4__tar.gz → 0.3.0__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.
@@ -23,6 +23,9 @@ MANIFEST
23
23
 
24
24
  *.manifest
25
25
  *.spec
26
+ api.txt
27
+ pypi-api.txt
28
+
26
29
 
27
30
  pip-log.txt
28
31
  pip-delete-this-directory.txt
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: mcp-win-stdio-git
3
- Version: 0.2.4
3
+ Version: 0.3.0
4
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
@@ -18,28 +18,28 @@ 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.4
21
+ Requires-Dist: mcp-win-stdio>=0.3.0
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: **33 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: **46 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 (33 Tools)
33
+ ## 🚀 Features (46 Tools)
34
34
 
35
- - **Local Git Suite (20 Tools)**:
35
+ - **Local Git Suite (27 Tools)**:
36
36
  - Repository initialization (`git_init`) and bookmark management (`use_repo`, `list_repos`, `add_repo`, `remove_repo`, `rename_alias`).
37
37
  - Remotes management (`git_remote`: list, add, set-url, remove, get-url).
38
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`).
39
+ - Branching (`git_branch`), staging & commits with untracked safeguards (`git_commit`), status (`git_status`), 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`).
40
40
  - Isolated background workspaces via `git_worktree`.
41
41
  - In-progress merge and rebase conflict detection & resolution (`git_conflict_resolve`).
42
- - **Remote GitHub CLI Suite (10 Tools)**:
42
+ - **Remote GitHub CLI Suite (16 Tools)**:
43
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
44
  - Releases (`gh_release_list`, `gh_release_create`).
45
45
  - Issue tracking (`gh_issue_list`, `gh_issue_view`, `gh_issue_create`, `gh_issue_comment`).
@@ -1,21 +1,21 @@
1
1
  # mcp-win-stdio-git
2
2
 
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.
3
+ Unified Git & GitHub Model Context Protocol (MCP) server for Windows & Claude Desktop: **46 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 (33 Tools)
9
+ ## 🚀 Features (46 Tools)
10
10
 
11
- - **Local Git Suite (20 Tools)**:
11
+ - **Local Git Suite (27 Tools)**:
12
12
  - Repository initialization (`git_init`) and bookmark management (`use_repo`, `list_repos`, `add_repo`, `remove_repo`, `rename_alias`).
13
13
  - Remotes management (`git_remote`: list, add, set-url, remove, get-url).
14
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`).
15
+ - Branching (`git_branch`), staging & commits with untracked safeguards (`git_commit`), status (`git_status`), 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`).
16
16
  - Isolated background workspaces via `git_worktree`.
17
17
  - In-progress merge and rebase conflict detection & resolution (`git_conflict_resolve`).
18
- - **Remote GitHub CLI Suite (10 Tools)**:
18
+ - **Remote GitHub CLI Suite (16 Tools)**:
19
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
20
  - Releases (`gh_release_list`, `gh_release_create`).
21
21
  - Issue tracking (`gh_issue_list`, `gh_issue_view`, `gh_issue_create`, `gh_issue_comment`).
@@ -1,42 +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.4"
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.4",
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
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "mcp-win-stdio-git"
7
+ version = "0.3.0"
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.3.0",
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.4"
1
+ """
2
+ Git & GitHub MCP Server for mcp-win-stdio.
3
+ """
4
+
5
+ __version__ = "0.3.0"
@@ -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
@@ -12,13 +10,15 @@ import sys
12
10
  # Ensure Windows console uses UTF-8 without crashing on cp1252
13
11
  if sys.platform == "win32":
14
12
  try:
15
- sys.stdout.reconfigure(encoding="utf-8", errors="replace")
16
- sys.stderr.reconfigure(encoding="utf-8", errors="replace")
13
+ if hasattr(sys.stdout, "reconfigure"):
14
+ getattr(sys.stdout, "reconfigure")(encoding="utf-8", errors="replace")
15
+ if hasattr(sys.stderr, "reconfigure"):
16
+ getattr(sys.stderr, "reconfigure")(encoding="utf-8", errors="replace")
17
17
  except Exception:
18
18
  pass
19
19
 
20
20
  from mcp_win_stdio.git import __version__
21
- from mcp_win_stdio.git.server import mcp, is_git_installed, is_gh_installed
21
+ from mcp_win_stdio.git.server import mcp
22
22
 
23
23
 
24
24
  def cmd_run(args: argparse.Namespace) -> None:
@@ -46,12 +46,12 @@ def cmd_doctor(args: argparse.Namespace) -> None:
46
46
  if name and email:
47
47
  print(f"[OK] Git Identity: {name} <{email}>")
48
48
  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\"")
49
+ print("[WARN] Git Identity: Not configured (missing user.name or user.email)")
50
+ print(' -> Run: git config --global user.name "Your Name"')
51
+ print(' -> Run: git config --global user.email "you@example.com"')
52
52
  else:
53
- print(f"[FAIL] Git CLI: Not found on PATH")
54
- print(f" -> Install Git: winget install --id Git.Git -e")
53
+ print("[FAIL] Git CLI: Not found on PATH")
54
+ print(" -> Install Git: winget install --id Git.Git -e")
55
55
  if sys.stdin.isatty():
56
56
  install = input(" Would you like to install Git now via winget? [Y/n]: ").strip().lower()
57
57
  if install not in ("n", "no"):
@@ -61,13 +61,17 @@ def cmd_doctor(args: argparse.Namespace) -> None:
61
61
  gh_bin = shutil.which("gh")
62
62
  if gh_bin:
63
63
  try:
64
- ver_line = subprocess.run(["gh", "--version"], capture_output=True, text=True, check=True).stdout.splitlines()[0]
64
+ ver_line = subprocess.run(
65
+ ["gh", "--version"], capture_output=True, text=True, check=True
66
+ ).stdout.splitlines()[0]
65
67
  print(f"[OK] GitHub CLI: {ver_line} ({gh_bin})")
66
68
  except Exception:
67
69
  print(f"[OK] GitHub CLI: Found at {gh_bin}")
68
70
 
69
71
  # GitHub Auth status
70
- auth_res = subprocess.run(["gh", "auth", "status"], capture_output=True, text=True, encoding="utf-8", errors="replace")
72
+ auth_res = subprocess.run(
73
+ ["gh", "auth", "status"], capture_output=True, text=True, encoding="utf-8", errors="replace"
74
+ )
71
75
  auth_out = auth_res.stderr or auth_res.stdout
72
76
  if "Logged in to" in auth_out:
73
77
  first_account = [ln.strip() for ln in auth_out.splitlines() if "Logged in to" in ln]
@@ -76,22 +80,24 @@ def cmd_doctor(args: argparse.Namespace) -> None:
76
80
  print(f"[OK] GitHub Auth: Logged in ({account_str})")
77
81
 
78
82
  # Check Git credential helper integration
79
- helper_res = subprocess.run(["git", "config", "--get-all", "credential.helper"], capture_output=True, text=True).stdout
83
+ helper_res = subprocess.run(
84
+ ["git", "config", "--get-all", "credential.helper"], capture_output=True, text=True
85
+ ).stdout
80
86
  if "gh" in helper_res:
81
- print(f"[OK] Git Credential Helper: Linked to gh (account switching active)")
87
+ print("[OK] Git Credential Helper: Linked to gh (account switching active)")
82
88
  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)")
89
+ print("[WARN] Git Credential Helper: Not linked to GitHub CLI.")
90
+ print(" -> Run: gh auth setup-git")
91
+ print(" (Required for git commands & account switching to use gh authentication)")
86
92
  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)")
93
+ print("[INFO] GitHub Auth: Not logged in")
94
+ print(" -> Step 1: gh auth login")
95
+ print(" -> Step 2: gh auth setup-git (essential for git commands & account switching)")
90
96
  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)")
97
+ print("[INFO] GitHub CLI: Not found on PATH (enables PR, Issue, and Actions tools)")
98
+ print(" -> Step 1: winget install --id GitHub.cli -e")
99
+ print(" -> Step 2: gh auth login")
100
+ print(" -> Step 3: gh auth setup-git (essential for git commands & account switching)")
95
101
  if sys.stdin.isatty():
96
102
  install = input(" Would you like to install GitHub CLI now via winget? [y/N]: ").strip().lower()
97
103
  if install in ("y", "yes"):
@@ -103,6 +109,7 @@ def cmd_doctor(args: argparse.Namespace) -> None:
103
109
  def cmd_guide(args: argparse.Namespace) -> None:
104
110
  """Print Git MCP guide and prompt recipes."""
105
111
  from mcp_win_stdio.git.guide import print_git_guide
112
+
106
113
  print_git_guide()
107
114
 
108
115
 
@@ -9,8 +9,10 @@ import sys
9
9
  # Ensure Windows console uses UTF-8 without crashing on cp1252
10
10
  if sys.platform == "win32":
11
11
  try:
12
- sys.stdout.reconfigure(encoding="utf-8", errors="replace")
13
- sys.stderr.reconfigure(encoding="utf-8", errors="replace")
12
+ if hasattr(sys.stdout, "reconfigure"):
13
+ getattr(sys.stdout, "reconfigure")(encoding="utf-8", errors="replace")
14
+ if hasattr(sys.stderr, "reconfigure"):
15
+ getattr(sys.stderr, "reconfigure")(encoding="utf-8", errors="replace")
14
16
  except Exception:
15
17
  pass
16
18
 
@@ -25,7 +27,9 @@ def get_git_prerequisites_status() -> dict:
25
27
 
26
28
  if gh_bin:
27
29
  try:
28
- res = subprocess.run(["gh", "auth", "status"], capture_output=True, text=True, encoding="utf-8", errors="replace")
30
+ res = subprocess.run(
31
+ ["gh", "auth", "status"], capture_output=True, text=True, encoding="utf-8", errors="replace"
32
+ )
29
33
  out = res.stderr or res.stdout
30
34
  if "Logged in to" in out:
31
35
  gh_logged_in = True
@@ -38,7 +42,9 @@ def get_git_prerequisites_status() -> dict:
38
42
 
39
43
  if git_bin and gh_bin:
40
44
  try:
41
- helper_res = subprocess.run(["git", "config", "--get-all", "credential.helper"], capture_output=True, text=True)
45
+ helper_res = subprocess.run(
46
+ ["git", "config", "--get-all", "credential.helper"], capture_output=True, text=True
47
+ )
42
48
  if "gh" in helper_res.stdout:
43
49
  cred_helper_linked = True
44
50
  except Exception:
@@ -141,7 +147,9 @@ def print_git_guide() -> None:
141
147
  print("-" * 80)
142
148
  print(" 1. 'Give me a 360-degree overview of the current repo, open PRs, and recent CI runs using repo_overview.'")
143
149
  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.'")
150
+ print(
151
+ " 3. 'Stage all modified files, commit with message \"feat: new feature\", push, and open a PR with pr_quickstart.'"
152
+ )
145
153
  print(" 4. 'Switch active GitHub account to my work account using gh_switch_account.'")
146
154
  print("=" * 80 + "\n")
147
155