Atlas / MCP servers / aaronlou / effect-ts.cn

effect-ts.cnBLOCK

mcp/aaronlou/effect-ts-cn

Effect-TS 中文社区

Verdict
BLOCK
Grade
F
Trust score
50 /100
Exposed tools
12 11r · 1w · 0d
Transport
stdio
License
MIT
Stars
0
01

Overview

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

站点: —— Effect(TypeScript 的 effect system)官方文档全量中文翻译 (v4 + v3 共 234 页,每页标注上游基线)+ 可溯源的问答(每条引用可点回原文,无依据即拒答) + 报错百科(真实报错的检索索引)+ 26 个用 Effect 写的开源 AI 项目推荐。 给 AI / Agent 的入口:/llms.txt · /llms-full.txt · /docs/.md · /cite/.json(引用核验记录) · MCP server(仓库内 pnpm mcp)。

[](https://github.com/aaronlou/effect-ts.cn/actions/workflows/ci.yml) [](https://github.com/aaronlou/effect-ts.cn/actions/workflows/upstream-sync.yml) [](./LICENSE)

中文世界 Effect 的第一入口:官方文档的高质量中文译站 + 内容社区 + 由 Effect 与 DDD 自建的开源标本。

  • 产品与技术规划见 PLAN.md;译者规范见 docs/translation-guide.md;

上线步骤见 docs/deployment.md。

  • 站点当前状态:已具备公开发布条件 —— v3 + v4 全量 234 篇中文译文(v4 110 · v3 124,覆盖率 100%),

每篇 frontmatter 记录译者 / 审校 / 上游基线;搜索、RSS、llms.txt 全部为构建期产物,不依赖后端。

  • 审校口径:当前 234 篇的 reviewers 一律为 ecn-review,含义是机器可复核

(代码块与上游逐字节一致、结构对齐、术语 0 命中、锚点可达),非人类精读,尚无人类精读署名; 展示口径见 apps/site/src/data/provenance.ts,维护者精读抽查后请追加自己的名字。

快速开始

pnpm install

# 一条命令跑起前后端(Astro 前台 :4321 + Effect API :8787)
pnpm dev

# 可选:接入模型(不配也能完整运行 —— extractive 模式:检索合成 + 引用 + 拒答,零成本)
cp .env.example .env                      # 填 DEEPSEEK_API_KEY=sk-...(或 LLM_BASE_URL + LLM_API_KEY)
pnpm --filter @ecn/api llm:check          # 一条命令验证模型真的接上了(打印提供方/模型/超时)
# 查找顺序:apps/api/.env.local → apps/api/.env → 仓库根 .env.local → 仓库根 .env
# `pnpm dev` 会 watch 这几个文件:改完 Key 自动重启,不用手动重启

# 可选:本地 Postgres(默认 InMemory 模式不需要它)—— 在 .env 里设置 DATABASE_URL 后:
pnpm db:up                                # docker 起 Postgres;或用本机 postgres 亦可
  • 前台:(/api/* 已由 dev 代理到后端)
  • 后端:
  • `GET /api/heal
Read from source at commit e0558278a1d4OBSERVED · 2026-10-12
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 (npm)
claude mcp add effect-ts-cn-mcp -- npx -y [email protected]
03

Exposed tools (12)

11 read · 1 write · 0 destructive.

ToolRiskDescription
answer_with_evidenceread用本站中文文档回答问题:必须带可核验引用(citationId + citeUrl),没有依据就拒答。
askread就中文 Effect 文档提问。返回带引用的回答;若站内没有依据或该页尚未翻译,会明确拒答(citations 为空)。
citeread解析并核验一条引用:给出规范化引用 ID、可解引用地址(/cite/<digest>.json)、原文片段、内容指纹、上游基线与官方原文地址。用途:独立核对某条引用是否仍成立、是否已漂移 —— 不要凭记忆判断引用是否过期。
get_pagewrite取回某一页中文译文的完整 Markdown(含上游文件路径与基线 commit)。slug 形如 v4/getting-started/installation。
glossaryread返回社区术语表:哪些术语保留英文、以及 CI 门禁禁止的译法。
idread提案 id(.proposals/<id>.json)
questionread要问的问题
review_proposalread审阅一条提案:核对代码块逐字一致、术语、引用锚点,并给出可执行的修改意见。
search_docsread在 effect-ts.cn 的**中文** Effect 文档中做关键词检索,返回最相关的页面与小节(含官方原文链接)。未翻译的官方页面也会被列出。
slugread官方页面路径,如 v4/error-management/fallback
translate_pageread把某一页官方文档译成中文,并产出**可审阅的提案**(写入 .proposals/),而不是直接落盘发布。
translation_statusread查询某页或全部页面的翻译状态(已翻译/未翻译、上游基线、是否落后)。不传 slug 则返回总体统计。
04

Trust audit

BLOCKgrade F · trust 50/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)FAIL
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

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

Findings (25)

HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
scripts/traffic-prod.sh:19
KEY="${ECN_SSH_KEY:-$HOME/.ssh/ecn_deploy_ed25519}"
Why it matters. touches a credential store
HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
scripts/traffic-prod.sh:20
KNOWN_HOSTS="${ECN_SSH_KNOWN_HOSTS:-$HOME/.ssh/known_hosts}"
Why it matters. touches a credential store
HIGHHard-coded secrets · secret.db_uri · CWE-798, CWE-321
apps/api/Dockerfile:6
#   docker run --rm -p 8787:8787 -e DATABASE_URL='postgresql://effect:effect@db:5432/effect_ts_cn' ecn-api
HIGHHard-coded secrets · secret.db_uri · CWE-798, CWE-321
infra/docker-compose.yml:5
#   postgresql://effect:effect@localhost:5432/effect_ts_cn
HIGHPrompt injection · prompt.override · CWE-94, CWE-1427
docs/observatory/review-sample.md:135
| 86 | [DavidCarliez/trustmebro](https://github.com/DavidCarliez/trustmebro) | Go | 468 | uncertain | uncertain | 0.45 | metadata | not-scanned | Bypass llm guardrails by confusing it with fabricated
Why it matters. asks the agent to drop prior instructions or safety
Fix. remove the instruction
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
apps/api/scripts/llm-check.ts:59
console.log(`Key :已配置(${decision.config.apiKey.length} 字符,不显示内容)`)
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
.env.example:26
# LLM_BASE_URL=http://127.0.0.1:11434/v1
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
.github/workflows/ci.yml:222
ECN_TEST_DATABASE_URL: postgresql://effect:[email protected]:5432/effect_ts_cn_test
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
apps/api/migrations/README.md:31
ECN_TEST_DATABASE_URL='postgresql://effect:[email protected]:55432/effect_ts_cn_test' \
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
apps/api/src/bootstrap/main.ts:57
const MIGRATIONS_DIR = fileURLToPath(new URL("../../migrations", import.meta.url))
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
apps/api/src/contexts/assistant/application/use-cases/ask-question.ts:22
} from "../../../knowledge/domain/ports/knowledge-base"
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
apps/api/src/contexts/assistant/application/use-cases/explain-error.ts:19
import { KnowledgeBase, type KnowledgeBaseService } from "../../../knowledge/domain/ports/knowledge-base"
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
apps/api/src/contexts/assistant/infrastructure/glossary-live.ts:22
"../../../../../../../docs/glossary.json"
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
apps/api/src/contexts/assistant/infrastructure/glossary-live.ts:27
path.resolve(process.cwd(), "../../docs/glossary.json"),
LOWNetwork egress · net.metadata_ip · CWE-200, CWE-319
docs/deployment.md:308
http://metadata.google.internal/computeMetadata/v1/instance/tags
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
.github/workflows/ci.yml:322
if curl -fsS http://127.0.0.1:8787/api/health >/dev/null 2>&1; then
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
.github/workflows/ci.yml:324
curl -s http://127.0.0.1:8787/api/knowledge/stats | head -c 300; echo
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
.github/workflows/ci.yml:338
if curl -fsS http://127.0.0.1:8080/ >/dev/null 2>&1; then break; fi
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
.github/workflows/ci.yml:343
curl -fsS http://127.0.0.1:8080/ | grep -q "Effect" && echo "首页 OK ✔"
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
apps/api/package.json
@effect/platform, @effect/platform-node, @effect/schema, @effect/sql, @effect/sql-pg, dotenv, effect, @types/node
Why it matters. 11 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
apps/mcp/package.json
@types/node, esbuild, tsx, typescript, vitest
Why it matters. 5 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
apps/site/package.json
@astrojs/mdx, @astrojs/react, @astrojs/sitemap, astro, react, react-dom, @astrojs/check, @types/react
Why it matters. 11 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
concurrently
Why it matters. 1 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
packages/content/package.json
@types/node, tsx, typescript, vitest
Why it matters. 4 dependency range(s) float
Fix. pin exact versions or ship a lockfile
INFOInventory / provenance · inv.oversize · CWE-1104
apps/site/public/observatory/agents.csv
apps/site/public/observatory/agents.csv
Why it matters. 1168168 bytes not read

Gates applied: instruction_override, no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha e0558278a1d4full audit observations/trust-audit/mcp-server/aaronlou__effect-ts.cn.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-12e0558278a1d4BLOCKF50first audit
06

Questions

What is the effect-ts.cn MCP server?

Effect-TS 中文社区

What tools does effect-ts.cn expose?

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

Is effect-ts.cn safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (50/100) and found 5 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 effect-ts.cn need?

It reads DEEPSEEK_API_KEY, GH_TOKEN, GITHUB_TOKEN and LLM_API_KEY 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 effect-ts.cn run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as @ecn/observatory at 0.1.0.

How current is this page?

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

Advertisement