Skills/PyPI/jcodemunch-mcp

jcodemunch-mcp@1.108.430

VERIFIED· not started

Publisher claims: "MCP server that gives AI coding agents the exact function or class they asked for, not the whole file. Runs on your machine, 70+ languages. Free for non-commercial use; commercial use needs a one-time license." Observed in sandbox: no network, touches nothing outside the project, writes no memory.

Registry PyPI (MCP server)Publisher jgravelle · publishing for 257 daysInstalls 29,414Last detonated 5d ago
$claude mcp add jcodemunch-mcp -- uvx jcodemunch-mcp
WatchReport an issue

Coverage

Not started: dependency install failed; the server itself was not observed.
Tested
the dependency install step · every file read, file written and host contacted by what ran
Not tested
server startup · the tool list · tool behavior

What this means for the label: Verified here covers what ran. The server's tools were not exercised with a real credential, so nothing about their behavior is asserted; the credential summary below says what to do with that.

Before you give it your token

It will ask for
GH_TOKENGITHUB_TOKENGROQ_API_KEYJCODEMUNCH_HTTP_TOKENJCODEMUNCH_LICENSE_KEYJCODEMUNCH_REDACT_RESPONSE_SECRETSConfiguration, not credentials: CODE_INDEX_PATH, GITHUB_REPOSITORY, GITHUB_RUN_ID, JCODEMUNCH_ALLOW_PAID_SUMMARIES, JCODEMUNCH_CLIENT_ID, JCODEMUNCH_ENFORCE, JCODEMUNCH_HEARTBEAT_SECONDS, JCODEMUNCH_NO_VERSION_HINT, JCODEMUNCH_ORG_ENDPOINT, JCODEMUNCH_ORG_ID, JCODEMUNCH_SUMMARIZER_PROVIDER, JCODEMUNCH_TOOL_SURFACE, OPENAI_API_BASE, PIPX_HOME, PYTHONIOENCODING, WATCHFILES_FORCE_POLLING
Where it talks to
jcodemunch.com (its own)Also bford.info, groq.com, ffmpeg.org, gravelle.us — not the publisher's domain; check what for before connecting.
What the honeypot saw
no credential files read · no network
What we could not test
server startup · the tool list · tool behavior

Connect it with a scoped credential, under the guard, and read the third-party hosts first. The code names bford.info, groq.com, ffmpeg.org, gravelle.us as well as its own vendor. The guard injects GH_TOKEN, GITHUB_TOKEN, GROQ_API_KEY, JCODEMUNCH_HTTP_TOKEN, JCODEMUNCH_LICENSE_KEY, JCODEMUNCH_REDACT_RESPONSE_SECRETS only into requests to jcodemunch.com (and its subdomains) and refuses the rest.

$vet-skills run --secrets GH_TOKEN=jcodemunch.com,GITHUB_TOKEN=jcodemunch.com,GROQ_API_KEY=jcodemunch.com,JCODEMUNCH_HTTP_TOKEN=jcodemunch.com,JCODEMUNCH_LICENSE_KEY=jcodemunch.com,JCODEMUNCH_REDACT_RESPONSE_SECRETS=jcodemunch.com -- uvx jcodemunch-mcp

Never paste a credential into a chat, a ticket or a report, including ours. How the guard holds it.

Is [email protected] safe to install?

KillerSkills ran it in the KillerSkills honeypot sandbox (2 scenarios; not started: dependency install failed; the server itself was not observed) on 2026-11-09 and scored it 83/100 (Verified). In what ran, nothing we could detect went wrong: no undeclared network egress, no credential reads, no persistent instruction writes. What it does with a real credential was not observed; the static findings and the publisher carry the rest of the score. Summary: no network, touches nothing outside the project, writes no memory.

Behavior trace

Honeypot run · 0 s · 2 scenarios · 0 deviations
t+CategoryObserved action
0.0sprocessno install scripts in bundle
0.1sprocessdependency install exit 1 ·
0.1sclaimednot started: dependency install failed (exit 1); the server itself was not observed
0.1sprocessscript backend runs setup only
0.1sprocessno install scripts to re-run

Static findings

