{
  "name": "git",
  "display_name": "git",
  "description": "Tools to read, search, and manipulate Git repositories",
  "repository": {
    "type": "git",
    "url": "https://github.com/modelcontextprotocol/servers"
  },
  "homepage": "https://github.com/modelcontextprotocol/servers/blob/main/src/git",
  "author": {
    "name": "modelcontextprotocol"
  },
  "license": "MIT",
  "categories": [
    "Dev Tools"
  ],
  "tags": [
    "Git",
    "Server",
    "Automation"
  ],
  "installations": {
    "uvx": {
      "type": "uvx",
      "command": "uvx",
      "args": [
        "mcp-server-git",
        "--repository",
        "${GIT_REPO_PATH}"
      ]
    },
    "docker": {
      "type": "docker",
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "--mount",
        "type=bind,src=${GIT_REPO_PATH},dst=${GIT_REPO_PATH}",
        "mcp/git"
      ]
    },
    "python": {
      "type": "python",
      "command": "python",
      "args": [
        "-m",
        "mcp_server_git",
        "--repository",
        "${GIT_REPO_PATH}"
      ]
    }
  },
  "arguments": {
    "GIT_REPO_PATH": {
      "description": "The path to the Git repository that the mcp-server-git will interact with.",
      "required": true,
      "example": "/path/to/git/repo"
    }
  },
  "tools": [
    {
      "name": "git_status",
      "description": "Shows the working tree status",
      "inputSchema": {
        "properties": {
          "repo_path": {
            "title": "Repo Path",
            "type": "string"
          }
        },
        "required": [
          "repo_path"
        ],
        "title": "GitStatus",
        "type": "object"
      }
    },
    {
      "name": "git_diff_unstaged",
      "description": "Shows changes in the working directory that are not yet staged",
      "inputSchema": {
        "properties": {
          "repo_path": {
            "title": "Repo Path",
            "type": "string"
          }
        },
        "required": [
          "repo_path"
        ],
        "title": "GitDiffUnstaged",
        "type": "object"
      }
    },
    {
      "name": "git_diff_staged",
      "description": "Shows changes that are staged for commit",
      "inputSchema": {
        "properties": {
          "repo_path": {
            "title": "Repo Path",
            "type": "string"
          }
        },
        "required": [
          "repo_path"
        ],
        "title": "GitDiffStaged",
        "type": "object"
      }
    },
    {
      "name": "git_diff",
      "description": "Shows differences between branches or commits",
      "inputSchema": {
        "properties": {
          "repo_path": {
            "title": "Repo Path",
            "type": "string"
          },
          "target": {
            "title": "Target",
            "type": "string"
          }
        },
        "required": [
          "repo_path",
          "target"
        ],
        "title": "GitDiff",
        "type": "object"
      }
    },
    {
      "name": "git_commit",
      "description": "Records changes to the repository",
      "inputSchema": {
        "properties": {
          "repo_path": {
            "title": "Repo Path",
            "type": "string"
          },
          "message": {
            "title": "Message",
            "type": "string"
          }
        },
        "required": [
          "repo_path",
          "message"
        ],
        "title": "GitCommit",
        "type": "object"
      }
    },
    {
      "name": "git_add",
      "description": "Adds file contents to the staging area",
      "inputSchema": {
        "properties": {
          "repo_path": {
            "title": "Repo Path",
            "type": "string"
          },
          "files": {
            "items": {
              "type": "string"
            },
            "title": "Files",
            "type": "array"
          }
        },
        "required": [
          "repo_path",
          "files"
        ],
        "title": "GitAdd",
        "type": "object"
      }
    },
    {
      "name": "git_reset",
      "description": "Unstages all staged changes",
      "inputSchema": {
        "properties": {
          "repo_path": {
            "title": "Repo Path",
            "type": "string"
          }
        },
        "required": [
          "repo_path"
        ],
        "title": "GitReset",
        "type": "object"
      }
    },
    {
      "name": "git_log",
      "description": "Shows the commit logs",
      "inputSchema": {
        "properties": {
          "repo_path": {
            "title": "Repo Path",
            "type": "string"
          },
          "max_count": {
            "default": 10,
            "title": "Max Count",
            "type": "integer"
          }
        },
        "required": [
          "repo_path"
        ],
        "title": "GitLog",
        "type": "object"
      }
    },
    {
      "name": "git_create_branch",
      "description": "Creates a new branch from an optional base branch",
      "inputSchema": {
        "properties": {
          "repo_path": {
            "title": "Repo Path",
            "type": "string"
          },
          "branch_name": {
            "title": "Branch Name",
            "type": "string"
          },
          "base_branch": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Base Branch"
          }
        },
        "required": [
          "repo_path",
          "branch_name"
        ],
        "title": "GitCreateBranch",
        "type": "object"
      }
    },
    {
      "name": "git_checkout",
      "description": "Switches branches",
      "inputSchema": {
        "properties": {
          "repo_path": {
            "title": "Repo Path",
            "type": "string"
          },
          "branch_name": {
            "title": "Branch Name",
            "type": "string"
          }
        },
        "required": [
          "repo_path",
          "branch_name"
        ],
        "title": "GitCheckout",
        "type": "object"
      }
    },
    {
      "name": "git_show",
      "description": "Shows the contents of a commit",
      "inputSchema": {
        "properties": {
          "repo_path": {
            "title": "Repo Path",
            "type": "string"
          },
          "revision": {
            "title": "Revision",
            "type": "string"
          }
        },
        "required": [
          "repo_path",
          "revision"
        ],
        "title": "GitShow",
        "type": "object"
      }
    }
  ],
  "is_official": true,
  "is_archived": true,
  "docker_url": "https://hub.docker.com/r/mcp/git"
}