Nexus Mcp Agent MCP Server

nexus-mcp-agent npm v2.0.1

Published by anomalyco — no publish provenance, so origin is unverified, but the source is public: the repository link below is self-declared yet readable, so you can inspect the code before adopting it.

Agentic OS MCP Server — 169 tools with on-demand loading (26 core), Streamable HTTP transport, background task engine, browser automation, TF-IDF semantic memory, multi-agent orchestration. Zero API keys.

Trust grade
B
80/100
Last scanned get badge →
Trust
B · 80/100
Adoption risk for you: the threat score, then adjusted down for blast radius, publisher verification and how much the scan could see. Deterministic; every point is auditable.
Capability
Critical
Blast radius if it went rogue — what the server’s tools could reach. Independent of trust.
Coverage
Source
How much the scan could actually inspect. Shallow coverage is stated, never hidden.
Share this Trust Score
𝕏 Share LinkedIn Reddit
B Why this grade threat 91 − adoption risk = 80/100

The grade answers one question — how safe is this server for you to adopt — so it is computed in two auditable stages. Nothing below is an opinion or an LLM's guess; every line is a real term the deterministic engine applied, and the same input always yields the same number.

1. Threat score — 100 − 9.5 = 91. What the published surface and source actually contain:

PointsWhat was foundCategory
−9.5 Untrusted input concatenated into a command sink ×2 MTC-SRC-009 injection

2. Client adoption risk — 91 − 11 = 80. Three small, subtract-only factors that reflect your risk in adopting it — a clean scan proves less on a powerful, unverified or barely-inspectable package, so the grade says so plainly:

PointsAdoption-risk factor
−10 capability blast radius (critical) — client exposure if the model is manipulated
−1 publisher verification (public source) — no provenance, but the source is public and inspectable

Capability observations and info notes are shown under Findings but never scored. Open any row's finding below for the file, line and evidence behind a deduction.

Findings 20

critical Completed toxic-flow trifecta across toolsMTC-FLOW-002

This server (without client built-ins) exposes a complete data-exfiltration chain: agent_catalog → cicd_get_logs → cmd_spawn. Untrusted input is ingested, private data is read, and it can be sent to an external sink via the agent composing the tools (→). Static analysis proves the primitive exists, not that a specific run will occur.

Fix: Remove one leg of the trifecta: isolate untrusted-input tools from secret-reading tools and from egress tools, or require human approval between them.

Location: flow agent_catalog → cicd_get_logs → cmd_spawn

high Tool "subagent_spawn" exposes command/code executionMTC-CAP-001

Tool "subagent_spawn" appears to run shell commands or evaluate code (keyword "spawn" in tool name). Arbitrary execution driven by model input is one of the most dangerous MCP capabilities; combined with any untrusted input it becomes RCE.

Fix: Sandbox execution, allowlist commands/arguments, and never pass model output to a shell unescaped.

Location: tool subagent_spawn

high Tool "cmd_spawn" exposes command/code executionMTC-CAP-001

Tool "cmd_spawn" appears to run shell commands or evaluate code (keyword "spawn" in tool name). Arbitrary execution driven by model input is one of the most dangerous MCP capabilities; combined with any untrusted input it becomes RCE.

Fix: Sandbox execution, allowlist commands/arguments, and never pass model output to a shell unescaped.

Location: tool cmd_spawn

high Dynamic code execution in server code (dist/tools/dev.js)MTC-SRC-001

In the server's implementation (`dist/tools/dev.js:107`): Evaluating strings as code is the most direct RCE primitive; if any tool input reaches it, the server executes attacker-chosen code. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: rch text="TODO|password|eval("', ' 4. Run reason_reflect on any failed checks and propose corrections',

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/tools/dev.js

high Shell/command execution in server code (dist/core/shell.js)MTC-SRC-002

In the server's implementation (`dist/core/shell.js:1`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: nSync, execSync } from 'child_process'; import { existsSync } from 'fs'; import { join } from 'path'; // Resolve the bes

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/core/shell.js

high Shell/command execution in server code (dist/tools/agent-loop.js)MTC-SRC-002

In the server's implementation (`dist/tools/agent-loop.js:2`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: port { execSync } from 'child_process'; import { readFile, readdir } from 'fs/promises'; import { existsSync } from 'fs'

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/tools/agent-loop.js

high Shell/command execution in server code (dist/tools/bg.js)MTC-SRC-002

In the server's implementation (`dist/tools/bg.js:2`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: import { spawn } from 'child_process'; import { join } from 'path'; import { getDataDir } from '../core/config.js'; imp

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/tools/bg.js

high Shell/command execution in server code (dist/tools/checkpoint.js)MTC-SRC-002

