loading…
Search for a command to run...
loading…
A Git-enforced filesystem MCP server that integrates git with filesystem operations, enforcing commits on writes, providing reads with history, and supporting s
A Git-enforced filesystem MCP server that integrates git with filesystem operations, enforcing commits on writes, providing reads with history, and supporting staged branching.
A Git-enforced filesystem MCP server that integrates git with filesystem operations, enforcing commits on writes, providing reads with history, and supporting staged branching.
uv venv && uv pip install -e .[dev]
pre-commit install
The fs-git MCP server can be run in two ways:
Option 1: Using the CLI command
# For Claude Desktop and MCP Inspector (stdio transport)
fs-git serve
# For development/testing (TCP transport)
fs-git serve --transport tcp --port 8080
Option 2: Using the direct MCP server command
# stdio mode (default, for Claude Desktop)
fs-git-mcp
# TCP mode for development
fs-git-mcp --transport tcp --port 8080
Option 3: Using uvx (no installation required)
# Run directly without installation
uvx fs-git-mcp
# Or with the CLI
uvx --from . fs-git serve
Add this to your Claude Desktop configuration (~/.claude/config.json):
{
"mcpServers": {
"fs-git": {
"command": "uvx",
"args": ["fs-git-mcp"]
}
}
}
Or if installed locally:
{
"mcpServers": {
"fs-git": {
"command": "fs-git-mcp"
}
}
}
# Install MCP Inspector
npm install -g @modelcontextprotocol/inspector
# Test the server
npx @modelcontextprotocol/inspector fs-git-mcp
The MCP server exposes these tool namespaces:
write_and_commit, read_with_history, start_staged, staged_write, staged_preview, finalize_staged, abort_stagedextract, answer_about_file replace_and_commitpreview_diffread_file, stat_file, list_dir, make_dirFS-Git supports configurable path authorization for security. You can restrict which paths can be accessed using CLI parameters or environment variables.
# Allow only specific paths
fs-git write --repo <root> --path src/utils.py \
--allow-paths "src/**,docs/**" \
--deny-paths "!src/secrets/**,!**/node_modules/**" \
--file - --subject "[{op}] {path} – {summary}" \
--op "add" --summary "utility functions" <<'EOF'
def helper():
return "utility"
EOF
Set path patterns via environment variables for global configuration:
# Set allowed paths (comma-separated)
export FS_GIT_ALLOWED_PATHS="src/**,docs/**,*.md"
# Set denied paths (comma-separated, with ! prefix)
export FS_GIT_DENIED_PATHS="!**/node_modules/**,!**/.git/**,!src/secrets/**"
# Now all fs-git commands will use these patterns
fs-git write --repo <root> --path src/app.py --file - --subject "Add app" <<'EOF'
print("Hello World")
EOF
src/**, docs/**/*.md, *.txtr".*\.py$", r".*\.js$"! (e.g., !**/node_modules/**)/etc/hosts, /usr/local/bin/src/, ./docs/Priority: CLI parameters override environment variables.
Initialize a repo:
fs-git init <repo_root>
Direct write:
fs-git write --repo <root> --path <p> --file <in> \
--subject "[{op}] {path} – {summary}" --op "edit" --summary "update"
Staged flow:
sid=$(fs-git staged start --repo <root> --ticket T-123)
fs-git staged write --session "$sid" --path <p> --file <in> --summary "..."
fs-git staged preview --session "$sid"
fs-git staged finalize --session "$sid" --strategy rebase-merge
Reader extract:
fs-git reader extract --repo <root> --path <p> --query "foo.*bar" --regex
Run the basic demo script:
make demo
Run the complete copy-paste demo that showcases all features:
# From the fs-git project root
bash repos/fs-git/scripts/comprehensive_demo.sh
This comprehensive demo includes:
make testmake fmt && make lintmake test-e2eSee ARCHITECTURE.md for module details.
See TOOLING.md for MCP schema and integrations.
mcp_server is in PYTHONPATH or installed with uv pip install -e .git config --global --add safe.directory <repo_root>FS_GIT_ALLOWED_PATHS and FS_GIT_DENIED_PATHS env vars or CLI flags.~/.fs_git_sessions. Clear if corrupted.fs-git serve for stdio mode with Inspector. For TCP, use --transport tcp.sys.executable to match your Python environment.server.log or stderr.git log --oneline -10 in repo.Run with debug:
FS_GIT_DEBUG=true fs-git serve --transport tcp
See CHANGELOG.md.
Выполни в терминале:
claude mcp add fs-git-mcp -- npx Безопасность
Низкий рискАвтоматическая эвристика по публичным данным — не гарантия безопасности.