Atlas / MCP servers / kuuvahki-labs / sandrone

sandroneBLOCK

mcp/kuuvahki-labs/sandrone

Self-hosted proxy configuration workbench for aggregating subscriptions, probing nodes, and generating Mihomo, sing-box, and Shadowrocket configs.

Verdict
BLOCK
Grade
D
Trust score
69 /100
Exposed tools
18 17r · 1w · 0d
Transport
streamable-http
License
AGPL-3.0
Stars
5
01

Overview

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

Sandrone 把零散订阅变成可维护、可验证、可分享的客户端配置。 A self-hosted proxy configuration workbench — from subscription sources to client-ready configs.

Sandrone 是一个可自托管的订阅与客户端配置工作台。在网页中组合和整理订阅, 选择配置模板,编辑代理组、规则集与分流规则,再生成、检查和分享 Mihomo、sing-box 或 Shadowrocket 配置。

也支持命令行、HTTP API 和 MCP,可通过 Go API 嵌入其他程序。

[](docs/screenshots/config-editor.png)

选择配置模板,编辑代理组的类型、成员与引用关系。

为什么是 Sandrone

把多个来源的订阅汇总、整理,再生成适合不同客户端的配置,日常维护集中在一处。

  • 聚合多个来源:远程订阅、本地节点和已有订阅可以自由组合,

按用途组织成不同的订阅,供手机、电脑等设备使用。

  • 节点整理省去手工操作:按需筛选、去重、统一名称和排序,也可以根据

探测结果保留或排列节点;保存整理规则后,每次生成都会沿用。

  • 开箱即用的完整配置:内置客户端模板和常用预设,提供分组、分流规则与

DNS 设置,帮助你从订阅生成客户端配置,减少从零编写的工作。

  • 通过界面维护客户端配置:选择内置模板,编辑代理组的类型与成员,管理

规则集来源,调整分流规则的匹配条件、目标策略和顺序。

  • 默认好用,也能灵活定制:通过基础配置编辑调整 DNS 等设置,按需组合或

移除预设;有更细的需求时,可以编辑原始配置或用脚本扩展节点与文件处理。

  • 结果可检查,配置易交付:预览节点处理前后的变化和最终配置,查看兼容性

提醒、测试节点可用性,再下载或生成分享链接,添加到对应客户端。

  • 日常管理与自动化兼顾:平时通过网页操作,也可设置定时刷新,或通过

命令行、API 和 MCP 接入自己的自动化流程,减少重复维护。

  • 轻量自托管:一个带 Web UI 的程序或容器即可部署,无需额外数据库,

订阅与配置保存在自己管理的存储中,

Read from source at commit 22b891927491OBSERVED · 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.

claude-code
claude mcp add web -- npx -y web
claude-desktop
{
  "mcpServers": {
    "web": {
      "command": "npx",
      "args": [
        "-y",
        "web"
      ]
    }
  }
}
03

Exposed tools (18)

17 read · 1 write · 0 destructive.

ToolRiskDescription
FullreadBroad social, media, gaming, cloud, finance, education, news, and shopping coverage.
MinimalreadCore selection, private, China, global, and final routing.
StandardreadCore routing plus frequently used and region-restricted services.
api.base64.decodereadDecode standard base64 into UTF-8 text.
api.base64.encodereadEncode UTF-8 text as standard base64.
api.file.contentreadRead the rendered content of an allowed named file through the service.
api.hash.sha256readHash UTF-8 text with SHA-256.
api.ini.overridewriteApply an ordered, lossless INI section override patch.
api.ini.parsereadParse INI into an ordered document that preserves duplicate sections and raw body lines.
api.ini.stringifyreadValidate and encode an ordered INI document using canonical section headers.
api.json.parsereadParse JSON into JavaScript data.
api.json.stringifyreadEncode JavaScript data as JSON.
api.logreadAppend diagnostic values to the script log sink.
api.probereadProbe a subset of the node-stage input through the service.
api.subscription.producereadProduce a named subscription through the service.
api.warnreadAppend a structured warning to the output envelope.
api.yaml.parsereadParse YAML into JSON-shaped data.
api.yaml.stringifyreadEncode JSON-shaped data as YAML.
04

Trust audit

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

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

What the source does

