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(字符串,可选):分支名称(默认:当前分支)
安全
此服务器实施了多种安全措施:
- 基础路径限制:所有路径都相对于配置的基本路径进行解析
- 路径穿越预防:试图逃离基本目录(例如。,
../../../etc/passwd)被封锁 - 无删除操作:故意省略以防止意外数据丢失
- 基地上方无通道:无法读取或列出配置的基本路径上方的目录
示例用例
- 允许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