GIT-Pilot について
GIT-Pilotは、リポジトリ、プルリクエスト、IssueをAPI経由で操作したい開発者向けの、FastMCPベースのGitHub管理サーバーです。ファイル、ブランチ、コミット、PRの操作に加え、トークン暗号化や期限切れの整理、レート制限時の再試行に対応します。
主な機能
- 01リポジトリの作成と管理
- 02ブランチ、コミット、ファイル操作
- 03プルリクエストの作成、検証、マージ
- 04Issue、ラベル、コメントの管理
- 05Fernetによるトークン暗号化と期限切れ整理
- 06レート制限への対応と自動再試行
活用シーン
- 01エージェント経由でのGitHubリポジトリ作成・管理
- 02プルリクエストの検証とマージ
- 03Issue検索とラベル、担当者、コメントの管理
MCP 対応
GIT-PilotはFastMCPで実装されたサーバーで、GitHubのリポジトリ、プルリクエスト、Issue操作をMCPクライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
GIT-Pilot
⭐️ このプロジェクトが役に立ったら、ぜひスターを付けてください! ⭐️
GIT-Pilot は、GitHub の操作に対応する包括的な API ラッパーを提供する、強力な GitHub 自動化・管理ツールです。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 エラー
- レート制限
- 無効な入力
- リソースの競合
- ネットワークの問題
- トークンの検証
- ファイル操作
📈 ログ記録
次の情報を含む詳細なログ記録:
- タイムスタンプ
- ログレベル
- 関数名
- 行番号
- エラーの詳細
- スタックトレース
- レート制限情報
- トークン操作
🤝 貢献
皆さまからの貢献を歓迎します!次の手順に従ってください:
- リポジトリをフォークします
- 機能ブランチを作成します
- 変更をコミットします
- ブランチにプッシュします
- プルリクエストを作成します
📝 ライセンス
このプロジェクトは GNU General Public License v3.0 の下でライセンスされています。詳細については LICENSE ファイルをご覧ください。
🙏 謝辞
GIT-Pilot チームが ❤️ を込めて作成しました
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
