About io.github.Ray0907/git-mcp-server
io.github.Ray0907/git-mcp-server is an MCP server published by Ray0907 in the Developer Tools category: mCP server for GitLab and GitHub.
Six months or more without a commit doesn't mean the server is broken, but check the open issues before depending on it in production.
Install
claude mcp add io-github-ray0907-git-mcp-server -- npx -y @raytien/git-mcp-servernpx -y @raytien/git-mcp-serverThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Tools (7)
create_branchCreate a new branch
Parameters not published.
get_file_contentsRead file content from repository
Parameters not published.
get_repository_treeList directory structure
Parameters not published.
list_branchesList repository branches
Parameters not published.
list_commitsList commit history
Parameters not published.
push_filesPush file changes in a single commit
Parameters not published.
search_codeSearch for code in repository
Parameters not published.
Ask AI
Ask AI about io.github.Ray0907/git-mcp-server
Powered by Claude · Grounded in docs
Security checks
- ✓README presentThe repository ships documentation.
5 checks have not been run yet.
README
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
README copy captured when this server was indexed; it may lag the repository. The original is authoritative.