Skills/PyPI/nexus-mcp-ci

nexus-mcp-ci@2.4.5

VERIFIED· not started

Publisher claims: "Local MCP server for Claude Code, Codex and Cursor: hybrid code search and a call graph, so your coding agent finds the right file with far fewer tokens. Measure it on your repo with `nexus-mcp-ci eval`." Observed in sandbox: no network, touches nothing outside the project, writes no memory.

Registry PyPI (MCP server)Publisher jaggernaut007 · publishing for 246 daysInstalls 1,221Last detonated 6d ago
$claude mcp add nexus-mcp-ci -- uvx nexus-mcp-ci
WatchReport an issue

Coverage

Not started: dependency install failed; the server itself was not observed.
Tested
install scripts, with decoy credentials in place · second launch with the clock 45 days ahead · 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
ANTHROPIC_API_KEYConfiguration, not credentials: COLUMNS, HF_HOME, HF_HUB_OFFLINE, ISSUE_BODY, ISSUE_NUMBER, NEXUS_EVAL_CACHE, NEXUS_EVAL_HOME, NEXUS_EVAL_PRICING, NEXUS_OFFLINE, NEXUS_STORAGE_DIR, TRANSFORMERS_OFFLINE
Where it talks to
no vendor host named in the code
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. It asks for ANTHROPIC_API_KEY and talks to its vendor. Give the credential to the guard, not the server: the value never enters the server's environment and only travels to the host you bind. What the tools do with a real credential was not observed.

$vet-skills run --net declared -- uvx nexus-mcp-ci

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 (3 scenarios; not started: dependency install failed; the server itself was not observed) on 2026-11-08 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 · 1 s · 3 scenarios · 0 deviations
t+CategoryObserved action
0.3sprocessexited 1:
0.4sprocessdependency install exit 1 ·
0.4sclaimednot started: dependency install failed (exit 1); the server itself was not observed
0.5sprocessscript backend runs setup only
0.5sprocesssecond launch, clock +45 days, CI unset
0.7sprocessexited 1: ./setup.sh: line 130: .venv/bin/activate: No such file or directory

Static findings

HIGH
Access to sensitive file pathssrc/nexus_mcp/engines/live_grep.py:50 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files"""True for a path with a hidden part (`.env.py`, `.config/x.py`), as ripgrep skips."""Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
Python subprocess execution detectedsrc/nexus_mcp/evaluate/data_cmd.py:33 · Python subprocess execution detectedignored = subprocess.run(Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.
AST05
MEDIUM
Python subprocess execution detectedsrc/nexus_mcp/setup_clients.py:624 · Python subprocess execution detectedsubprocess.Popen(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedsrc/nexus_mcp/engines/live_grep.py:276 · Python subprocess execution detectedresult = subprocess.run(cmd, capture_output=True, text=True, 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/nexus_mcp/setup_clients.py:406 · 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 detectedsrc/nexus_mcp/engines/live_grep.py:68 · Python subprocess execution detectedproc = 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/nexus_mcp/evaluate/baseline.py:44 · Python subprocess execution detectedproc = subprocess.run(Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.
AST05
MEDIUM
Python subprocess execution detectedscripts/measure_memory.py:83 · 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 detectedsrc/nexus_mcp/engines/live_grep.py:324 · Python subprocess execution detectedresult = subprocess.run(cmd, capture_output=True, text=True, 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/nexus_mcp/engines/live_grep.py:127 · Python subprocess execution detectedproc = 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/archive_runs.py:50 · Python subprocess execution detectedproc = 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/nexus_mcp/setup_clients.py:503 · Instructs the agent to modify its persistent memory or instruction files · informational: not an instruction filef"add a marked nexus-mcp block to {project / 'AGENTS.md'}",Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.
AST01
MEDIUM
Python subprocess execution detectedsrc/nexus_mcp/evaluate/data_cmd.py:24 · Python subprocess execution detectedinside = subprocess.run(Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.
AST05
MEDIUM
Python subprocess execution detectedsrc/nexus_mcp/setup_clients.py:403 · Python subprocess execution detectedsubprocess.run(cmd, check=True, capture_output=True, text=True, timeout=60)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05

Cost to the agent

Instructions loaded
≈900 tok
2 files · 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 nexus-mcp-ci@2.4.5 as of 6d ago. This is the package itself, not its dependencies.