Skip to main content
Glama

gitlab-mcp-server

GitLab MCP サーバー

✨ 特徴

  • 包括的な GitLab API 統合- リポジトリ、問題、マージ リクエスト、Wiki などにアクセスします
  • 両方のトランスポートをサポート- stdio または Server-Sent Events (SSE) で使用
  • 一貫したレスポンスフォーマット- 標準化されたページ区切りとレスポンス構造
  • 強力な TypeScript 型付け- 型安全性のために MCP SDK を使用して構築
  • 完全なドキュメント- 利用可能なすべてのツールの例

🔍 サポートされている操作

  • リポジトリ管理- リポジトリの検索、作成、フォーク
  • ファイル処理- ファイルの読み取り、作成、更新
  • ブランチ操作- ブランチの作成と管理
  • 問題追跡- 問題の作成、一覧表示、フィルタリング
  • マージリクエスト- マージリクエストの作成、一覧表示、レビュー
  • グループ管理- グループプロジェクトとメンバーの一覧
  • プロジェクトアクティビティ- イベントとコミット履歴を追跡
  • Wiki管理- 添付ファイル付きのプロジェクトおよびグループWikiを完全サポート
  • メンバー管理- プロジェクト/グループのメンバーを一覧表示して管理します

🚀 はじめに

インストール

npmから(推奨)
npm install @yoda.digital/gitlab-mcp-server
ソースから
# Clone the repository git clone https://github.com/yoda-digital/mcp-gitlab-server.git cd mcp-gitlab-server # Install dependencies npm install # Build the project npm run build

構成

環境変数

サーバーには次の環境変数が必要です。

変数必須デフォルト説明
GITLAB_PERSONAL_ACCESS_TOKENはい-GitLab個人アクセストークン
GITLAB_API_URLいいえhttps://gitlab.com/api/v4GitLab API URL
PORTいいえ3000SSEトランスポート用のポート
USE_SSEいいえfalseSSEトランスポートを使用するには「true」に設定してください
GITLAB_READ_ONLY_MODEいいえfalse読み取り専用モードを有効にするには、「true」に設定します(下記参照)
読み取り専用モード

GITLAB_READ_ONLY_MODEtrueに設定されている場合、サーバーは読み取り操作のみを公開します。これは、GitLabリソースへの書き込みアクセス権を持たないクライアントアプリケーションに便利です。読み取り専用モードでは、以下のツールが利用可能になります。

  • search_repositories
  • get_file_contents
  • list_group_projects
  • get_project_events
  • list_commits
  • list_issues
  • list_merge_requests
  • list_project_wiki_pages
  • get_project_wiki_page
  • list_group_wiki_pages
  • get_group_wiki_page
  • list_project_members
  • list_group_members

読み取り専用モードで書き込み操作 (作成、更新、削除) を実行しようとすると、エラーが発生します。

MCP設定の構成

MCP 設定ファイルに GitLab MCP サーバーを追加します。

{ "mcpServers": { "gitlab": { "command": "npx", "args": ["-y", "@yoda.digital/gitlab-mcp-server"], "env": { "GITLAB_PERSONAL_ACCESS_TOKEN": "your_token_here", "GITLAB_API_URL": "https://gitlab.com/api/v4" }, "alwaysAllow": [], "disabled": false } } }

読み取り専用モードの場合は、 GITLAB_READ_ONLY_MODE環境変数を追加します。

{ "mcpServers": { "gitlab-readonly": { "command": "npx", "args": ["-y", "@yoda.digital/gitlab-mcp-server"], "env": { "GITLAB_PERSONAL_ACCESS_TOKEN": "your_token_here", "GITLAB_API_URL": "https://gitlab.com/api/v4", "GITLAB_READ_ONLY_MODE": "true" }, "alwaysAllow": [], "disabled": false } } }

使用法

