MCP, MCP server
Git Mcp Server
@cyanheads/git-mcp-server A Git MCP server for AI agents.
Compatibility: Not stated.
Grade D
Two or more Medium findings, or a High finding. Only try it in a sandbox.
Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.
Rescanned at commit d34d83af201d, unchanged since the check below.
INSTALL_LIFECYCLE_HOOK SECRETS_PATH_CREDENTIAL
Why this grade
- INSTALL_LIFECYCLE_HOOK Medium
A package install hook (preinstall, install, postinstall or prepare) runs a script.
package.json, line 53
prepare - SECRETS_PATH_CREDENTIAL Medium
Mentions a credential store path (~/.ssh, id_rsa, .npmrc, .aws/credentials, credentials.json, .netrc).
scripts/devcheck.ts, line 315
getCommand: () => ['git', 'ls-files', '*.env*', '.npmrc', '.netrc'],
Any High, or two or more Medium findings, give D. One Medium gives C. Low findings or a security Note give B. Each code names a finding behind the letter.
Grades are a hygiene check of the source at the commit shown, on the date checked, not a security audit or a guarantee. The free directory grades are automated. Before release, a PlugVet engineer reviews every paid report and any grade we hold back, including all F grades, against the source code and the evidence we quote.
What was checked
Plain notes from the hygiene checks.
Permissions
Note
requests shell access. The manifest names this permission.
PERMISSION_SHELL_DECLARED
src/services/git/providers/cli/utils/command-builder.ts, line 245
* Process spawning uses array arguments (`Bun.spawn` / `child_process.spawn`),
src/services/git/providers/cli/utils/git-executor.ts, line 7
* (Node.js), it uses child_process.spawn. When running in native Bun,
src/services/git/providers/cli/utils/git-executor.ts, line 36
* - In Node.js runtime (bunx): Uses child_process.spawn for compatibility
Show more
src/services/git/providers/cli/utils/runtime-adapter.ts, line 230
* Spawns a git command using Node.js child_process.spawn.
CHANGELOG.md, line 635
- **Windows Git Executable Resolution**: Fixed `ENOENT` error when spawning git commands on Windows. Node.js `child_process.spawn()` doesn't search PATH like cmd.exe does. Replaced
CHANGELOG.md, line 882
- **Cross-Runtime Compatibility**: The server now officially supports both **Bun** and **Node.js** runtimes. A new runtime detection mechanism (`src/utils/internal/runtime.ts`) and
CHANGELOG.md, line 1300
- Patched a command injection vulnerability where unsanitized user input could be passed to `child_process.exec`. All `exec` calls have been replaced with the safer `execFile` meth
Install and update
Concern
runs a script at install time. dependencies are not pinned.
INSTALL_LIFECYCLE_HOOK INSTALL_UNPINNED
package.json, line 53
prepare
package.json, line 79
cross-spawn
Network
Concern
can reach a host that is not written as a fixed address.
NETWORK_NO_FIXED_HOST
scripts/validate-mcp-publish-schema.ts, line 101
const response = await axios.get(searchUrl);
scripts/validate-mcp-publish-schema.ts, line 197
const { data: schema } = await axios.get(MCP_SCHEMA_URL);
skills/field-test/SKILL.md, line 67
curl -sS -D "$hdr" -X POST "$MCP_URL" \
Show more
skills/field-test/SKILL.md, line 80
curl -sS -X POST "$MCP_URL" \
skills/field-test/SKILL.md, line 99
curl -sS -X POST "$MCP_URL" \
src/worker.ts, line 237
async fetch(
src/worker.ts, line 274
return await app.fetch(request, env, ctx);
src/mcp-server/tools/definitions/git-fetch.tool.ts, line 82
const result = await provider.fetch(fetchOptions, {
Secrets
Concern
reads a credential or environment file.
SECRETS_PATH_CREDENTIAL SECRETS_PATH_DOTENV
scripts/devcheck.ts, line 315
getCommand: () => ['git', 'ls-files', '*.env*', '.npmrc', '.netrc'],
scripts/devcheck.ts, line 316
// Success if output is empty OR only contains '.env.example'.
scripts/devcheck.ts, line 321
if (files.length === 1 && files[0] === '.env.example') return true;
Show more
.dockerignore, line 161
# =============================================================================
.dockerignore, line 162
.env
.dockerignore, line 163
.env.local
.dockerignore, line 164
.env.development.local
.dockerignore, line 165
.env.test.local
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Pass
No encoded or minified payload found.
Licence
Pass
A licence file is present (LICENSE).
Maintainer activity
Pass
The latest commit is within the last 365 days.
Note
Hygiene check of commit d34d83af201d. requests shell access. The manifest names this permission. runs a script at install time. dependencies are not pinned. can reach a host that is not written as a fixed address. reads a credential or environment file.
Date and source
Date checked:
github.com
Commit graded: d34d83af201dc0c9012ca501336c3df6171da932
This link goes to the original host. PlugVet does not host or check what you download from there, and installing it is your own decision and risk.