[OSS紹介#58] mcp-server-git:Gitリポジトリを直感的に操作する新しいツールをご紹介

この記事について

このブログシリーズでは、注目すべきオープンソースソフトウェア(OSS)を定期的に紹介していきます。連載第58回となる今回は、Gitリポジトリの操作や自動化をサポートする「mcp-server-git」に焦点を当てます。

ソフトウェア開発の現場では、リポジトリ管理の効率化が常に求められています。Gitはその中心的な技術となっており、分散型バージョン管理の需要は年々高まっています。しかし、従来のGitコマンドの使い方には慣れが必要であり、特に大規模なプロジェクトでは手間がかかることも少なくありません。

今回紹介する「mcp-server-git」は、Model Context Protocolに基づいたサーバーで、Gitリポジトリに対するさまざまな操作をより直感的に行えるツールです。ユーザーは、自然言語や簡単なコマンドを使用するだけで、リポジトリの状態確認や変更管理が可能となるため、開発者の生産性を大幅に向上させることが期待されます。特に、サーバーは今後機能が増加・改善される見込みで、柔軟性や拡張性も持ち合わせています。本記事では、その機能や使い方について詳しく紹介していきます。

リンク:https://github.com/modelcontextprotocol/servers/tree/main/src/git


本コンテンツは、弊社AI開発ツール「IXV」を用いたOSSツール紹介です。情報の正確性には努めておりますが、内容に誤りが含まれる可能性がございますのでご了承ください。

1. mcp-server-gitの機能

mcp-server-gitは、Gitリポジトリとのインタラクションおよび自動化を提供するModel Context Protocolサーバーです。このサーバーは、大規模言語モデルを介してGitリポジトリの読み取り、検索、操作を行うためのツールを提供します。以下は、主なツールの一覧です:

  • git_status: 作業ツリーの状態を表示します。入力としてリポジトリのパスを受け取り、現在の作業ディレクトリの状態をテキスト出力として返します。
  • git_diff_unstaged: ステージされていない作業ディレクトリの変更を表示します。リポジトリのパスを入力として受け取り、差分出力を返します。
  • git_commit: リポジトリへの変更を記録します。入力にはリポジトリのパスとコミットメッセージが必要です。
  • git_log: コミットログを表示します。リポジトリのパスと表示する最大コミット数を入力として受け取り、コミットエントリの配列を返します。

さらに、mcp-server-gitはGitHub APIと統合され、リポジトリの管理やファイル操作、検索機能も提供します。以下は、追加機能の概要です:

  • 自動ブランチ作成: ファイルの作成、更新、変更をプッシュする際に自動的にブランチが作成されます。
  • 包括的なエラーハンドリング: 一般的な問題に対する明確なエラーメッセージを提供します。
  • Git履歴の保持: 操作を行っても、Gitの正しい履歴を維持します。
  • バッチ操作: 単一ファイルおよび複数ファイルの操作をサポートします。
  • 高度な検索機能: コード、課題、プルリクエスト、ユーザーを検索できます。

これらのツールは、リポジトリの管理や変更の追跡を効率化し、開発者の作業をサポートします。

2. セットアップ手順

mcp-server-gitのセットアップは、以下の方法で行うことができます。

2.1 uvを使用する場合(推奨)

特別なインストールは不要で、以下のコマンドを使用して直接実行できます。

uvx mcp-server-git

2.2 PIPを使用する場合

PIPを使用してmcp-server-gitをインストールすることも可能です。以下のコマンドを実行します。

pip install mcp-server-git

インストール後、次のコマンドでスクリプトを実行できます。

python -m mcp_server_git

2.3 動作環境とライセンス

mcp-server-gitはMITライセンスの下で提供されており、使用、変更、配布が自由です。動作環境にはPythonが必要です。具体的なバージョン要件は記載されていませんが、一般的なPython環境が整っていれば問題ありません。

また、GitHub APIを使用するために、GitHub Personal Access Tokenを作成し、適切な権限を設定する必要があります。これにより、リポジトリへのフルコントロールなどの機能が利用可能です。

2.4 使用方法

mcp-server-gitを使用する際は、環境に応じて以下の設定を行います。

  1. Dockerを使用する場合
    Dockerを使用する場合は、次のように設定ファイルに記述します。
    {
    "mcpServers": {
    "github": {
    "command": "docker",
    "args": [
    "run",
    "-i",
    "--rm",
    "-e",
    "GITHUB_PERSONAL_ACCESS_TOKEN",
    "mcp/github"
    ],
    "env": {
    "GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
    }
    }
    }
    }

  2. NPXを使用する場合
    NPXを使用する場合は、次のように設定します。
    {
    "mcpServers": {
    "github": {
    "command": "npx",
    "args": [
    "-y",
    "@modelcontextprotocol/server-github"
    ],
    "env": {
    "GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
    }
    }
    }
    }

3. 簡単な使い方

mcp-server-gitを使用する際は、まずリポジトリのパスを指定する必要があります。以下は、いくつかの基本的なコマンドの使用例です。

3.1 リポジトリの状態を確認する

リポジトリの状態を確認するには、次のようにコマンドを実行します。

uvx mcp-server-git --status --repository path/to/git/repo

3.2 変更をステージする

特定のファイルをステージするには、次のようにします。

uvx mcp-server-git --add --repository path/to/git/repo --files ["file1.txt", "file2.txt"]

3.3 コミットを作成する

変更をコミットするには、以下のコマンドを実行します。

uvx mcp-server-git --commit --repository path/to/git/repo --message "Your commit message"

3.4 その他の機能の使用例

mcp-server-gitはGitHub APIの機能も提供しており、以下のようなコマンドで利用できます。

  • ファイルの作成または更新:
    uvx mcp-server-git --create_or_update_file --owner your_username --repo your_repo --path "path/to/file.txt" --content "File content" --message "Creating or updating file"

  • 新しいリポジトリの作成:
    uvx mcp-server-git --create_repository --name "new_repo" --description "New repository description" --private false

これらのコマンドを使用することで、Gitリポジトリの管理が簡単に行えます。

結論

mcp-server-gitは、Gitリポジトリの操作を大規模言語モデルを介して効率化するための強力なツールです。簡単なセットアップと直感的なコマンド操作により、開発者はリポジトリの状態を迅速に把握し、変更を管理することができます。MITライセンスの下で自由に使用できるため、ぜひ試してみてください。GitHub APIとの統合により、より一層多機能なリポジトリ管理が実現できます。