关于 repoport
repoport 是让 Agent 通过 MCP 操作本地 Git 仓库的工具,也提供命令行界面。它涵盖状态、差异、暂存、提交、日志和分支操作,调用 Git 时不经过 shell。
主要功能
- 01查看仓库状态和差异
- 02暂存文件并提交更改
- 03查看提交日志和版本内容
- 04创建、列出和切换分支
- 05校验仓库路径与版本参数
适用场景
- 01让 Agent 检查工作区改动
- 02暂存文件并提交已暂存内容
- 03查看历史提交或指定版本
- 04创建分支或切换工作分支
MCP 相关
提供 stdio MCP 服务,向客户端开放本地 Git 仓库的状态、差异、暂存、提交、日志、版本和分支工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
repoport
repoport 让 Agent 可以直接操作本地 Git 仓库,而无需提供 Shell。它涵盖日常工作流程——检查状态、查看差异、暂存文件、提交、查看日志、检查某个修订版本以及切换分支——并通过直接调用 Git CLI 来实现,每个参数都作为数据传递,而不是拼接到 Shell 字符串中。
运行任何操作之前,都会检查仓库路径:路径必须存在,且必须位于 Git 工作树内。以连字符开头的类似修订版本的值会被拒绝,因此分支名称或修订版本无法向调用中注入额外的 Git 标志。
安装
npx @reneturcios/repoport status .
或者运行容器镜像:
docker run -i ghcr.io/cloudcorprecords/repoport
容器默认启动 MCP 服务(见下文)。传入 CLI 参数即可将其用作 CLI。镜像和 npm 包都要求系统中有 git 二进制文件,并且能够访问指定的仓库;请根据需要挂载本地检出或针对本地检出运行。
CLI
# Working tree status for a repository
repoport status ~/src/my-project
# Recent commits (default 10, pass a count to change it)
repoport log ~/src/my-project
repoport log ~/src/my-project 25
repoport --version
退出代码:成功时为 0;Git 或仓库检查失败时为 1(错误会附带 Git 自身的消息);用法错误时为 2。
MCP 服务
一个可执行文件同时支持这两种用途。mcp 子命令会启动一个 stdio MCP 服务:
npx -y @reneturcios/repoport mcp
MCP 客户端配置:
{
"mcpServers": {
"repoport": {
"command": "npx",
"args": ["-y", "@reneturcios/repoport", "mcp"]
}
}
}
工具
| 工具 | 输入 | 返回内容 |
|---|---|---|
git_status | repo_path(必填) | 仓库的完整 git status 输出。 |
git_diff_unstaged | repo_path(必填),context_lines(可选,默认值为 3) | 未暂存工作树更改的统一差异。 |
git_diff_staged | repo_path(必填),context_lines(可选,默认值为 3) | 已暂存、将在下一次提交中包含的更改的统一差异。 |
git_diff | repo_path、target(均必填),context_lines(可选) | 与给定目标修订版本的统一差异。 |
git_add | repo_path、files(字符串数组,均必填) | 暂存指定文件;路径会放在 -- 之后传递。 |
git_reset | repo_path(必填) | 取消暂存所有内容(git reset),保留工作树中的修改。 |
git_commit | repo_path、message(均必填) | 使用给定消息提交当前已暂存的所有内容。 |
git_log | repo_path(必填),max_count(可选,默认值为 10),start_timestamp、end_timestamp(可选的 ISO 字符串) | 按时间从近到远列出提交;时间戳范围会根据每个提交的作者日期筛选。 |
git_show | repo_path、revision(均必填) | 指定修订版本的 git show 输出。 |
git_create_branch | repo_path、branch_name(均必填),base_branch(可选) | 创建分支,但不切换到该分支。 |
git_checkout | repo_path、branch_name(均必填) | 将工作树切换到指定分支。 |
git_branch | repo_path(必填),branch_type(可选:local、remote 或 all,默认值为 local),contains、not_contains(可选) | 列出分支;也可筛选包含或不包含某个提交的分支。 |
每个工具都会将 Git 的 stdout 作为文本结果返回。失败情况——路径缺失、路径不是仓库、Git 出错或以连字符开头的值被拒绝——会作为工具错误返回,并附带底层消息。
安全说明
- 任何环节都不会调用 Shell:参数会通过
execFile参数数组传递。 - 以
-开头的branch_name、target、revision、contains和not_contains值会在 Git 收到之前被拒绝。 git_commit只会提交已经暂存的内容;不会代为暂存。
开发
npm install
npm run build # tsc -> dist/
npm test # node test runner over test/*.test.ts, no network
npm run dev # run the CLI from source via tsx
测试会在临时目录中构建一个一次性仓库(在那里初始化 Git 并设置本地测试身份),并针对该仓库运行完整工作流程。因此,测试需要 PATH 中有 git 二进制文件,但不需要网络,也不需要已有检出。
许可证
MIT——详见 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。