Git仓库范围文件服务器

一个提供对Git仓库特定文件夹范围访问权限的MCP服务器,支持文件操作和Git版本控制。

  • by alacambra
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 alacambra/git-mcp-scoped-repo-server

使用说明

MCP范围内的回购服务器

一个MCP(模型上下文协议)服务器,为Claude提供对git存储库中特定文件夹的作用域文件访问。

特性

  • 范围访问:所有文件操作都限制在配置的基目录中
  • 路径横向保护:防止 ../ 袭击和其他逃跑企图
  • 创建文件:创建新文件或覆盖现有文件(自动创建父目录)
  • 读取文件:读取文件内容
  • 列出目录:浏览目录内容
  • 不删除:故意不支持删除操作
  • 文件简介:获取有关文件和目录的元数据
  • Git操作:将更改暂存、提交、拉取和推送到远程存储库

安装

npm install
npm run build

配置

设置环境变量 MCP_SCOPED_REPO_PATH 指向您要限制访问范围的目录的绝对或相对路径。

可选设置 MCP_SCOPED_REPO_ROOT 到git存储库根目录(默认为 MCP_SCOPED_REPO_PATH 如果未设置)。当您希望文件操作作用于子目录,但git操作在整个仓库上工作时,这很有用。

Claude桌面配置

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "scoped-repo": {
      "command": "node",
      "args": ["/path/to/mcp-scoped-repo/dist/index.js"],
      "env": {
        "MCP_SCOPED_REPO_PATH": "/path/to/your/repo/specific-folder"
      }
    }
  }
}

Claude代码配置

添加到您的 .mcp.json 在项目根目录或主目录中:

{
  "mcpServers": {
    "scoped-repo": {
      "command": "node",
      "args": ["/path/to/mcp-scoped-repo/dist/index.js"],
      "env": {
        "MCP_SCOPED_REPO_PATH": "./my-repo/allowed-folder"
      }
    }
  }
}

可用工具

create_file

创建新文件或覆盖现有文件。

参数:

  • path (string,必填):作用域目录内的相对路径
  • content (string,必填):要写入文件的内容

例子:

{
  "path": "subfolder/example.txt",
  "content": "Hello, world!"
}

read_file

读取文件的内容。

参数:

  • path (string,必填):文件的相对路径

list_directory

列出目录的内容。

参数:

  • path (string,必填):目录的相对路径(使用 . 或根为空字符串)

file_exists

检查文件或目录是否存在。

参数:

  • path (字符串,必填):要检查的相对路径

退货: "true" 或 "false"

get_file_info

获取文件或目录的元数据。

参数:

  • path (string,必填):文件或目录的相对路径

退货: 带有类型、大小、创建、修改和访问时间戳的JSON

git_status

以瓷器格式显示工作树状态。

参数: 无

git_add

暂存一个文件以供提交。

参数:

  • path (字符串,必填):舞台路径(使用 . 进行所有更改)

git_commit

提交分阶段更改。

参数:

  • message (字符串,必填):提交消息

git_pull

从远程存储库中提取更改。

参数:

  • remote (字符串,可选):远程名称(默认值: origin)
  • branch (字符串,可选):分支名称(默认:当前分支)

git_push

将提交推送到远程存储库。

参数:

  • remote (字符串,可选):远程名称(默认值: origin)
  • branch (字符串,可选):分支名称(默认:当前分支)

安全

此服务器实施了多种安全措施:

  1. 基础路径限制:所有路径都相对于配置的基本路径进行解析
  2. 路径穿越预防:试图逃离基本目录(例如。, ../../../etc/passwd)被封锁
  3. 无删除操作:故意省略以防止意外数据丢失
  4. 基地上方无通道:无法读取或列出配置的基本路径上方的目录

示例用例

  • 允许Claude管理特定内容 docs/ 文件夹
  • 让克劳德访问 generated/ 输出目录
  • 作用域Claude对代码库中特定模块或组件文件夹的访问

发展

# Watch mode for development
npm run dev

# Build
npm run build

# Run directly
MCP_SCOPED_REPO_PATH=/tmp/test-folder npm start