MEDIUM
Python subprocess execution detectedscripts/gap_ledgers.py:425 · Python subprocess execution detectedout = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedscripts/surface_diff.py:88 · Python subprocess execution detectedreturn subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedscripts/open_regression_issue.py:34 · Python subprocess execution detectedp = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedscripts/dod_changelog.py:25 · Python subprocess execution detectedreturn subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedsrc/jcodemunch_mcp/cli/git_hook.py:46 · Python subprocess execution detectedout = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedscripts/surface_diff.py:74 · Python subprocess execution detectedsubprocess.run(["git", "worktree", "remove", "--force", str(wt)], cwd=REPO)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
File type combined with upload actionscripts/pr_bench_comment.py:4 · File type combined with upload action — agent may exfiltrate local data files--benchmark BENCH.json --pr N [--post] [--summary FILE]`Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07
MEDIUM
Python subprocess execution detectedscripts/pr_bench_comment.py:31 · Python subprocess execution detectedp = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
HIGH
Access to sensitive file pathssrc/jcodemunch_mcp/security.py:116 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesPrevents path traversal attacks (e.g., ../../etc/passwd) andFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
Python subprocess execution detectedscripts/surface_diff.py:66 · Python subprocess execution detectedsubprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedscripts/pr_bench_comment.py:218 · Python subprocess execution detectedexisting = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
HIGH
Access to sensitive file pathssrc/jcodemunch_mcp/security.py:254 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesflagged; an actual credential file (``.env``, ``*.pem``, ``secrets/db.yaml``,Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
Python subprocess execution detectedscripts/surface_diff.py:78 · Python subprocess execution detectedout = subprocess.check_output(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedscripts/pr_bench_comment.py:233 · Python subprocess execution detectedsubprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedscripts/pr_bench_comment.py:250 · Python subprocess execution detectedsubprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
File permission modification commandsrc/jcodemunch_mcp/cli/git_hook.py:155 · File permission modification command — agent changes file ownership/permissionslogger.debug("chmod failed for %s", path, exc_info=True)Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.
AST05
MEDIUM
Python subprocess execution detectedscripts/release_preflight.py:70 · Python subprocess execution detectedp = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedscripts/surface_diff.py:47 · Python subprocess execution detectedp = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedsrc/jcodemunch_mcp/cli/init.py:559 · Python subprocess execution detectedresult = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedscripts/pr_bench_comment.py:284 · Python subprocess execution detectedhead = subprocess.check_output(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
File type combined with upload actionsrc/jcodemunch_mcp/cli/init.py:1067 · File type combined with upload action — agent may exfiltrate local data fileshooks.json already exists, the postToolUse rule is appended only ifFix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07
MEDIUM
Python subprocess execution detectedsrc/jcodemunch_mcp/cli/init.py:1907 · Python subprocess execution detectedresult = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedsrc/jcodemunch_mcp/hook_event.py:158 · Python subprocess execution detectedresult = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedsrc/jcodemunch_mcp/hook_event.py:144 · Python subprocess execution detectedresult = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedsrc/jcodemunch_mcp/tools/digest.py:74 · Python subprocess execution detectedr = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedsrc/jcodemunch_mcp/watch_scope.py:120 · Python subprocess execution detectedout = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
LOW
Instructs the agent to modify its persistent memory or instruction filessrc/jcodemunch_mcp/cli/init.py:698 · Instructs the agent to modify its persistent memory or instruction files · informational: not an instruction file"""Append the Code Exploration Policy to CLAUDE.md.Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.
AST01
MEDIUM
File type combined with upload actionsrc/jcodemunch_mcp/cli/init.py:1046 · File type combined with upload action — agent may exfiltrate local data files"""Whether a Copilot hooks.json rule is OUR postToolUse rule.Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07
MEDIUM
File type combined with upload actionsrc/jcodemunch_mcp/cli/init.py:1733 · File type combined with upload action — agent may exfiltrate local data files"Write .github/hooks/hooks.json with a jcodemunch postToolUse rule",Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07
MEDIUM
Process kill commandsrc/jcodemunch_mcp/watcher.py:273 · Process kill command — agent can terminate processes"""Base exception for watcher errors that should not kill the embedding process."""Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
Python subprocess execution detectedsrc/jcodemunch_mcp/cli/upgrade.py:161 · Python subprocess execution detectedr = subprocess.run(pip_args, check=False)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedsrc/jcodemunch_mcp/cli/init.py:2568 · Python subprocess execution detectedresult = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Process kill commandsrc/jcodemunch_mcp/progress.py:218 · Process kill command — agent can terminate processesidle timeout killed it and the kill read as a crash.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
Python subprocess execution detectedsrc/jcodemunch_mcp/watcher.py:1812 · Python subprocess execution detectedresult = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedsrc/jcodemunch_mcp/groq/explainer.py:369 · Python subprocess execution detectedresult = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
LOW
Instructs the agent to modify its persistent memory or instruction filessrc/jcodemunch_mcp/cli/init.py:814 · Instructs the agent to modify its persistent memory or instruction files · informational: not an instruction file"""Write ./AGENTS.md with the plan_turn(model=...) directive.Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.
AST01
MEDIUM
Python subprocess execution detectedsrc/jcodemunch_mcp/cli/upgrade.py:110 · Python subprocess execution detectedr = subprocess.run(init_cmd, check=False, env=dict(os.environ, **{UPGRADE_REFRESH_ENV: "1"}))Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedsrc/jcodemunch_mcp/hook_event.py:55 · Python subprocess execution detectedresult = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Process kill commandsrc/jcodemunch_mcp/parent_watch.py:136 · Process kill command — agent can terminate processesanswer would kill a live client's server."""Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
File type combined with upload actionsrc/jcodemunch_mcp/surface_offer.py:74 · File type combined with upload action — agent may exfiltrate local data files``benchmarks/schema_baseline.json`` -- compute, never quote.Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07
MEDIUM
Python subprocess execution detectedsrc/jcodemunch_mcp/windowless.py:157 · Python subprocess execution detectedproc = subprocess.Popen(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedsrc/jcodemunch_mcp/hook_event.py:170 · Python subprocess execution detectedsubprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05

Cost to the agent

Instructions loaded
≈92 tok
1 file · 81 in bundle
Tool list per prompt
≈0 tok
0 tools · 0 per tool
Handshake
no reply
launch to tools/list, stdio
Undocumented tools
0
description under 20 chars · avg 0

Tokens estimated at four characters each. The tool list is re-read by the agent on every turn, so it is the number to compare between servers that do the same job: ranked across the index.

Known vulnerabilities

No advisories in OSV for jcodemunch-mcp@1.108.430 as of 5d ago. This is the package itself, not its dependencies.

jcodemunch-mcp@1.108.430 safety verdict: Verified (not started) — KillerSkills