{
  "name": "io.github.modelcontextprotocol/servers",
  "description": "The Git MCP provides AI models with direct access to local Git repositories. Run commits, diffs, logs, branch operations, and status checks without leaving the AI context. The best option when you want AI-assisted Git operations on local code without GitHub connectivity.",
  "status": "active",
  "version": "latest",
  "_meta": {
    "com.top-mcps/lastVerified": "2026-05-31",
    "com.top-mcps/score": {
      "value": 93,
      "rubricVersion": "2026-04",
      "lastComputed": "2026-06-02T13:16:41.478Z",
      "methodology": "https://top-mcps.com/about/methodology"
    },
    "com.top-mcps/stats": {
      "fetchedAt": "2026-06-02T11:55:51.519Z",
      "githubStars": 84102,
      "lastCommitAt": "2026-04-17T22:59:54Z"
    }
  },
  "repository": {
    "url": "https://github.com/modelcontextprotocol/servers/tree/main/src/git",
    "source": "github"
  },
  "author": {
    "name": "Anthropic (modelcontextprotocol)"
  },
  "packages": [
    {
      "registryType": "pypi",
      "registryBaseUrl": "https://pypi.org",
      "identifier": "mcp-server-git",
      "version": "latest",
      "transport": {
        "type": "stdio"
      },
      "runtimeArguments": [
        {
          "type": "positional",
          "value": "--repository"
        },
        {
          "type": "positional",
          "value": "/path/to/repo"
        }
      ]
    }
  ],
  "capabilities": {
    "tools": [
      {
        "name": "git_status",
        "description": "Show the working tree status.",
        "sideEffect": "read",
        "args": [
          {
            "name": "repo_path",
            "type": "string",
            "required": true
          }
        ]
      },
      {
        "name": "git_diff_unstaged",
        "description": "Diff unstaged changes.",
        "sideEffect": "read",
        "args": [
          {
            "name": "repo_path",
            "type": "string",
            "required": true
          }
        ]
      },
      {
        "name": "git_diff_staged",
        "description": "Diff staged changes.",
        "sideEffect": "read",
        "args": [
          {
            "name": "repo_path",
            "type": "string",
            "required": true
          }
        ]
      },
      {
        "name": "git_add",
        "description": "Stage files.",
        "sideEffect": "write",
        "args": [
          {
            "name": "repo_path",
            "type": "string",
            "required": true
          },
          {
            "name": "files",
            "type": "string[]",
            "required": true
          }
        ]
      },
      {
        "name": "git_commit",
        "description": "Create a commit with the staged changes.",
        "sideEffect": "write",
        "args": [
          {
            "name": "repo_path",
            "type": "string",
            "required": true
          },
          {
            "name": "message",
            "type": "string",
            "required": true
          }
        ]
      },
      {
        "name": "git_reset",
        "description": "Unstage files.",
        "sideEffect": "write",
        "args": [
          {
            "name": "repo_path",
            "type": "string",
            "required": true
          }
        ]
      },
      {
        "name": "git_log",
        "description": "Show commit history.",
        "sideEffect": "read",
        "args": [
          {
            "name": "repo_path",
            "type": "string",
            "required": true
          },
          {
            "name": "max_count",
            "type": "number",
            "required": false
          }
        ]
      },
      {
        "name": "git_create_branch",
        "description": "Create a new branch.",
        "sideEffect": "write",
        "args": [
          {
            "name": "repo_path",
            "type": "string",
            "required": true
          },
          {
            "name": "branch_name",
            "type": "string",
            "required": true
          }
        ]
      },
      {
        "name": "git_checkout",
        "description": "Switch branches.",
        "sideEffect": "write",
        "args": [
          {
            "name": "repo_path",
            "type": "string",
            "required": true
          },
          {
            "name": "branch_name",
            "type": "string",
            "required": true
          }
        ]
      },
      {
        "name": "git_show",
        "description": "Show details of a commit.",
        "sideEffect": "read",
        "args": [
          {
            "name": "repo_path",
            "type": "string",
            "required": true
          },
          {
            "name": "revision",
            "type": "string",
            "required": true
          }
        ]
      }
    ],
    "security": {
      "scope": "read-write",
      "sandbox": "Runs local `git` CLI commands scoped to the repository path passed at launch. No implicit network access unless the agent invokes a push or fetch tool.",
      "gotchas": [
        "`git push` uses whatever credentials are configured in the local git config — if a credential helper is unlocked, the agent has push access.",
        "No signing by default; commits authored by the agent carry the local user config."
      ]
    }
  },
  "_links": {
    "html": "https://top-mcps.com/mcp/git",
    "markdown": "https://top-mcps.com/mcp/git.md",
    "methodology": "https://top-mcps.com/about/methodology"
  }
}
