simple mcp server for enabling agentic workflows with lm studio
git-mcp-server
A secure, git-aware MCP server for working with local repositories inside LM Studio (or any MCP host).
Features
- Full file access — read, write, edit, create, delete, move, search
- Shell execution — run commands in allowed directories with blocked dangerous patterns
- Complete git workflow — status, diff, log, branch, checkout, add, commit, push, pull, stash
- Path sandboxing — every operation is validated against your allowed directories; path traversal is blocked
- No network calls — inference stays local, this server never phones home
Prerequisites
- Node.js 18+
- npm
- git
Installation
# 1. Clone or copy this folder somewhere permanent
cd ~/tools
git clone <this-repo> git-mcp-server # or just copy the folder
# 2. Install dependencies
cd git-mcp-server
npm install
# 3. Build
npm run build
After build, the server binary is at dist/index.js.
Configure LM Studio
Open Developer tab → Install → Edit mcp.json in LM Studio and add:
{
"mcpServers": {
"git-mcp": {
"command": "node",
"args": [
"/absolute/path/to/git-mcp-server/dist/index.js",
"--allow-dir", "/path/to/your/repo"
]
}
}
}
Multiple repos
{
"mcpServers": {
"git-mcp": {
"command": "node",
"args": [
"/absolute/path/to/git-mcp-server/dist/index.js",
"--allow-dir", "/home/user/projects/repo-one",
"--allow-dir", "/home/user/projects/repo-two"
]
}
}
}
Using environment variable instead
{
"mcpServers": {
"git-mcp": {
"command": "node",
"args": ["/absolute/path/to/git-mcp-server/dist/index.js"],
"env": {
"ALLOWED_DIRS": "/home/user/projects/repo-one:/home/user/projects/repo-two"
}
}
}
}
On Windows use ; as the separator in ALLOWED_DIRS.
Security model
| Layer | What it does |
|---|---|
| Path sandboxing | Every file/shell operation resolves the absolute path and checks it starts with an allowed dir. Path traversal (../) is blocked. |
| Shell blocklist | rm -rf, sudo, mkfs, dd of=, curl \| sh, eval, and similar patterns are rejected before execution. |
| No root directories | You must explicitly list allowed dirs — there is no "allow everything" mode. |
| Delete is file-only | delete_file refuses to delete directories; use run_command for that explicitly. |
| LM Studio confirmation | LM Studio shows a confirmation dialog for every tool call, so you review before anything executes. |
Available tools
File tools
| Tool | Description |
|---|---|
| read_file | Read a single file |
| read_multiple_files | Read several files in one call |
| list_directory | List entries in a directory |
| directory_tree | Recursive tree view (depth-limited) |
| write_file | Write / overwrite a file |
| edit_file | Targeted search-and-replace (returns diff) |
| create_directory | Create directory with parents |
| delete_file | Delete a file (not directories) |
| move_file | Move or rename within allowed dirs |
| search_files | Regex search across a directory |
Shell
| Tool | Description |
|---|---|
| run_command | Run a shell command in an allowed directory |
Git
| Tool | Description |
|---|---|
| git_status | Working tree status |
| git_diff | Diff working tree, index, or refs |
| git_log | Commit history |
| git_branch | List, create, delete, rename branches |
| git_checkout | Switch branches / create new ones |
| git_add | Stage files |
| git_commit | Commit staged changes |
| git_push | Push to remote |
| git_pull | Pull from remote (merge or rebase) |
| git_stash | Save, pop, list, or drop stashes |
Example prompts
Once connected in LM Studio:
- "Show me the status of the repo at ~/projects/myapp"
- "List all branches and tell me which has the most recent commit"
- "Read src/index.ts and refactor the error handling"
- "Stage all modified files and commit with the message 'fix: handle null case'"
- "Search for all usages of
fetchUseracross the repo" - "Create a new branch called feature/auth and switch to it"
Recommended models for code work
Good tool-calling support is required. These work well locally:
- Qwen3 8B / 14B — excellent function calling, strong at code
- Llama 4 Scout — solid tool use, good multilingual support
- Mistral 7B Instruct — fast, reliable for single-tool workflows
Q4_K_M quantization is the recommended starting point.