git-mcp-server について
git-mcp-serverは、ホスト型またはセルフホスト型リポジトリを扱うチーム向けに、GitHubとGitLabの操作を提供します。プロバイダーに依存しないツールで読み書きを行え、書き込みを無効にする設定もあります。
主な機能
- 01GitHubとGitLabに対応
- 02リポジトリの参照と編集
- 03イシューとマージリクエストの操作
- 04CI/CDパイプラインとジョブの確認
- 05読み取り専用モード
活用シーン
- 01リポジトリのファイルと履歴の確認
- 02イシューやマージリクエストの作成・更新
- 03パイプライン状態とジョブログの確認
- 04接続先サーバーを読み取り専用に制限
MCP 対応
MCPサーバーとして、GitHubとGitLabのリポジトリ、イシュー、マージリクエスト、コメント、ユーザー、CI/CD用ツールをMCPクライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @raytien/git-mcp-serverGIT_PROVIDERProvider type: gitlab or githubGIT_TOKENシークレットPersonal Access Token for GitHub or GitLabGIT_API_URLAPI URL for self-hosted instancesGIT_READ_ONLYDisable write operations (true/false)ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
23掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| ref | string | いいえ | ブランチ名、タグ、またはコミット SHA(デフォルト:デフォルトブランチ) |
| path | string | はい | リポジトリ内のファイルまたはディレクトリのパス |
| repo | string | はい | リポジトリ識別子(GitLab:"group/project" または ID、GitHub:"owner/repo") |
詳細
Git MCP サーバー
GitHub と GitLab の両方に対応した、シンプルでモジュール式の Git MCP サーバーです。
クイックスタート
Claude Desktop の設定
claude_desktop_config.json に追加します。
macOS:~/Library/Application Support/Claude/claude_desktop_config.json
Windows:%APPDATA%\Claude\claude_desktop_config.json
GitHub
{
"mcpServers": {
"git": {
"command": "npx",
"args": ["-y", "@raytien/git-mcp-server"],
"env": {
"GIT_PROVIDER": "github",
"GIT_TOKEN": "ghp_xxxxxxxxxxxxxxxxxxxx"
}
}
}
}
GitHub Enterprise
{
"mcpServers": {
"git": {
"command": "npx",
"args": ["-y", "@raytien/git-mcp-server"],
"env": {
"GIT_PROVIDER": "github",
"GIT_API_URL": "https://github.your-company.com/api/v3",
"GIT_TOKEN": "ghp_xxxxxxxxxxxxxxxxxxxx"
}
}
}
}
GitLab.com(SaaS)
{
"mcpServers": {
"git": {
"command": "npx",
"args": ["-y", "@raytien/git-mcp-server"],
"env": {
"GIT_PROVIDER": "gitlab",
"GIT_TOKEN": "glpat-xxxxxxxxxxxxxxxxxxxx"
}
}
}
}
セルフホスト GitLab
{
"mcpServers": {
"git": {
"command": "npx",
"args": ["-y", "@raytien/git-mcp-server"],
"env": {
"GIT_PROVIDER": "gitlab",
"GIT_API_URL": "https://gitlab.your-company.com/api/v4",
"GIT_TOKEN": "glpat-xxxxxxxxxxxxxxxxxxxx"
}
}
}
}
読み取り専用モード
{
"mcpServers": {
"git": {
"command": "npx",
"args": ["-y", "@raytien/git-mcp-server"],
"env": {
"GIT_PROVIDER": "github",
"GIT_TOKEN": "ghp_xxxxxxxxxxxxxxxxxxxx",
"GIT_READ_ONLY": "true"
}
}
}
}
トークンの取得
GitHub
- GitHub > Settings > Developer settings > Personal access tokens > Tokens (classic) に移動します
- スコープに
repo、read:org、workflowを指定して、新しいトークンを生成します - トークンをコピーします(
ghp_で始まります)
GitLab
- GitLab > Settings > Access Tokens に移動します
- スコープに
api、read_api、read_repository、write_repositoryを指定して、新しいトークンを作成します - トークンをコピーします(
glpat-で始まります)
利用可能なツール
リポジトリ
| ツール | 説明 |
|---|---|
get_file_contents | リポジトリ内のファイル内容を読み取る |
get_repository_tree | ディレクトリ構造を一覧表示する |
push_files | ファイルの変更を単一のコミットでプッシュする |
create_branch | 新しいブランチを作成する |
list_branches | リポジトリのブランチを一覧表示する |
list_commits | コミット履歴を一覧表示する |
search_code | リポジトリ内のコードを検索する |
イシュー
| ツール | 説明 |
|---|---|
get_issue | 単一のイシューを取得する |
list_issues | イシューを一覧表示する |
create_issue | 新しいイシューを作成する |
update_issue | イシューを更新する |
プルリクエスト/マージリクエスト
| ツール | 説明 |
|---|---|
get_pull_request | マージリクエストを取得する |
list_pull_requests | マージリクエストを一覧表示する |
create_pull_request | マージリクエストを作成する |
get_pull_request_diffs | マージリクエストの変更内容を取得する |
merge_pull_request | マージリクエストをマージする |
CI/CD(パイプライン/ワークフロー実行)
| ツール | 説明 |
|---|---|
get_pipeline | パイプライン/ワークフロー実行のステータスを取得する |
list_pipelines | パイプライン/ワークフロー実行を一覧表示する |
list_pipeline_jobs | パイプラインのジョブ/ワークフローのジョブを一覧表示する |
get_job_log | ジョブのログ出力を取得する |
注:GitHub Actions のワークフロー実行は、GitLab のパイプラインに対応します。同じツールを両方のプラットフォームで利用できます。
コメント
| ツール | 説明 |
|---|---|
create_comment | イシュー/MR にコメントを追加する |
list_comments | コメントを一覧表示する |
ユーザー
| ツール | 説明 |
|---|---|
get_me | 現在認証されているユーザーを取得する |
設定
| 環境変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
GIT_PROVIDER | いいえ | gitlab | プロバイダーの種類:gitlab または github |
GIT_TOKEN | はい | - | パーソナルアクセストークン |
GIT_API_URL | いいえ | プロバイダーのデフォルト | API URL(プロバイダーから自動検出) |
GIT_AUTH_TYPE | いいえ | bearer | 認証タイプ:bearer または private-token |
GIT_READ_ONLY | いいえ | false | 書き込み操作を無効にする |
LOG_LEVEL | いいえ | info | ログレベル:debug、info、warn、error |
アーキテクチャ
src/
├── index.ts # Entry point
├── server.ts # MCP server (provider-agnostic)
├── config.ts # Configuration (multi-provider)
├── providers/ # Platform abstraction
│ ├── interface.ts # GitProvider interface
│ ├── types.ts # Platform-agnostic types
│ ├── config.ts # Provider configuration
│ ├── factory.ts # Provider Factory (creates GitLab/GitHub)
│ ├── gitlab/ # GitLab implementation
│ └── github/ # GitHub implementation
├── tools/ # Tool definitions
│ ├── define.ts # defineTool helper
│ ├── registry.ts # Tool registry
│ ├── repository/ # Repository tools
│ ├── issues/ # Issue tools
│ ├── merge-requests/ # PR/MR tools
│ ├── pipelines/ # CI/CD tools
│ ├── notes/ # Comment tools
│ └── users/ # User tools
├── gitlab/ # GitLab API client
│ ├── client.ts # HTTP client
│ └── types.ts # GitLab API types
├── github/ # GitHub API client
│ ├── client.ts # HTTP client
│ └── types.ts # GitHub API types
├── auth/ # Authentication
└── lib/ # Utilities
開発
# Install dependencies
npm install
# Build
npm run build
# Run tests
npm test
# Run locally
npm start
# Development mode (watch)
npm run dev
新しいツールの追加
- ファイルを作成します:
src/tools/{category}/{action}.ts
import { z } from 'zod';
import { defineTool, repoParam } from '../define.js';
const schema = z.object({
repo: repoParam,
// ... your params
});
export const myTool = defineTool({
name: 'my_tool',
description: 'What this tool does',
schema,
category: 'my-category',
read_only: true,
handler: async (input, ctx) => {
return ctx.provider.repository.someMethod(input.repo, ...);
},
});
- カテゴリーのインデックスからエクスポートします:
src/tools/{category}/index.ts - allTools に追加します:
src/tools/index.ts
参考にしたプロジェクト
- gitlab-mcp - GitLab MCP サーバー
- github-mcp-server - GitHub 公式 MCP サーバー
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。