repoport について
repoportは、AgentがMCP経由でローカルGitリポジトリを操作するためのツールで、CLIも備えています。状態確認、差分、ステージング、コミット、ログ、ブランチ操作を扱い、シェルを介さずGitを呼び出します。
主な機能
- 01リポジトリの状態と差分の確認
- 02ファイルのステージングとコミット
- 03コミットログとリビジョンの確認
- 04ブランチの作成・一覧・切り替え
- 05リポジトリパスとリビジョン引数の検証
活用シーン
- 01Agentによる作業ツリーの変更確認
- 02ファイルをステージして内容をコミット
- 03コミット履歴やリビジョンの確認
- 04ブランチの作成や作業ツリーの切り替え
MCP 対応
stdio MCPサーバーを提供し、ローカルGitの状態、差分、ステージング、コミット、ログ、リビジョン、ブランチ操作のツールをクライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
repoport
repoport により、エージェントはシェルを使わずにローカルの git リポジトリを直接操作できます。ステータスの確認、差分の読み取り、ファイルのステージング、コミット、ログの読み取り、リビジョンの確認、ブランチ間の切り替えといった日常的な作業をカバーします。これらは git CLI を直接呼び出して実行し、すべての引数をシェル文字列に組み立てるのではなく、データとして渡します。
処理を実行する前にリポジトリのパスを検証します。パスが存在し、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 サーバー
1 つのバイナリで両方の機能を提供します。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 の標準出力をテキスト結果として返します。パスが存在しない、パスがリポジトリではない、git エラーが発生した、ダッシュで始まる値が拒否されたといった場合は、元のメッセージを含むツールエラーが返されます。
安全性に関する注意
- どの処理でもシェルは使用しません。引数は
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 を初期化し、テスト用のローカル ID を設定)し、それに対して一連の作業全体をテストします。そのため、PATH 上に git バイナリが必要ですが、ネットワーク接続や既存のチェックアウトは必要ありません。
ライセンス
MIT — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。