Atlas / MCP servers / plateerlab / xgen-dex-cli

xgen-dex-cliBLOCK

mcp/plateerlab/xgen-dex-core

XGEN Dex — 데스크톱 · CLI · VSCode 확장이 하나의 코어를 공유하는 저장소

Verdict
BLOCK
Grade
F
Trust score
58 /100
Exposed tools
10 10r · 0w · 0d
Transport
stdio · streamable-http
License
—
Stars
2
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

XGEN 에이전트를 쓰는 세 가지 방법.

앱데스크톱 CLI터미널 VS Code 확장편집기 사이드바

셋 다 같은 XGEN 서버에 붙고, 같은 계정·같은 에이전트를 봅니다. 로컬 도구(셸 · 파일 · MCP 서버)도 같은 것을 씁니다.

모든 파일은 **Releases** 에서 받습니다. 같은 태그의 셋은 함께 검증된 조합입니다.

앱 설치

Windows

XGen-Dex-Setup-.exe 를 실행합니다.

서명되지 않은 빌드라 SmartScreen 이 막을 수 있습니다 — 추가 정보 → 실행 을 누르면 됩니다.

macOS

XGen-Dex-.dmg 를 열고 XGen-Dex.app 을 응용 프로그램 으로 끕니다.

첫 실행은 아이콘을 우클릭 → 열기 로 해야 합니다(그냥 더블클릭하면 "확인되지 않은 개발자" 로 막힙니다). 그래도 "손상되었기 때문에 열 수 없습니다" 가 뜨면 터미널에서:

xattr -dr com.apple.quarantine "/Applications/XGen-Dex.app"

Linux

# deb (Ubuntu / Debian) — 권장. 앱 목록과 자동 업데이트가 함께 붙습니다.
sudo dpkg -i XGen-Dex-.deb
sudo apt-get -f install          # 의존성이 빠졌다는 말이 나오면

# AppImage — 설치 없이 실행
chmod +x XGen-Dex-.AppImage
./XGen
Read from source at commit 32bc59b92cb9OBSERVED · 2026-10-11
Advertisement
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add rpc --env ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} --env DEMO_TOKEN=${DEMO_TOKEN} --env DEX_NO_KEYCHAIN=${DEX_NO_KEYCHAIN} --env FAKE_TOKEN=${FAKE_TOKEN} -- npx -y @dex/[email protected]
claude-desktop
{
  "mcpServers": {
    "rpc": {
      "command": "npx",
      "args": [
        "-y",
        "@dex/[email protected]"
      ],
      "env": {
        "ANTHROPIC_API_KEY": "${ANTHROPIC_API_KEY}",
        "DEMO_TOKEN": "${DEMO_TOKEN}",
        "DEX_NO_KEYCHAIN": "${DEX_NO_KEYCHAIN}",
        "FAKE_TOKEN": "${FAKE_TOKEN}"
      }
    }
  }
}
03

Exposed tools (10)

10 read · 0 write · 0 destructive.

ToolRiskDescription
Locationread위치
Notifyread알림
boomreadAlways fails.
echoreadEcho the text back.
mcp_local_BrowserTabsread
read_filereadRead a document
search_filesreadFind a document
slowreadSleep, then answer.
web_searchreadSearch the web
wherereadWhere this server runs — its working folder, pid and one env value.
04

Trust audit

