giteasy
Plain-English git via MCP: 22 tools to branch, commit, push, and tag. No git jargon.
Should I use this
Quality & Safety
Findings (5)
- LOWin restore_file
- LOWin set_ssh
- LOWin save_work
- LOWin get_vault_status
- LOWin switch_work
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"giteasy": {
"url": "https://giteasy-mcp.azurewebsites.net/mcp"
}
}
}Remote endpoints
https://giteasy-mcp.azurewebsites.net/mcpstreamable-httpWhat it can do
Tool inventory
Tools (22)
🟡push(workingDirectory, remoteName)
Send already-committed work to the remote without making a new commit. Pushes the current branch; on a branch's first push, sets the remote branch as its upstream automatically.
Input Schema
{
"type": "object",
"properties": {
"workingDirectory": {
"description": "Git repo path. Default current directory.",
"type": "string",
"default": "."
},
"remoteName": {
"description": "Remote name. Default origin.",
"type": "string",
"default": "origin"
}
}
}🟢show_diagnostic(workingDirectory)
Show git repository diagnostic info: current branch, upstream, HEAD SHA, remote URLs, and status summary.
Input Schema
{
"type": "object",
"properties": {
"workingDirectory": {
"description": "Git repo path. Default current directory.",
"type": "string",
"default": "."
}
}
}🟡set_vault(workingDirectory, vaultPath)
Configure the git credential helper to use a specific vault path. Returns new credential helper value.
Input Schema
{
"type": "object",
"properties": {
"workingDirectory": {
"description": "Git repo path. Default current directory.",
"type": "string",
"default": "."
},
"vaultPath": {
"description": "Path to the credential helper vault executable.",
"type": "string",
"default": ""
}
}
}⚪restore_file(workingDirectory, filePath)
Restore a single file to its HEAD state, discarding uncommitted changes. Returns restored file path.
Input Schema
{
"type": "object",
"properties": {
"workingDirectory": {
"description": "Git repo path. Default current directory.",
"type": "string",
"default": "."
},
"filePath": {
"description": "Repo-relative path to the file to restore.",
"type": "string",
"default": ""
}
}
}🔴reset_login(workingDirectory)
Clear stored git credentials by unsetting the credential helper in local git config. Returns confirmation.
Input Schema
{
"type": "object",
"properties": {
"workingDirectory": {
"description": "Git repo path. Default current directory.",
"type": "string",
"default": "."
}
}
}🟡set_ssh(workingDirectory, remoteName, sshUrl)
Change a remote URL to its SSH equivalent. Returns old and new remote URLs.
Input Schema
{
"type": "object",
"properties": {
"workingDirectory": {
"description": "Git repo path. Default current directory.",
"type": "string",
"default": "."
},
"remoteName": {
"description": "Remote name to update. Default origin.",
"type": "string",
"default": "origin"
},
"sshUrl": {
"description": "New SSH remote URL, e.g. [email protected]:owner/repo.git.",
"type": "string",
"default": ""
}
}
}🟡save_work(workingDirectory, message, pushToRemote, files)
Stage changes, commit with a message, and optionally push to remote. Returns commit SHA and push result.
Input Schema
{
"type": "object",
"properties": {
"workingDirectory": {
"description": "Git repo path. Default current directory.",
"type": "string",
"default": "."
},
"message": {
"description": "Commit message.",
"type": "string",
"default": ""
},
"pushToRemote": {
"description": "Push to remote after commit. Default false.",
"type": "boolean",
"default": false
},
"files": {
"description": "Files to commit. Default empty (commits all changes).",
"type": [
"array",
"null"
],
"items": {
"type": [
"string",
"null"
]
},
"default": null
}
}
}🟢get_vault_status(workingDirectory)
Report current git credential helper configuration. Returns helper name and scope.
Input Schema
{
"type": "object",
"properties": {
"workingDirectory": {
"description": "Git repo path. Default current directory.",
"type": "string",
"default": "."
}
}
}⚪test_login(workingDirectory, remoteName)
Test whether git credentials are working by attempting ls-remote against the origin. Returns success/failure and remote refs count.
Input Schema
{
"type": "object",
"properties": {
"workingDirectory": {
"description": "Git repo path. Default current directory.",
"type": "string",
"default": "."
},
"remoteName": {
"description": "Remote to test. Default origin.",
"type": "string",
"default": "origin"
}
}
}🟢show_releases(workingDirectory)
List all tags/releases in the repository, newest first. Returns tag names, target SHAs, and annotation messages.
Input Schema
{
"type": "object",
"properties": {
"workingDirectory": {
"description": "Git repo path. Default current directory.",
"type": "string",
"default": "."
}
}
}🟡show_change(workingDirectory, filePath, staged)
Show the diff for a specific file or all changed files. Returns unified diff text.
Input Schema
{
"type": "object",
"properties": {
"workingDirectory": {
"description": "Git repo path. Default current directory.",
"type": "string",
"default": "."
},
"filePath": {
"description": "Repo-relative file path. If empty, shows all.",
"type": "string",
"default": ""
},
"staged": {
"description": "Show staged diff. Default false.",
"type": "boolean",
"default": false
}
}
}🟡new_release(workingDirectory, tagName, message, remoteName)
Create an annotated git tag and push it to the remote. Returns the tag name and target commit SHA.
Input Schema
{
"type": "object",
"properties": {
"workingDirectory": {
"description": "Git repo path. Default current directory.",
"type": "string",
"default": "."
},
"tagName": {
"description": "Tag name, e.g. v1.2.0.",
"type": "string",
"default": ""
},
"message": {
"description": "Annotation message for the tag.",
"type": "string",
"default": ""
},
"remoteName": {
"description": "Remote to push to. Default origin.",
"type": "string",
"default": "origin"
}
}
}🟢find_changes(workingDirectory)
List changed files: staged, unstaged, and untracked. Returns file counts and paths by status group.
Input Schema
{
"type": "object",
"properties": {
"workingDirectory": {
"description": "Git repo path. Default current directory.",
"type": "string",
"default": "."
}
}
}🟢show_remote(workingDirectory)
Show all remote names and their fetch/push URLs. Returns list of remotes with URL and type.
Input Schema
{
"type": "object",
"properties": {
"workingDirectory": {
"description": "Git repo path. Default current directory.",
"type": "string",
"default": "."
}
}
}🟢get_updates(workingDirectory, remoteName)
Fetch from remote and show incoming commits not yet in local branch. Returns count and commit summaries.
Input Schema
{
"type": "object",
"properties": {
"workingDirectory": {
"description": "Git repo path. Default current directory.",
"type": "string",
"default": "."
},
"remoteName": {
"description": "Remote name. Default origin.",
"type": "string",
"default": "origin"
}
}
}🟢undo_changes(workingDirectory, filePath)
Discard uncommitted changes. If filePath given, restores that file; otherwise restores all tracked files. Returns list of restored paths.
Input Schema
{
"type": "object",
"properties": {
"workingDirectory": {
"description": "Git repo path. Default current directory.",
"type": "string",
"default": "."
},
"filePath": {
"description": "Repo-relative file path to undo. If empty, undoes all tracked changes.",
"type": "string",
"default": ""
}
}
}⚪switch_work(workingDirectory, branchName)
Switch to an existing branch. Returns the branch switched to and current HEAD SHA.
Input Schema
{
"type": "object",
"properties": {
"workingDirectory": {
"description": "Git repo path. Default current directory.",
"type": "string",
"default": "."
},
"branchName": {
"description": "Name of the branch to switch to.",
"type": "string",
"default": ""
}
}
}🟢search_history(workingDirectory, searchTerm, limit)
Search commit history for commits whose message matches a search term. Returns matching commits with SHA, author, date, and message.
Input Schema
{
"type": "object",
"properties": {
"workingDirectory": {
"description": "Git repo path. Default current directory.",
"type": "string",
"default": "."
},
"searchTerm": {
"description": "Text to search for in commit messages.",
"type": "string",
"default": ""
},
"limit": {
"description": "Max commits to return. Default 20.",
"type": "integer",
"default": 20
}
}
}🟢show_history(workingDirectory, limit, branchName)
Show recent commit history. Returns commits with SHA, author, date, and message.
Input Schema
{
"type": "object",
"properties": {
"workingDirectory": {
"description": "Git repo path. Default current directory.",
"type": "string",
"default": "."
},
"limit": {
"description": "Number of commits to return. Default 20.",
"type": "integer",
"default": 20
},
"branchName": {
"description": "Branch name. Default current branch.",
"type": "string",
"default": ""
}
}
}🟡new_work_branch(workingDirectory, branchName)
Create a new branch from current HEAD and switch to it. Returns branch name and base commit SHA.
Input Schema
{
"type": "object",
"properties": {
"workingDirectory": {
"description": "Git repo path. Default current directory.",
"type": "string",
"default": "."
},
"branchName": {
"description": "Name of the new branch.",
"type": "string",
"default": ""
}
}
}🟡set_token(workingDirectory, token)
Store a personal access token for HTTP git authentication. Returns confirmation (token value is never echoed).
Input Schema
{
"type": "object",
"properties": {
"workingDirectory": {
"description": "Git repo path. Default current directory.",
"type": "string",
"default": "."
},
"token": {
"description": "Personal access token to store.",
"type": "string",
"default": ""
}
}
}🔴clear_junk(workingDirectory)
Remove untracked files and directories from the working tree (git clean -fd). Returns list of removed paths.
Input Schema
{
"type": "object",
"properties": {
"workingDirectory": {
"description": "Git repo path. Default current directory.",
"type": "string",
"default": "."
}
}
}Community
Evidence