In the server's implementation (`dist/tools/checkpoint.js:2`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: port { execSync } from 'child_process'; function git(args, cwd) { const opts = { cwd: cwd || process.cwd(), encoding

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/tools/checkpoint.js

high Shell/command execution in server code (dist/tools/lint-fix.js)MTC-SRC-002

In the server's implementation (`dist/tools/lint-fix.js:2`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: port { execSync } from 'child_process'; import { readdir } from 'fs/promises'; import { existsSync } from 'fs'; import {

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/tools/lint-fix.js

high Shell/command execution in server code (dist/tools/project.js)MTC-SRC-002

In the server's implementation (`dist/tools/project.js:5`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: port { execSync } from 'child_process'; import { resolveSafePath } from '../core/safe-path.js'; import { logError } from

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/tools/project.js

high Shell/command execution in server code (dist/tools/sandbox.js)MTC-SRC-002

In the server's implementation (`dist/tools/sandbox.js:2`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: import { spawn } from 'child_process'; import { mkdtemp, writeFile, rm } from 'fs/promises'; import { tmpdir } from 'os

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/tools/sandbox.js

high Shell/command execution in server code (dist/tools/security.js)MTC-SRC-002

In the server's implementation (`dist/tools/security.js:23`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: te)' }, { pattern: /exec(?:Sync)?\s*\(/i, label: 'Command Execution' }, { pattern: /new\s+Function\s*\(/i, label

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/tools/security.js

high Shell/command execution in server code (dist/tools/terminal.js)MTC-SRC-002

In the server's implementation (`dist/tools/terminal.js:2`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: ; import { exec } from 'child_process'; import { promisify } from 'util'; import { resolve } from 'path'; import { parse

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/tools/terminal.js

high Shell/command execution in server code (dist/tools/testing/test-runner.js)MTC-SRC-002

In the server's implementation (`dist/tools/testing/test-runner.js:13`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: ; import { exec } from 'child_process'; import { promisify } from 'util'; const execAsync = promisify(exec); const FRAME

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/tools/testing/test-runner.js

medium Hardcoded egress to an external endpoint (dist/tools/web.js)MTC-SRC-003

In the server's implementation (`dist/tools/web.js:188`): A hardcoded outbound call to a fixed external host inside server code is a classic exfiltration/telemetry channel — especially paired with reads of local data. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: const res = await fetch('https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions', { me

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/tools/web.js

medium Untrusted input concatenated into a command sink (dist/core/shell.js)MTC-SRC-009

In the server's implementation (`dist/core/shell.js:135`): A shell/process command assembled from concatenated or interpolated values is command injection when any part is attacker-influenced — the OWASP canonical RCE flow. Verify what reaches the interpolated value. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: execSync(`taskkill /pid ${child.pid} /f /t 2>nul`, { stdio: 'ignore' });

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/core/shell.js

medium Untrusted input concatenated into a command sink (dist/tools/checkpoint.js)MTC-SRC-009

In the server's implementation (`dist/tools/checkpoint.js:6`): A shell/process command assembled from concatenated or interpolated values is command injection when any part is attacker-influenced — the OWASP canonical RCE flow. Verify what reaches the interpolated value. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: try { return execSync(`git ${args.join(' ')}`, opts).toString().trim(); } catch (e) { if (e.s

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/tools/checkpoint.js

medium Dynamic module load from a non-literal (dist/tools/automation.js)MTC-SRC-005

In the server's implementation (`dist/tools/automation.js:7`): Loading a module chosen at runtime (from a variable) can pull in and run attacker-influenced code paths. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: '; return await import(mod); } catch { const error = [ '❌ Playwright not installed.

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/tools/automation.js

low Mutating tool "subagent_spawn" declares no destructiveHintMTC-CAP-005

Tool "subagent_spawn" can mutate/egress but declares no destructiveHint. Clients that don't default to spec-safe behavior may not prompt before running it.

Fix: Declare accurate annotations, and gate destructive tools on user confirmation regardless.

Location: tool subagent_spawn

low Mutating tool "cmd_spawn" declares no destructiveHintMTC-CAP-005

Tool "cmd_spawn" can mutate/egress but declares no destructiveHint. Clients that don't default to spec-safe behavior may not prompt before running it.

Fix: Declare accurate annotations, and gate destructive tools on user confirmation regardless.

Location: tool cmd_spawn

Tools 197

Each tool and what it can reach — statically extracted from the published source.

  • agent_catalogingests untrusted input
  • browseingests untrusted input
  • browse_clickingests untrusted input
  • browse_screenshotingests untrusted input
  • browse_statusingests untrusted input
  • catalog_fetchingests untrusted input
  • cicd_get_logsreads sensitive data
  • cmd_spawnruns code / shell
  • subagent_spawnruns code / shell
  • web_fetchingests untrusted input
Show 187 more tools ↓
  • web_scrapeingests untrusted input
  • web_searchingests untrusted input
  • web_search_dashscopeingests untrusted input
  • agent_createno sensitive capability
  • agent_delegateno sensitive capability
  • agent_deleteno sensitive capability
  • agent_domainsno sensitive capability
  • agent_fanoutno sensitive capability
  • agent_hierarchicalno sensitive capability
  • agent_listno sensitive capability
  • agent_loadno sensitive capability
  • agent_loopno sensitive capability
  • agent_parallelno sensitive capability
  • agent_pipelineno sensitive capability
  • agent_searchno sensitive capability
  • autopilot_cancelno sensitive capability
  • autopilot_resumeno sensitive capability
  • autopilot_startno sensitive capability
  • autopilot_statusno sensitive capability
  • bg_agentno sensitive capability
  • bg_cancelno sensitive capability
  • bg_listno sensitive capability
  • bg_startno sensitive capability
  • bg_statusno sensitive capability
  • bg_streamno sensitive capability
  • browser_clickno sensitive capability
  • browser_devtools_statusno sensitive capability
  • browser_extractno sensitive capability
  • browser_inputno sensitive capability
  • browser_listno sensitive capability
  • browser_navigateno sensitive capability
  • browser_pw_extractno sensitive capability
  • browser_pw_navigateno sensitive capability
  • browser_pw_screenshotno sensitive capability
  • browser_pw_statusno sensitive capability
  • browser_screenshotno sensitive capability
  • browser_session_closeno sensitive capability
  • browser_session_openno sensitive capability
  • browser_skillsno sensitive capability
  • browser_stateno sensitive capability
  • browser_test_smokeno sensitive capability
  • catalog_searchno sensitive capability
  • catalog_statusno sensitive capability
  • chain_createno sensitive capability
  • chain_executeno sensitive capability
  • chain_listno sensitive capability
  • chain_statusno sensitive capability
  • chain_step_doneno sensitive capability
  • checkpoint_createno sensitive capability
  • checkpoint_diffno sensitive capability
  • checkpoint_dropno sensitive capability
  • checkpoint_listno sensitive capability
  • checkpoint_restoreno sensitive capability
  • cicd_cancel_runno sensitive capability
  • cicd_get_runno sensitive capability
  • cicd_list_runsno sensitive capability
  • cicd_list_workflowsno sensitive capability
  • cicd_rerunno sensitive capability
  • cicd_trigger_workflowno sensitive capability
  • cicd_usageno sensitive capability
  • cmd_executeno sensitive capability
  • context_restoreno sensitive capability
  • context_saveno sensitive capability
  • context_statusno sensitive capability
  • context_summarizeno sensitive capability
  • context_trimno sensitive capability
  • fs_deleteno sensitive capability
  • fs_editno sensitive capability
  • fs_edit_multino sensitive capability
  • fs_infono sensitive capability
  • fs_listno sensitive capability
  • fs_readno sensitive capability
  • fs_searchno sensitive capability
  • fs_writeno sensitive capability
  • git_addno sensitive capability
  • git_branchesno sensitive capability
  • git_checkoutno sensitive capability
  • git_cloneno sensitive capability
  • git_commitno sensitive capability
  • git_diffno sensitive capability
  • git_logno sensitive capability
  • git_pullno sensitive capability
  • git_pushno sensitive capability
  • git_statusno sensitive capability
  • github_contentno sensitive capability
  • github_issuesno sensitive capability
  • github_prno sensitive capability
  • github_searchno sensitive capability
  • knowledge_clearno sensitive capability
  • knowledge_import_webno sensitive capability
  • knowledge_ingestno sensitive capability
  • knowledge_ingest_dirno sensitive capability
  • knowledge_searchno sensitive capability
  • knowledge_statsno sensitive capability
  • lint_fixno sensitive capability
  • mcp_callno sensitive capability
  • mcp_connectno sensitive capability
  • mcp_disconnectno sensitive capability
  • mcp_proxy_statusno sensitive capability
  • mcp_serversno sensitive capability
  • mcp_toolsno sensitive capability
  • mem_deleteno sensitive capability
  • mem_listno sensitive capability
  • mem_recallno sensitive capability
  • mem_statsno sensitive capability
  • mem_storeno sensitive capability
  • memory_episodic_recallno sensitive capability
  • memory_episodic_statsno sensitive capability
  • memory_episodic_storeno sensitive capability
  • memory_kg_add_entityno sensitive capability
  • memory_kg_add_relationno sensitive capability
  • memory_kg_queryno sensitive capability
  • memory_kg_statsno sensitive capability
  • memory_procedural_executeno sensitive capability
  • memory_procedural_findno sensitive capability
  • memory_procedural_listno sensitive capability
  • memory_procedural_saveno sensitive capability
  • memory_semantic_deleteno sensitive capability
  • memory_semantic_listno sensitive capability
  • memory_semantic_rebuild_indexno sensitive capability
  • memory_semantic_searchno sensitive capability
  • memory_semantic_storeno sensitive capability
  • orch_agentsno sensitive capability
  • orch_routeno sensitive capability
  • project_analyzeno sensitive capability
  • project_packno sensitive capability
  • project_scaffoldno sensitive capability
  • project_scanno sensitive capability
  • project_set_contextno sensitive capability
  • project_suggestno sensitive capability
  • reason_planno sensitive capability
  • reason_reactno sensitive capability
  • reason_react_listno sensitive capability
  • reason_reflectno sensitive capability
  • reason_reflect_singleno sensitive capability
  • reason_tree_of_thoughtno sensitive capability
  • review_codeno sensitive capability
  • sandbox_nodeno sensitive capability
  • sandbox_pythonno sensitive capability
  • sandbox_runno sensitive capability
  • sandbox_statusno sensitive capability
  • scan_depsno sensitive capability
  • scan_injectionno sensitive capability
  • scan_secretsno sensitive capability
  • scheduleno sensitive capability
  • schedule_listno sensitive capability
  • session_auto_saveno sensitive capability
  • session_listno sensitive capability
  • session_restoreno sensitive capability
  • session_resumeno sensitive capability
  • session_saveno sensitive capability
  • skill_crystalizeno sensitive capability
  • skill_listno sensitive capability
  • skill_loadno sensitive capability
  • skill_saveno sensitive capability
  • skill_searchno sensitive capability
  • statusno sensitive capability
  • status_historyno sensitive capability
  • status_loop_checkno sensitive capability
  • status_summarizeno sensitive capability
  • subagent_completeno sensitive capability
  • subagent_domainsno sensitive capability
  • subagent_listno sensitive capability
  • subagent_logno sensitive capability
  • subagent_statusno sensitive capability
  • subagent_updateno sensitive capability
  • sys_echono sensitive capability
  • sys_envno sensitive capability
  • sys_healthno sensitive capability
  • sys_infono sensitive capability
  • task_checkpointno sensitive capability
  • task_listno sensitive capability
  • task_restoreno sensitive capability
  • task_startno sensitive capability
  • test_coverage_reportno sensitive capability
  • test_detectno sensitive capability
  • test_generateno sensitive capability
  • test_runno sensitive capability
  • tool_loadno sensitive capability
  • tool_searchno sensitive capability
  • url_extractno sensitive capability
  • vision_analyzeno sensitive capability
  • workflow_createno sensitive capability
  • workflow_executeno sensitive capability
  • workflow_listno sensitive capability
  • workflow_statusno sensitive capability
  • workflow_step_doneno sensitive capability

Toxic flows 1

Cross-tool combinations that form a data-exfiltration primitive (untrusted input → sensitive source → external sink).

What this scan could not see

Versions 4

Scan history per published version. The engine is deterministic — the same version always yields the same score, so a changed score means the package itself changed.

VersionScoreFindingsEngineScanned
v2.0.1 latest B 80/100 20 1.13.0 2026-09-07
v1.7.0 B 80/100 20 1.12.1 2026-08-06
v1.5.3 B 80/100 19 1.12.1 2026-08-05
v1.5.2 B 80/100 19 1.12.1 2026-08-03

Embed this score

Show this server's live Trust Score in your README, docs or website. The badge is served straight from the registry and updates automatically after every rescan — no API key needed. It links back to this page, so anyone who sees the grade can also read the findings behind it instead of taking a number on faith.

MCP Trust Score: B · 80/100
Markdown (GitHub README)
[![MCP Trust Score](https://mcptrustchecker.com/registry/nexus-mcp-agent/badge.svg)](https://mcptrustchecker.com/registry/nexus-mcp-agent)
HTML
<a href="https://mcptrustchecker.com/registry/nexus-mcp-agent"><img src="https://mcptrustchecker.com/registry/nexus-mcp-agent/badge.svg" alt="MCP Trust Score" height="20"></a>
Prefer shields.io styling? Point it at https://mcptrustchecker.com/registry/nexus-mcp-agent/badge.json via https://img.shields.io/endpoint?url=…

Verify this score yourself

The score above is reproducible: the same package version always yields the same result. Run it locally or over the free API — no account, no LLM, fully deterministic.

npx mcptrustchecker scan nexus-mcp-agent --online

Use the free API → How scoring works

More in AI & Agents