Filesystem
declared (2 observation(s))
Network
declared (7 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
found

Findings (21)

HIGHNetwork egress · net.tls_off · CWE-200, CWE-319
internal/processor/node/quick_settings.go:132
tlsCopy.InsecureSkipVerify = false
Why it matters. certificate verification is disabled
Fix. leave verification on
MEDIUMObfuscation / stealth · obf.homoglyph · CWE-506, CWE-94
web/app/features/files/drivers/sing-box/configuration.ts:460
"μs": 1e-6,
MEDIUMObfuscation / stealth · obf.homoglyph · CWE-506, CWE-94
web/app/features/files/drivers/sing-box/configuration.ts:467
const partPattern = /(\d+(?:\.\d*)?|\.\d+)(ns|us|μs|μs|ms|s|m|h|d)/gy;
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
internal/entry/httpapi/skill_script_test.go:273
const token = "do-not-leak-this-token"
MEDIUMAuth / authz · mcp.remote_no_auth · CWE-287, CWE-862
streamable-http
Why it matters. a network transport with no auth environment variable found
Fix. require a token
LOWInventory / provenance · inv.hidden_file · CWE-1104
.golangci.yml
.golangci.yml
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.node-version
.node-version
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
examples/scripts/wrap-sub-store.js:297
return eval(source + "\n;typeof main === 'function' ? main : undefined;");
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
internal/entry/httpapi/resources_test.go:266
script, err := os.ReadFile("../../../web/app/features/files/processors/scripts/sing-box-outbound-adapter.js")
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
internal/entry/httpapi/skill_contract_test.go:12
content, err := os.ReadFile("../../../skills/sandrone/agents/openai.yaml")
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
internal/entry/httpapi/skill_script_test.go:19
path, err := filepath.Abs("../../../skills/sandrone/scripts/sandrone-api.sh")
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
internal/tools/ruleset-catalog-gen/script_integration_test.go:62
repositoryRoot, err := filepath.Abs("../../..")
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
internal/tools/ruleset-catalog-gen/script_integration_test.go:103
repositoryRoot, err := filepath.Abs("../../..")
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
README.md:56
打开 <http://127.0.0.1:1137>。Compose 默认使用仅供本地试用的 bearer token
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
README.md:63
curl http://127.0.0.1:1137/version
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
docs/how-to/render-client-config.md:27
export SANDRONE_API="http://127.0.0.1:1137"
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
docs/how-to/troubleshoot-mihomo-fake-ip.md:33
"http://127.0.0.1:1137/v1/files/config.yaml?mode=source&response=json"
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
docs/how-to/troubleshoot-mihomo-fake-ip.md:67
"http://127.0.0.1:1137/v1/files/config.yaml" \
LOWObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
internal/adapter/uri/parser_test.go:55
nodes, source, err := p.Parse(context.Background(), []byte("vmess://eyJ2IjoiMiIsInBzIjoidm1lc3Mtd3MtdGxzIiwiYWRkIjoiZXhhbXBsZS5jb20iLCJwb3J0IjoiNDQzIiwiaWQiOiIxMTExMTExMS0xMTExLTExMTEtMTExMS0xMTExMTEx
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
web/package.json
@dnd-kit/core, @dnd-kit/sortable, @dnd-kit/utilities, @emotion/react, @emotion/styled, @mui/icons-material, @mui/material, isbot
Why it matters. 34 dependency range(s) float
Fix. pin exact versions or ship a lockfile
INFOInventory / provenance · inv.oversize · CWE-1104
docs/sandrone.png
docs/sandrone.png
Why it matters. 1609934 bytes not read

Gates applied: no_behavioural_pass.

Audited 2026-10-11 · audit v0.4.1 · source sha 22b891927491full audit observations/trust-audit/mcp-server/kuuvahki-labs__sandrone.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-1122b891927491BLOCKD69first audit
06

Questions

What is the sandrone MCP server?

Self-hosted proxy configuration workbench for aggregating subscriptions, probing nodes, and generating Mihomo, sing-box, and Shadowrocket configs.

What tools does sandrone expose?

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

Is sandrone safe to connect to an agent?

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

What credentials does sandrone need?

No credential environment variables were found in its source, so it appears to need none.

How does sandrone run?

It speaks streamable-http, so it runs as a service you connect to over the network. It is published on npm as web.

How current is this page?

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

Advertisement