stdioトランスポートあり(デフォルト)
# Set your GitLab personal access token export GITLAB_PERSONAL_ACCESS_TOKEN=your_token_here # Run the server npm start
SSEトランスポート
# Set your GitLab personal access token and enable SSE export GITLAB_PERSONAL_ACCESS_TOKEN=your_token_here export GITLAB_READ_ONLY_MODE=false export USE_SSE=true export PORT=3000 # Optional, defaults to 3000 # Run the server npm start
npxの場合
# Run directly with npx GITLAB_PERSONAL_ACCESS_TOKEN=your_token_here npx @yoda.digital/gitlab-mcp-server

🛠️ 利用可能なツール

リポジトリ操作

{ "search": "project-name", "page": 1, "per_page": 20 }
{ "name": "new-project", "description": "A new project", "visibility": "private", "initialize_with_readme": true }
{ "project_id": "username/project", "namespace": "target-namespace" }
{ "group_id": "group-name", "archived": false, "visibility": "public", "include_subgroups": true, "page": 1, "per_page": 20 }

ファイル操作

{ "project_id": "username/project", "file_path": "path/to/file.txt", "ref": "main" }
{ "project_id": "username/project", "file_path": "path/to/file.txt", "content": "File content here", "commit_message": "Add/update file", "branch": "main", "previous_path": "old/path/to/file.txt" }
{ "project_id": "username/project", "files": [ { "path": "file1.txt", "content": "Content for file 1" }, { "path": "file2.txt", "content": "Content for file 2" } ], "commit_message": "Add multiple files", "branch": "main" }

支店運営

{ "project_id": "username/project", "branch": "new-branch", "ref": "main" }

発行業務

{ "project_id": "username/project", "title": "Issue title", "description": "Issue description", "assignee_ids": [1, 2], "milestone_id": 1, "labels": ["bug", "critical"] }
{ "project_id": "username/project", "state": "opened", "labels": "bug,critical", "milestone": "v1.0", "author_id": 1, "assignee_id": 2, "search": "keyword", "created_after": "2023-01-01T00:00:00Z", "created_before": "2023-12-31T23:59:59Z", "updated_after": "2023-06-01T00:00:00Z", "updated_before": "2023-06-30T23:59:59Z", "page": 1, "per_page": 20 }
{ "project_id": "username/project", "issue_iid": 42, "sort": "desc", "order_by": "created_at", "page": 1, "per_page": 20 }

応答形式:

{ "count": 15, "notes": [ { "id": 123456, "body": "This is a comment on the issue", "author": { "id": 1, "username": "username", "name": "User Name" }, "created_at": "2023-01-01T00:00:00Z", "updated_at": "2023-01-01T00:00:00Z", "system": false, "type": "comment" }, { "id": 123457, "body": "added label ~bug", "author": { "id": 1, "username": "username", "name": "User Name" }, "created_at": "2023-01-02T00:00:00Z", "updated_at": "2023-01-02T00:00:00Z", "system": true, "type": "system" } // ... other notes ] }
{ "project_id": "username/project", "issue_iid": 42, "page": 1, "per_page": 20 }

応答形式:

{ "count": 5, "discussions": [ { "id": "discussion-123", "individual_note": true, "notes": [ { "id": 123456, "body": "This is a comment on the issue", "author": { "id": 1, "username": "username", "name": "User Name" }, "created_at": "2023-01-01T00:00:00Z", "updated_at": "2023-01-01T00:00:00Z", "system": false, "type": "comment" } ] }, { "id": "discussion-124", "individual_note": false, "notes": [ { "id": 123457, "body": "This is a thread starter", "author": { "id": 1, "username": "username", "name": "User Name" }, "created_at": "2023-01-02T00:00:00Z", "updated_at": "2023-01-02T00:00:00Z", "system": false, "type": "comment" }, { "id": 123458, "body": "This is a reply in the thread", "author": { "id": 2, "username": "username2", "name": "User Name 2" }, "created_at": "2023-01-03T00:00:00Z", "updated_at": "2023-01-03T00:00:00Z", "system": false, "type": "comment" } ] } // ... other discussions ] }

マージリクエスト操作

{ "project_id": "username/project", "title": "Merge request title", "description": "Merge request description", "source_branch": "feature-branch", "target_branch": "main", "allow_collaboration": true, "draft": false }
{ "project_id": "username/project", "state": "opened", "order_by": "created_at", "sort": "desc", "milestone": "v1.0", "labels": "feature,enhancement", "created_after": "2023-01-01T00:00:00Z", "created_before": "2023-12-31T23:59:59Z", "updated_after": "2023-06-01T00:00:00Z", "updated_before": "2023-06-30T23:59:59Z", "author_id": 1, "assignee_id": 2, "search": "keyword", "source_branch": "feature-branch", "target_branch": "main", "page": 1, "per_page": 20 }

プロジェクト活動

{ "project_id": "username/project", "action": "pushed", "target_type": "issue", "before": "2023-12-31T23:59:59Z", "after": "2023-01-01T00:00:00Z", "sort": "desc", "page": 1, "per_page": 20 }
{ "project_id": "username/project", "sha": "branch-or-commit-sha", "path": "path/to/file", "since": "2023-01-01T00:00:00Z", "until": "2023-12-31T23:59:59Z", "all": true, "with_stats": true, "first_parent": true, "page": 1, "per_page": 20 }

メンバーオペレーション

{ "project_id": "username/project", "query": "search term", "page": 1, "per_page": 20 }

応答形式:

{ "count": 3, "items": [ { "id": 123, "username": "username", "name": "User Name", "state": "active", "avatar_url": "https://gitlab.com/avatar.png", "web_url": "https://gitlab.com/username", "access_level": 50, "access_level_description": "Owner" } // ... other members ] }
{ "group_id": "group-name", "query": "search term", "page": 1, "per_page": 20 }

応答形式:

{ "count": 5, "items": [ { "id": 456, "username": "username", "name": "User Name", "state": "active", "avatar_url": "https://gitlab.com/avatar.png", "web_url": "https://gitlab.com/username", "access_level": 30, "access_level_description": "Developer" } // ... other members ] }

プロジェクトWiki運営

{ "project_id": "username/project", "with_content": false }
{ "project_id": "username/project", "slug": "page-slug", "render_html": false, "version": "commit-sha" }
{ "project_id": "username/project", "title": "Page Title", "content": "Wiki page content", "format": "markdown" }
{ "project_id": "username/project", "slug": "page-slug", "title": "New Page Title", "content": "Updated wiki page content", "format": "markdown" }
{ "project_id": "username/project", "slug": "page-slug" }
{ "project_id": "username/project", "file_path": "path/to/attachment.png", "content": "base64-encoded-content", "branch": "main" }

グループWiki操作

{ "group_id": "group-name", "with_content": false }
{ "group_id": "group-name", "slug": "page-slug", "render_html": false, "version": "commit-sha" }
{ "group_id": "group-name", "title": "Page Title", "content": "Wiki page content", "format": "markdown" }
{ "group_id": "group-name", "slug": "page-slug", "title": "New Page Title", "content": "Updated wiki page content", "format": "markdown" }
{ "group_id": "group-name", "slug": "page-slug" }
{ "group_id": "group-name", "file_path": "path/to/attachment.png", "content": "base64-encoded-content", "branch": "main" }

🔧 開発

要件

  • Node.js 16以上
  • npm 7以上
  • 個人アクセストークンを持つGitLabアカウント

プロジェクトの構築

npm run build

テストの実行

npm test

コードスタイルとリンティング

npm run lint

リリースプロセス

  1. package.jsonのバージョンを更新する
  2. CHANGELOG.md を更新
  3. GitHubで新しいリリースを作成する
  4. npm publishで npm に公開する

📖 ドキュメント

より詳細なドキュメントについては、ドキュメント サイトにアクセスするか、ソース コード内の TypeScript 定義を確認してください。

💼 ユースケース

  • AIを活用した開発ワークフロー- AIアシスタントがGitLabリポジトリと対話できるようにします
  • 自動化された問題とPR管理- AIサポートによる開発プロセスの合理化
  • Wiki管理- ドキュメントの更新とナレッジベースの管理を自動化
  • チームコラボレーション- AIアシスタントをチームのGitLabワークフローに統合する

📊 ロードマップ

  • [ ] GitLab CI/CD統合
  • [ ] 高度なプロジェクト分析
  • [ ] 包括的なテストスイート
  • [ ] GitLab GraphQL APIのサポート
  • [ ] 拡張Webhookサポート

🤝 貢献する

貢献を歓迎します!貢献方法は以下の通りです。

  1. リポジトリをフォークする
  2. 機能ブランチを作成します( git checkout -b feature/amazing-feature
  3. 変更をコミットします ( git commit -m 'Add some amazing feature' )
  4. ブランチにプッシュする ( git push origin feature/amazing-feature )
  5. プルリクエストを開く

必要に応じてテストを更新し、プロジェクトのコード スタイルに従ってください。

📝 ライセンス

このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細についてはLICENSEファイルを参照してください。

👥 貢献者

このプロジェクトの改善に協力してくれたすべての貢献者に感謝します。

特別な感謝を申し上げます:

  • thomasleveil - プロジェクトとグループのGitLabメンバーリスト機能を実装し、一貫した応答フォーマットを実現しました。

📦 NPM パッケージ

このパッケージはnpmで入手できます:
https://www.npmjs.com/package/@yoda.digital/gitlab-mcp-server

Install Server
A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

GitLab MCP サーバー (アクティビティ追跡機能とグループ プロジェクト一覧機能付き)

このサーバーは、グループプロジェクトリストとアクティビティ追跡の強化されたオリジナルのGitLab MCPサーバーをベースにしています。

  1. ✨ 特徴
    1. 🔍 サポートされている操作
  2. 🚀 はじめに
    1. インストール
    2. 構成
    3. 使用法
  3. 🛠️ 利用可能なツール
    1. リポジトリ操作
    2. ファイル操作
    3. 支店運営
    4. 発行業務
    5. マージリクエスト操作
    6. プロジェクト活動
    7. メンバーオペレーション
    8. プロジェクトWiki運営
    9. グループWiki操作
  4. 🔧 開発
    1. 要件
    2. プロジェクトの構築
    3. テストの実行
    4. コードスタイルとリンティング
    5. リリースプロセス
  5. 📖 ドキュメント
    1. 💼 ユースケース
      1. 📊 ロードマップ
        1. 🤝 貢献する
          1. 📝 ライセンス
            1. 👥 貢献者
              1. 📦 NPM パッケージ

                Related MCP Servers

                • A
                  security
                  A
                  license
                  A
                  quality
                  gitlab mcp
                  Last updated -
                  13
                  4,715
                  226
                  JavaScript
                  MIT License
                  • Linux
                  • Apple
                • A
                  security
                  F
                  license
                  A
                  quality
                  MCP server for managing Git operations on local repositories, allowing users to list repositories, get and create tags, list commits, push tags, and refresh repositories through a standardized interface.
                  Last updated -
                  6
                  Python
                • -
                  security
                  F
                  license
                  -
                  quality
                  An MCP server that enables communication with GitLab repositories, allowing interaction with GitLab's API to manage projects, issues, and repositories through natural language.
                  Last updated -
                  20
                  1
                  JavaScript
                  MIT License
                • A
                  security
                  A
                  license
                  A
                  quality
                  基于MCP框架构建的GitLab集成服务器,提供多种GitLab RESTful API工具,支持项目搜索、任务管理、合并请求创建与审核等功能,帮助开发团队高效协作。
                  Last updated -
                  8
                  67
                  2
                  TypeScript
                  MIT License

                View all related MCP servers

                MCP directory API

                We provide all the information about MCP servers via our MCP API.

                curl -X GET 'https://glama.ai/api/mcp/v1/servers/yoda-digital/mcp-gitlab-server'

                If you have feedback or need assistance with the MCP directory API, please join our Discord server