
Git Mcp Server
- Updated December 8, 2025
- Ray0907/git-mcp-server
git-mcp-server is a MCP server that exposes GitHub and GitLab repository operations to your coding agent over MCP.
About
The Ray0907 git-mcp-server is an MCP integration that connects Claude Code, Cursor, and similar agents to GitHub or GitLab using a personal access token. developers use it when they want the agent to list repositories, inspect issues, or perform permitted write actions without copying URLs and clicking through the web UI. Configuration centers on GIT_PROVIDER (github or gitlab), required GIT_TOKEN, optional API base URL for self-hosted instances, and read-only mode when you only want safe lookups. It fits workflows where one person owns the repo, CI, and releases: the agent can ground answers in live remote state instead of stale context. Complexity is moderate because you must create tokens with the right scopes and decide whether writes are acceptable. It is a protocol bridge to Git hosts, not a replacement for local git CLI or full CI orchestration.
- Single MCP server for both GitHub and GitLab via GIT_PROVIDER
- Personal access token auth with optional self-hosted GIT_API_URL
- GIT_READ_ONLY mode to block write operations for safer audits
- stdio transport via npm package @raytien/git-mcp-server v0.2.3
Git Mcp Server by the numbers
- Data as of Jul 7, 2026 (Skillselion catalog sync)
claude mcp add --env GIT_PROVIDER=YOUR_GIT_PROVIDER --env GIT_TOKEN=YOUR_GIT_TOKEN --env GIT_API_URL=YOUR_GIT_API_URL --env GIT_READ_ONLY=YOUR_GIT_READ_ONLY git-mcp-server -- npx -y @raytien/git-mcp-serverAdd your badge
Show developers this MCP server is listed on Skillselion. Paste this into your README.
| Package | @raytien/git-mcp-server |
|---|---|
| Transport | STDIO |
| Auth | Required |
| Last updated | December 8, 2025 |
| Repository | Ray0907/git-mcp-server ↗ |
What it does
Let your coding agent open issues, read repos, and manage GitHub or GitLab from chat without leaving the editor.
Who is it for?
Best when you live in GitHub or GitLab and want the agent to triage issues, check PRs, or draft release notes from live API data.
Skip if: Skip if you need deep local git graph operations only on disk without remote API access, or and refuse to grant PAT scopes to an agent.
What you get
After you register the server with GIT_TOKEN and provider settings, your agent can query and optionally mutate repos and issues through standardized MCP tools.
- Agent-callable tools against your chosen Git provider
- Optional read-only guardrail for exploration and audits
- Support for self-hosted GitLab or custom API URLs
By the numbers
- Package version 0.2.3 on npm as @raytien/git-mcp-server
- Supports two providers: github and gitlab via GIT_PROVIDER
- Four documented environment variables including secret GIT_TOKEN
README.md
Git MCP Server
A clean, modular Git MCP server supporting both GitHub and GitLab.
Quick Start
Claude Desktop Configuration
Add to your 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"
}
}
}
}
Self-Hosted 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"
}
}
}
}
Read-Only Mode
{
"mcpServers": {
"git": {
"command": "npx",
"args": ["-y", "@raytien/git-mcp-server"],
"env": {
"GIT_PROVIDER": "github",
"GIT_TOKEN": "ghp_xxxxxxxxxxxxxxxxxxxx",
"GIT_READ_ONLY": "true"
}
}
}
}
Get Your Token
GitHub
- Go to GitHub > Settings > Developer settings > Personal access tokens > Tokens (classic)
- Generate new token with scopes:
repo,read:org,workflow - Copy the token (starts with
ghp_)
GitLab
- Go to GitLab > Settings > Access Tokens
- Create a new token with scopes:
api,read_api,read_repository,write_repository - Copy the token (starts with
glpat-)
Available Tools
Repository
| Tool | Description |
|---|---|
get_file_contents |
Read file content from repository |
get_repository_tree |
List directory structure |
push_files |
Push file changes in a single commit |
create_branch |
Create a new branch |
list_branches |
List repository branches |
list_commits |
List commit history |
search_code |
Search for code in repository |
Issues
| Tool | Description |
|---|---|
get_issue |
Get a single issue |
list_issues |
List issues |
create_issue |
Create a new issue |
update_issue |
Update an issue |
Pull/Merge Requests
| Tool | Description |
|---|---|
get_pull_request |
Get a merge request |
list_pull_requests |
List merge requests |
create_pull_request |
Create a merge request |
get_pull_request_diffs |
Get merge request changes |
merge_pull_request |
Merge a merge request |
CI/CD (Pipelines / Workflow Runs)
| Tool | Description |
|---|---|
get_pipeline |
Get pipeline/workflow run status |
list_pipelines |
List pipelines/workflow runs |
list_pipeline_jobs |
List pipeline jobs/workflow jobs |
get_job_log |
Get job log output |
Note: GitHub Actions workflow runs map to GitLab pipelines. The same tools work for both platforms.
Comments
| Tool | Description |
|---|---|
create_comment |
Add comment to issue/MR |
list_comments |
List comments |
Users
| Tool | Description |
|---|---|
get_me |
Get current authenticated user |
Configuration
| Environment Variable | Required | Default | Description |
|---|---|---|---|
GIT_PROVIDER |
No | gitlab |
Provider type: gitlab or github |
GIT_TOKEN |
Yes | - | Personal Access Token |
GIT_API_URL |
No | Provider default | API URL (auto-detected from provider) |
GIT_AUTH_TYPE |
No | bearer |
Auth type: bearer or private-token |
GIT_READ_ONLY |
No | false |
Disable write operations |
LOG_LEVEL |
No | info |
Log level: debug, info, warn, error |
Architecture
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
Development
# Install dependencies
npm install
# Build
npm run build
# Run tests
npm test
# Run locally
npm start
# Development mode (watch)
npm run dev
Adding a New Tool
- Create file:
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, ...);
},
});
- Export from category index:
src/tools/{category}/index.ts - Add to allTools:
src/tools/index.ts
Inspired By
- gitlab-mcp - GitLab MCP server
- github-mcp-server - Official GitHub MCP server
License
MIT
Recommended MCP Servers
How it compares
Git host API MCP bridge, not a local git porcelain skill or hosted CI runner.
FAQ
Who is git-mcp-server for?
It is for developers and small teams using AI coding agents who want direct GitHub or GitLab access from the IDE chat.
When should I use git-mcp-server?
Use it when you are building or shipping and need the agent to read issues, repos, or merge requests—or controlled writes—without switching to the browser.
How do I add git-mcp-server to my agent?
Install @raytien/git-mcp-server from npm, add a stdio MCP entry in Claude Code or Cursor, and set GIT_PROVIDER, GIT_TOKEN, and optional GIT_API_URL and GIT_READ_ONLY.