BLOCKgrade F · trust 58/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (11 observation(s))
Network
declared (6 observation(s))
Shell
declared (5 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (25)

CRITICALObfuscation / stealth · obf.decode_then_exec · CWE-506, CWE-94
apps/desktop/src/renderer/public/live2dcubismcore.min.js:9
atob( ... new function(
Why it matters. decodes a payload and executes it
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
packages/protocol/src/user-pc-shell.ts:410
exec(
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
MEDIUMInventory / provenance · inv.binary · CWE-1104
apps/cli/.DS_Store
.DS_Store
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
apps/mobile/android/app/debug.keystore
debug.keystore
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
apps/mobile/android/gradle/wrapper/gradle-wrapper.jar
gradle-wrapper.jar
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
apps/vscode/xgen-dex-vscode-0.1.0.vsix
xgen-dex-vscode-0.1.0.vsix
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
apps/desktop/src/main/tray-icon.ts:4
'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAE2UlEQVR4nO1XW2hUVxRda5+Zm5iYmWiiiVqf0YjWKD4KaYlCW7GFflX8sIhIP4q0UkFIobYkFOkjpT9S6IcUChYK7VehHy1qJfHVUgWrNgaiiSjFNpmkeTimytw5Z/fj5DYzSSaxFPoA98/l3tlz1jp
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
apps/desktop/verify/main.cjs:45
'iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAmElEQVR4nO3QMREAIBDAsBeGMEyjAWRkoEP2Xmevc382OkBrgA7QGqADtAboAK0BOkBrgA7QGqADtAboAK0BOkBrgA7QGqADtAboAK0BOkBrgA7QGqADtAboAK0BOkBrgA7QGqADtAboAK0BOkBrgA7
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
apps/xd/src/main/ide-service.ts:508
const bytes = new Uint8Array(Buffer.from((decoded.bom ? '' : '') + text, 'utf8'));
LOWInventory / provenance · inv.hidden_file · CWE-1104
apps/cli/.DS_Store
.DS_Store
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
apps/mobile/ios/.xcode.env
.xcode.env
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
apps/vscode/.vscodeignore
.vscodeignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
apps/vscode/test/ui-assets.test.ts:11
assert.doesNotThrow(() => new Function(script));
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
apps/vscode/test/ui-assets.test.ts:206
assert.doesNotThrow(() => new Function(script));
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
apps/desktop/src/main/folder-fs.ts:79
const sha1 = (bytes: Uint8Array): string => createHash('sha1').update(bytes).digest('hex');
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
apps/xd/engine/xd_engine/mcp_tools.py:33
return f"{prefix}{cleaned[:room]}_{hashlib.sha1(raw.encode('utf-8')).hexdigest()[:6]}"
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
apps/xd/src/main/mcp-config.ts:149
if (!base) base = `m${createHash('sha1').update(name).digest('hex').slice(0, 7)}`;
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
apps/xd/src/main/mcp-config.ts:165
let slug = (count.get(base) ?? 0) > 1 ? `${base.slice(0, 7).replace(/-+$/, '')}-${createHash('sha1').update(name).digest('hex').slice(0, 4)}` : base;
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
apps/cli/build.mjs:11
const pkg = (name) => resolve(here, '../../packages', name, 'src');
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
apps/desktop/electron.vite.config.ts:5
import { JUST_BASH_LEFT_OUT_PACKAGES } from '../../packages/engine/src/user-pc-bundle';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
apps/desktop/electron.vite.config.ts:16
'@dex/protocol': resolve(__dirname, '../../packages/protocol/src/index.ts'),
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
apps/desktop/electron.vite.config.ts:17
'@dex/engine': resolve(__dirname, '../../packages/engine/src/index.ts'),
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
apps/desktop/electron.vite.config.ts:18
'@dex/rpc': resolve(__dirname, '../../packages/rpc/src/index.ts'),
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
apps/cli/test/mock-xgen.ts:345
return { server, baseUrl: `http://127.0.0.1:${port}`, requests, conversations, agentNames, running, stopped };
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
apps/desktop/test/cdp-page-proxy.test.ts:67
const response = await fetch(`http://127.0.0.1:${port}/json/version`);

Gates applied: critical_finding, no_behavioural_pass.

Audited 2026-10-11 · audit v0.4.1 · source sha 32bc59b92cb9full audit observations/trust-audit/mcp-server/plateerlab__xgen-dex-core.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-1132bc59b92cb9BLOCKF58first audit
06

Questions

What is the xgen-dex-cli MCP server?

XGEN Dex — 데스크톱 · CLI · VSCode 확장이 하나의 코어를 공유하는 저장소

What tools does xgen-dex-cli expose?

10 in total: 10 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is xgen-dex-cli safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (58/100) and found 2 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does xgen-dex-cli need?

It reads ANTHROPIC_API_KEY, DEMO_TOKEN, DEX_NO_KEYCHAIN, FAKE_TOKEN, GITHUB_TOKEN and XD_MCP_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does xgen-dex-cli run?

It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as @dex/rpc at 1.90.0.

How current is this page?

The grade is for one exact copy of the source (32bc59b92cb9), read on 2026-10-11. The repository is watched and re-audited when it changes.

Advertisement