ai-git
This server provides an MCP-based Git workflow assistant that integrates with GitHub, Leantime project management, and Slack. All tools are deterministic — the AI agent (Claude Code, Codex) supplies the intelligence for commit messages, branch names, and PR writing.
Workflow Prompts
/ai-git:aicommit— Stage-aware commit with AI-generated conventional commit message/ai-git:aibranch— Create a branch automatically from a Leantime ticket/ai-git:aipr— Create or update a GitHub PR with AI-written title/body + Slack notification/ai-git:aireview— Fetch PR diff, perform AI code review, and post it as a PR comment
Git Tools
git_status— Current branch, ahead/behind status, staged/unstaged/untracked filesgit_staged_diff— Fullgit diff --cachedoutput for writing commit messagesgit_log_for_pr— Commits on current branch since base branch, for PR contextgit_commit— Commit staged changes with an agent-authored messagegit_create_branch— Create/switch to a branch namedtype/<ticket_id>-<slug>(auto-derived from ticket)git_create_or_update_pr— Push branch and open or edit a GitHub PR (requiresghCLI)git_undo_last_commit— Soft-reset the last commit without losing work
Leantime Tools
leantime_list_my_tickets— List up to 100 tickets assigned to you (or a specific user)leantime_get_ticket— Fetch full ticket details plus a pre-formatted PR-ready markdown blockList Leantime users to find user IDs
Slack Tools
Post PR creation/update notifications to a configured Slack channel
Send arbitrary messages via a Slack webhook
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ai-gitaicommit with hint about fixing typo"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ai-git-mcp
An MCP server that reimplements the ai-git-fish
workflows — aicommit, aibranch, aipr — with Leantime integration, without fish shell and
without DeepSeek. Wire it up once and the same workflows work in Claude Code and Codex.
Why no AI inside the server?
ai-git-fish calls DeepSeek to generate commit messages and PR text. But Claude Code and Codex
are already the AI. So this server contains no LLM: every tool is deterministic. The agent
reads the diff/ticket through a tool, writes the prose itself, and passes it into the next tool.
No paying for AI twice, no losing context, and the agent understands your code better than DeepSeek.
Agent (Claude/Codex) ──calls tools──> ai-git-mcp ──> git / gh CLI
│ │
└── writes commit/PR/slug └──> Leantime JSON-RPC (/api/jsonrpc)Related MCP server: GitCode MCP Server
Requirements
On the machine that runs the agent:
Node.js ≥ 18 (
node -v)git in
PATH(git --version)GitHub CLI
gh, authenticated (gh auth login) — needed only foraiprA Leantime instance + API key — needed only for the ticket tools
You do not need to clone this repo. npx fetches and builds it for you (see below).
Installation
1. Get your Leantime credentials
Value | Where to find it |
| Your Leantime URL, e.g. |
| Leantime → your profile → API Keys → generate one |
| Your numeric user id — see the tip below |
Finding your
LEANTIME_USER_IDthe easy way (replaces ai-git-fish's installer fzf picker): set justLEANTIME_BASE_URL+LEANTIME_API_KEYfirst, restart, then ask the agent to runleantime_list_users. It prints every user with theirid— copy yours into the env and restart. (Or: open your profile and read the id from the URL, e.g..../users/editUser/5→5.)
2. Add the server to your client
Pick your client. The npx -y github:BenBen2109/ai-git-mcp command downloads this repo, builds
it once, caches it, and runs it — no manual clone or build.
Option A — one command:
claude mcp add ai-git \
-e LEANTIME_BASE_URL=https://leantime.example.com \
-e LEANTIME_API_KEY=your-key \
-e LEANTIME_USER_ID=123 \
-- npx -y github:BenBen2109/ai-git-mcpOption B — edit .mcp.json (project root) or ~/.claude.json (global):
{
"mcpServers": {
"ai-git": {
"command": "npx",
"args": ["-y", "github:BenBen2109/ai-git-mcp"],
"env": {
"LEANTIME_BASE_URL": "https://leantime.example.com",
"LEANTIME_API_KEY": "your-key",
"LEANTIME_USER_ID": "123"
}
}
}
}Edit ~/.codex/config.toml:
[mcp_servers.ai-git]
command = "npx"
args = ["-y", "github:BenBen2109/ai-git-mcp"]
env = { LEANTIME_BASE_URL = "https://leantime.example.com", LEANTIME_API_KEY = "your-key", LEANTIME_USER_ID = "123" }Pin a version by appending a tag/branch/commit:
github:BenBen2109/ai-git-mcp#v1.0.0. The first launch is slower (it builds once); later launches use the npx cache.
3. Restart and verify
Restart the client (or reload the MCP config). Then check the server is connected:
Claude Code: run
/mcp—ai-gitshould show 14 tools and 4 prompts.Codex: the
ai-gittools appear in the tool list at startup.
Configuration (env)
Variable | Required | Meaning |
| ticket tools | e.g. |
| ticket tools | sent as the |
| recommended | numeric id used to filter your tickets |
| optional | max tickets listed (default 30) |
| Slack tools | Incoming Webhook URL; the channel is fixed on the Slack side |
| optional | Deploy-preview URL with a |
| optional | JSON map of name/login → Slack member ID, e.g. |
| optional | Who to @-mention on every PR — comma list of names (from the map), raw Slack ids, or |
The git-only tools (git_status, git_staged_diff, git_commit, git_log_for_pr,
git_create_branch, git_create_or_update_pr, git_undo_last_commit) work without any Leantime
config. See .env.example.
Usage — slash commands
Three workflows, exposed as MCP prompts. In Claude Code type the slash command; in Codex just say it in plain language (e.g. "run aicommit") — the agent calls the same tools either way.
/ai-git:aicommit [hint] — stage-aware commit
Reads your staged diff, writes a Conventional Commit message, shows it to you, then commits.
# stage what you want first
git add -p
# then, in the agent:
/ai-git:aicommit
/ai-git:aicommit drop the debug logging # optional hint to steer the message→ git_staged_diff → (agent writes message) → git_commit
/ai-git:aibranch [type] — branch from a Leantime ticket
Lists your tickets, you pick one, it creates/switches to type/<id>-<slug> (slug auto-derived
from the ticket headline, Vietnamese diacritics handled).
/ai-git:aibranch # type defaults to "feat" → feat/1234-add-login
/ai-git:aibranch fix # → fix/1234-add-login→ leantime_list_my_tickets → (you pick) → git_create_branch
If LEANTIME_USER_ID isn't set (or you want someone else's tickets), the agent calls
leantime_list_users first, you pick a person, and it lists that user's tickets via assignee_id
— the equivalent of ai-git-fish's fzf user picker.
/ai-git:aipr [hint] — open or update a GitHub PR
Pushes the branch and creates (or updates) its PR with an AI-written title and body. If the branch
is named type/<id>-<slug>, the Leantime ticket is auto-linked and embedded.
/ai-git:aipr
/ai-git:aipr focus on the migration # optional hint to steer the PR→ git_status + git_log_for_pr → (agent writes title/body) → git_create_or_update_pr → slack_post_pr
After the PR is created/updated, it sends a formatted notification to the team Slack channel
(via SLACK_WEBHOOK_URL). If Slack isn't configured, that step is skipped with a note.
/ai-git:aireview <pr> [spec] — review a PR and post the review
Fetches the PR + diff, reviews it against the team checklist (Functionality, Security, Error Handling, Code Quality, Performance, Style), writes the review in English following a fixed format, and posts it as a PR comment. Optionally validates against a Redmine spec URL.
/ai-git:aireview https://github.com/org/repo/pull/42
/ai-git:aireview https://github.com/org/repo/pull/42 https://redmine.example.com/issues/1234Prefer the full PR URL — it tells gh which repo the PR is in. A bare number (42) only
resolves when repo_path is the PR's repository.
→ git_pr_view → (agent reviews, + Redmine spec via the agent's redmine tools if given) → git_pr_comment
Boundaries: never approves or merges, never changes code without approval.
Tools reference
All tools return JSON. Each accepts an optional repo_path (defaults to the server's working
directory) unless noted.
Leantime
Tool | Params | Returns |
| — |
|
|
|
|
|
|
|
Git — read-only
Tool | Params | Returns |
|
|
|
|
|
|
|
|
|
|
|
|
Git — write
Tool | Params | Returns |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Slack
Tool | Params | Returns |
|
|
|
|
|
|
@-mentions: Slack only pings by member id (<@U…>), not by display name. Set SLACK_USER_MAP
to map names → ids, then list reviewers in SLACK_PR_REVIEWERS (or pass mention per call).
here/channel work without any map.
Notes:
git_commitfails with an actionable message if nothing is staged.git_create_branchauto-derives the slug from the ticket headline whenslugis omitted.git_create_or_update_prpushesHEAD, detects an existing PR for the branch (edits it) or creates a new one, and appends the ticket markdown block whenticket_idis given.git_undo_last_commitis a soft reset — your changes stay staged, nothing is lost.
Troubleshooting
Symptom | Fix |
| Set |
| Run the agent from inside a git repo, or pass |
|
|
| Run |
| Expected — it builds once, then caches. Pin a tag to stabilise. |
Slash commands missing in Codex | Codex prompt support varies; just say "run aicommit" instead. |
Local development
git clone https://github.com/BenBen2109/ai-git-mcp
cd ai-git-mcp
npm install
npm run build # → dist/index.js
npm test # vitest
npm run dev # tsx watch (live reload)Local-path config (instead of npx):
{ "mcpServers": { "ai-git": {
"command": "node",
"args": ["/absolute/path/to/ai-git-mcp/dist/index.js"],
"env": { "LEANTIME_BASE_URL": "...", "LEANTIME_API_KEY": "...", "LEANTIME_USER_ID": "..." }
}}}Credits
Leantime client and ticket formatting (HTML/entity decoding, status labels, PR markdown block)
are ported from ai-git-fish by DucTam2411.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/khanhld2109/ai-git-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server