关于 GIT-Pilot
GIT-Pilot 是基于 FastMCP 的 GitHub 管理服务,面向需要通过 API 操作仓库、拉取请求和议题的开发者。它涵盖文件、分支、提交及 PR 流程,并包含令牌加密、过期清理和限流重试机制。
主要功能
- 01仓库创建与管理
- 02分支、提交和文件操作
- 03拉取请求创建、审查与合并
- 04议题、标签和评论管理
- 05Fernet 令牌加密与过期清理
- 06限流处理与自动重试
适用场景
- 01通过 Agent 创建和维护 GitHub 仓库
- 02处理拉取请求状态检查与合并
- 03搜索议题并管理标签、负责人和评论
MCP 相关
GIT-Pilot 使用 FastMCP 实现为 MCP 服务,向 MCP 客户端提供 GitHub 仓库、拉取请求和议题操作工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
暂未收录安装方式
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
GIT-Pilot
⭐️ 如果你觉得这个项目有帮助,请为它点个星!⭐️
GIT-Pilot 是一款强大的 GitHub 自动化与管理工具,可为 GitHub 操作提供全面的 API 封装。它通过基于 FastMCP 的服务简化与 GitHub 的交互,便于管理代码仓库、拉取请求、议题等。
🌟 功能
🔐 身份验证与安全
- 使用 Fernet 加密进行安全的令牌管理
- 令牌过期和自动清理
- 速率限制处理和自动重试
- 可配置的身份验证超时
📦 代码仓库管理
- 创建和管理代码仓库
- 处理分支和提交
- 文件操作(创建、更新、删除)
- 代码仓库搜索和筛选
- 提交比较和历史记录
🔄 拉取请求操作
- 创建和管理拉取请求
- 合并策略(合并、压缩、变基)
- 状态检查验证
- 冲突检测和处理
- 支持草稿 PR
📝 议题管理
- 创建和更新议题
- 标签管理
- 受理人管理
- 评论管理
- 议题搜索和筛选
🛠 技术特性
- 线程安全操作
- 资源管理
- 全面的错误处理
- 详细日志记录
- 类型安全
- 配置管理
- FastMCP 服务集成
🚀 开始使用
先决条件
- Python 3.12 或更高版本
- GitHub 账户
- GitHub Personal Access Token
- FastMCP CLI(可选)
安装
- 克隆代码仓库:
git clone https://github.com/yourusername/GIT-Pilot.git
cd GIT-Pilot
- 安装 uv(如果尚未安装):
curl -LsSf https://astral.sh/uv/install.sh | sh
- 创建并激活虚拟环境:
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
- 使用 uv 安装软件包:
uv pip install -e .
- 设置环境变量:
在项目根目录中创建一个
.env文件:
GITHUB_TOKEN=your_github_token_here
基本用法
设置 Claude Desktop 集成
- 启动 GIT-Pilot 服务:
uv run main.py
-
下载并安装 Claude Desktop
-
配置 Claude Desktop:
- 打开 Claude Desktop
- 前往
File > Settings > Developer > Edit Config - 添加以下配置:
{
"mcpServers": {
"GIT-Pilot": {
"command": "uv",
"args": [
"--directory",
"path\\to\\repo",
"run",
"main.py"
]
}
}
}
- 重启 Claude Desktop
- 在聊天窗口中找到锤子图标——这表示 MCP 服务已准备就绪
API 示例
# Create a repository
await call_tool("create_repository",
name="my-repo",
description="My awesome repository",
private=True,
has_issues=True,
has_wiki=True,
has_projects=True,
auto_init=True
)
# Create a pull request
await call_tool("create_pull_request",
repo_path="owner/repo",
title="New feature",
head="feature-branch",
base="main",
body="Description of changes",
draft=False
)
# List commits with filtering
await call_tool("list_commits",
repo_path="owner/repo",
branch="main",
author="username",
since="2024-01-01",
until="2024-04-21",
max_results=30
)
🔧 配置
可通过 Config 类配置此服务:
@dataclass
class Config:
TOKEN_TTL_HOURS: int = 24
MAX_STORED_TOKENS: int = 1000
CLEANUP_INTERVAL_SECONDS: int = 3600
MAX_RETRIES: int = 3
RETRY_DELAY_SECONDS: int = 5
MAX_RESULTS_PER_PAGE: int = 100
ENCRYPTION_KEY: bytes = Fernet.generate_key()
🛡 安全
- 使用 Fernet 对静态令牌进行加密
- 自动令牌过期和清理
- 通过重试机制防范速率限制
- 输入验证
- 全面的错误处理
- 安全清理令牌
🔄 速率限制
此服务内置了速率限制处理:
- 触发速率限制时自动重试
- 可配置重试次数
- 重试间隔延迟
- 速率限制状态日志记录
- 指数退避
🧪 错误处理
全面处理以下错误:
- 身份验证失败
- API 错误
- 速率限制
- 无效输入
- 资源冲突
- 网络问题
- 令牌验证
- 文件操作
📈 日志记录
详细记录以下信息:
- 时间戳
- 日志级别
- 函数名称
- 行号
- 错误详情
- 堆栈跟踪
- 速率限制信息
- 令牌操作
🤝 参与贡献
欢迎贡献!请按以下步骤操作:
- Fork 此代码仓库
- 创建功能分支
- 提交更改
- 推送到分支
- 创建 Pull Request
📝 许可证
本项目采用 GNU General Public License v3.0 许可,详情请参阅 LICENSE 文件。
🙏 致谢
由 GIT-Pilot 团队倾心打造 ❤️
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
