{
    "description": "A collection of common Git commands exposed as MCP tools, with required working directory (cwd).",
    "version": "v1.1.0",
    "tools": [
      {
        "name": "git-status",
        "type": "command",
        "command": "git",
        "args": ["status"],
        "cwd": "${cwd}",
        "description": "Shows the working tree status, including staged, unstaged, and untracked files.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "cwd": {
              "type": "string",
              "description": "The working directory (repository path) where the Git command should be executed."
            }
          },
          "required": ["cwd"]
        }
      },
      {
        "name": "git-clone",
        "type": "command",
        "command": "git",
        "args": ["clone", "${repository_url}"],
        "cwd": "${cwd}",
        "description": "Clones a remote Git repository into a new directory within the specified working directory.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "repository_url": {
              "type": "string",
              "description": "The URL of the remote repository to clone."
            },
            "cwd": {
              "type": "string",
              "description": "The parent directory where the repository will be cloned into."
            }
          },
          "required": ["repository_url", "cwd"]
        }
      },
      {
        "name": "git-add",
        "type": "command",
        "command": "git",
        "args": ["add", "${file_path}"],
        "cwd": "${cwd}",
        "description": "Adds file contents to the index (staging area). Use '.' to add all changes.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "file_path": {
              "type": "string",
              "description": "The path of the file(s) to add. Defaults to '.' to stage all changes in the current directory.",
              "default": "."
            },
            "cwd": {
              "type": "string",
              "description": "The working directory (repository path) where the Git command should be executed."
            }
          },
          "required": ["cwd"]
        }
      },
      {
        "name": "git-commit",
        "type": "command",
        "command": "git",
        "args": ["commit", "-m", "${commit_message}"],
        "cwd": "${cwd}",
        "description": "Records changes to the repository with a descriptive message.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "commit_message": {
              "type": "string",
              "description": "The commit message that describes the changes."
            },
            "cwd": {
              "type": "string",
              "description": "The working directory (repository path) where the Git command should be executed."
            }
          },
          "required": ["commit_message", "cwd"]
        }
      },
      {
        "name": "git-push",
        "type": "command",
        "command": "git",
        "args": ["push", "${remote}", "${branch}"],
        "cwd": "${cwd}",
        "description": "Updates a remote repository with local commits.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "remote": {
              "type": "string",
              "description": "The name of the remote repository to push to.",
              "default": "origin"
            },
            "branch": {
              "type": "string",
              "description": "The name of the branch to push."
            },
            "cwd": {
              "type": "string",
              "description": "The working directory (repository path) where the Git command should be executed."
            }
          },
          "required": ["branch", "cwd"]
        }
      },
      {
        "name": "git-pull",
        "type": "command",
        "command": "git",
        "args": ["pull", "${remote}", "${branch}"],
        "cwd": "${cwd}",
        "description": "Fetches changes from a remote repository and merges them into the current branch.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "remote": {
              "type": "string",
              "description": "The name of the remote repository to pull from.",
              "default": "origin"
            },
            "branch": {
              "type": "string",
              "description": "The name of the branch to pull and merge."
            },
            "cwd": {
              "type": "string",
              "description": "The working directory (repository path) where the Git command should be executed."
            }
          },
          "required": ["branch", "cwd"]
        }
      },
      {
        "name": "git-checkout",
        "type": "command",
        "command": "git",
        "args": ["checkout", "${branch_name}"],
        "cwd": "${cwd}",
        "description": "Switches to the specified branch.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "branch_name": {
              "type": "string",
              "description": "The name of the branch to switch to."
            },
            "cwd": {
              "type": "string",
              "description": "The working directory (repository path) where the Git command should be executed."
            }
          },
          "required": ["branch_name", "cwd"]
        }
      },
      {
        "name": "git-log",
        "type": "command",
        "command": "git",
        "args": ["log", "--pretty=format:${format}", "-n", "${count}"],
        "cwd": "${cwd}",
        "description": "Shows the commit history.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "format": {
              "type": "string",
              "description": "The format for the log output.",
              "default": "%h - %an, %ar : %s"
            },
            "count": {
              "type": "string",
              "description": "Limits the number of commits to show.",
              "default": "10"
            },
            "cwd": {
              "type": "string",
              "description": "The working directory (repository path) where the Git command should be executed."
            }
          },
          "required": ["cwd"]
        }
      }
    ]
  }