Git MCP 服务器

一个基于 TypeScript 的服务器,为 AI 助手提供访问本地 Git 仓库和 GitHub API 的能力,包括读取提交历史、文件差异、问题、评论、拉取请求和项目板等功能。

  • by EnesOzturk11
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 EnesOzturk11/Git-MCP-Server

使用说明

Git MCP服务器

A. 模型上下文协议(MCP) 该服务器使人工智能助手能够检查本地Git存储库,并与GitHub API交互-读取提交历史记录、差异、文件内容、问题、评论、拉取请求和项目板-所有这些都来自单个模块化TypeScript服务器。


工具

服务器暴露 10工具 分为四类。

Git

工具 说明
get_git_status 返回本地存储库中所有未提交的更改(相当于 git status).
get_git_log 使用哈希、作者、日期和消息检索最近的提交历史记录。接受a maxCount 限制。
get-git-diff 逐行显示文件差异。可以限定在特定文件的范围内,也可以仅限于阶段性更改。
get_repo_structure 返回存储库的完整目录和文件树,这对于架构概述和文档非常有用。

文件系统

工具 说明
read_local_file 一次读取一个小文件的全部内容。非常适合源文件和配置。
read_local_file_chunk 读取特定的行范围(startLine–endLine)从大文件中,避免不必要的上下文。

GitHub问题

工具 说明
fetch_all_issues 从远程GitHub存储库获取所有问题(打开和关闭)。
get_issue_comments 按编号检索特定问题的所有评论,包括作者和时间戳。
create_and_board_issue 创建一个包含标题、正文、标签、受让人和优先级的新问题,然后自动将其添加到存储库的GitHub项目板上。通过提示选择项目来处理多项目仓库。

GitHub拉取请求

工具 说明
fetch_merged_prs 列出最近从存储库中提取的请求。使用以下命令在合并和打开的PR之间切换 isMerged。可用于生成变更日志和发布说明。

建筑

该服务器遵循中引入的分层模块化设计 公关#1:

src/
├── index.ts              # Server bootstrap — wires tools to the MCP server
├── config.ts             # Centralised environment config (GITHUB_TOKEN, cache TTL)
├── services/
│   ├── github-rest.ts    # GitHub REST API client
│   ├── github-graphql.ts # GitHub GraphQL client (used for Projects v2 boarding)
│   ├── cache.ts          # In-memory project metadata cache (1 h TTL)
│   └── git-cmd.ts        # Local Git CLI wrapper
├── tools/
│   ├── git.ts            # Git operation tools
│   ├── filesystem.ts     # File reading tools
│   ├── issues.ts         # GitHub Issue tools
│   └── pulls.ts          # GitHub Pull Request tools
├── types/
│   ├── github.ts         # GitHub API response types
│   ├── cache.ts          # Cache types
│   └── git.ts            # Git operation types
└── utils/
    └── helpers.ts        # Shared utility functions

需求

  • Node.js v18或更高版本
  • GitHub 个人访问令牌 随着 repo 和 project 范围

安装

# Clone the repository
git clone https://github.com/EnesOzturk11/Git-MCP-Server.git
cd Git-MCP-Server

# Install dependencies
npm install

# Build
npm run build

配置

服务器读取单个环境变量:

变量 必填 描述
GITHUB_TOKEN 是 用于GitHub API身份验证的个人访问令牌

创建一个 .env 在项目根目录中创建文件或在shell中导出变量:

GITHUB_TOKEN=ghp_your_token_here

使用Claude Desktop

将服务器添加到Claude Desktop配置文件中(claude_desktop_config.json):

{
  "mcpServers": {
    "git-mcp-server": {
      "command": "node",
      "args": ["/absolute/path/to/Git-MCP-Server/build/index.js"],
      "env": {
        "GITHUB_TOKEN": "ghp_your_token_here"
      }
    }
  }
}

重新启动Claude Desktop——这10个工具将立即可用。


技术栈

层 技术
语言 TypeScript 5
运行时 Node.js(ESM)
协议 模型上下文协议SDK ^1.26.0
验证 Zod ^4.3.6
GitHub API REST+GraphQL(项目v2)
环境 dotenv

贡献

欢迎问题和拉取请求。请先打开一个问题来讨论任何重大更改。