You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
docs(git): clarify unconfined default scope and repository confinement options in README and CLI #5230
In mcp-server-git, tools accept repo_path (e.g., git_status, git_diff, git_commit, etc.).
When --repository <path> is passed at startup, validate_repo_path() rejects any tool calls outside the allowed repository root.
However, when launched without--repository (such as in standard client configurations like uvx mcp-server-git), allowed_repository defaults to None. In this mode, validate_repo_path() is a no-op, allowing any tool call to access and mutate any reachable Git repository across the host filesystem under the running user's process privileges (as pinned by test_without_repository_any_repository_is_reachable under #4550).
While this multi-repository reach is an intentional architectural capability, it is not prominently communicated to users in either the CLI --help or README.md. Users configuring the server may assume it is scoped only to the workspace or current directory.
Prompt Used to Generate the Change:
In src/git, clarify that omitting --repository leaves the server in unconfined mode where all reachable repositories on the filesystem are accessible to tool calls.
1. In src/git/README.md, add an official GitHub alert (> [!WARNING]) under Configuration explaining that without --repository, every reachable Git repository is in scope, and describe how to confine operations via --repository <path>.
2. In src/git/src/mcp_server_git/__init__.py, update the Click option help text for --repository to: 'Git repository path to confine operations to. Without this option, every reachable repository is in scope.'
3. In src/git/src/mcp_server_git/server.py, update validate_repo_path's docstring to document the None behavior.
4. In src/git/tests/test_entrypoints.py, update test_main_help to assert that the confinement message is present in --help output.
Behavior Before vs. After:
Surface
Before
After
mcp-server-git --help
-r, --repository PATH Git repository path
-r, --repository PATH Git repository path to confine operations to. Without this option, every reachable repository is in scope.
src/git/README.md
Generic text mentioning --repository resolves to top-level
High-visibility GitHub alert > [!WARNING] detailing unconfined vs confined modes
server.py docstring
Did not mention allowed_repository=None
Explicitly states: "When allowed_repository is None, no restriction is configured and any reachable repository on the filesystem is permitted."
test_entrypoints.py
Tested presence of -r, --repository
Asserts confine operations to in output
Verification Steps:
Ran python -m pytest tests/test_entrypoints.py -k test_main_help ➡️ PASSED
Activity