AI Skill Hub 强烈推荐:Enola 是一款优质的MCP工具。AI 综合评分 8.0 分,在同类工具中表现稳健。如果你正在寻找可靠的MCP工具解决方案,这是一个值得深入了解的选择。
Enola 是一款遵循 MCP(Model Context Protocol)标准协议的 AI 工具扩展。通过 MCP 协议,它可以让 Claude、Cursor 等主流 AI 客户端直接访问和操作外部工具、数据源和服务,实现 AI 能力的无缝扩展。无论是文件操作、数据库查询还是 API 调用,都可以通过自然语言在 AI 对话中直接触发,极大提升生产效率。
Enola 是一款遵循 MCP(Model Context Protocol)标准协议的 AI 工具扩展。通过 MCP 协议,它可以让 Claude、Cursor 等主流 AI 客户端直接访问和操作外部工具、数据源和服务,实现 AI 能力的无缝扩展。无论是文件操作、数据库查询还是 API 调用,都可以通过自然语言在 AI 对话中直接触发,极大提升生产效率。
# 方式一:通过 Claude Code CLI 一键安装
claude skill install https://github.com/enola-labs/enola
# 方式二:手动配置 claude_desktop_config.json
{
"mcpServers": {
"enola": {
"command": "npx",
"args": ["-y", "enola"]
}
}
}
# 配置文件位置
# macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
# Windows: %APPDATA%/Claude/claude_desktop_config.json
# 安装后在 Claude 对话中直接使用 # 示例: 用户: 请帮我用 Enola 执行以下任务... Claude: [自动调用 Enola MCP 工具处理请求] # 查看可用工具列表 # 在 Claude 中输入:"列出所有可用的 MCP 工具"
// claude_desktop_config.json 配置示例
{
"mcpServers": {
"enola": {
"command": "npx",
"args": ["-y", "enola"],
"env": {
// "API_KEY": "your-api-key-here"
}
}
}
}
// 保存后重启 Claude Desktop 生效
Catch structural regressions that builds and tests cannot see: new dependency cycles, violated layer boundaries, undeclared service dependencies, and changes that spread beyond their intended scope.
Enola maps your codebase before a change and compares it with the structure afterward. The result is about this change — not every problem already in the repository — and only the rules you choose can fail the build.
Documentation: Choose a guide by task · CLI reference · Architecture internals
| Tells you | |
|---|---|
| **Git diff** | which lines changed |
| **Tests** | whether the behaviour you tested still works |
| **Linter** | whether local rules were violated, file by file |
| **Code review** | whatever a human notices, after the work is finished |
**enola check** | **what the change did to the structure of the system** |
A layer crossed the wrong way, an endpoint no client calls any more, a change that quietly reached three packages further than its author described: each one spans files, breaks no test, and is easy for a reviewer to miss. AI agents can write more code than you can carefully review; that gap is where structural damage accumulates, and it usually surfaces months later when the package is too tangled to refactor.
Two separate things decide that, and confusing them is the fastest way to be surprised by this tool: what enola finds, and what your policy fails on. enola runs all nineteen of its checks - it calls them explainers - on every single run. The policy picks which of their findings are allowed to set the exit code.
Out of the box that policy is empty. Every finding is reported, the run exits 0, and the output says in as many words that nothing was enforced. Nothing breaks until you name what should break:
layers)cycles)intent)god-class)hotspots)dependency-depth)complexity-outliers)exported-surface)unused-routes)coverage)messaging-coverage)crossrepo)vendored-candidates — informational, so it can never fail a build)import yourpackage executes in Python, and the package __init__.py files responsible for most of it (import-closure — the summary is informational; the barrels it names are gateable)enola holds itself to this. This repository declares its own layer order in enola-intent.yaml - six layers, entrypoint down to the fact model - and its CI runs enola check --fail-on=layers against it. Not --fail-on=cycles: enola is written in Go, where the compiler already refuses an import cycle between packages, so gating on one would enforce a rule the toolchain enforces first. The layer order is the part the compiler cannot see. Nothing but that file stops internal/upgrade importing pkg/cli today, and the build is green either way until something says otherwise.
Why nothing is on by default. enola used to fail on a new dependency cycle out of the box. A cycle is exactly measurable - Tarjan's SCC algorithm, no estimate anywhere - and that made it a tempting default. But exactly measurable is not the same as unwanted: Go's compiler forbids import cycles between packages outright, so a Go team's answer to the finding is usually "the compiler already has this covered"; a Rails app wires most of its graph at runtime, and two app/ directories referencing each other is not something that community reads as a defect at all. A tool that arrives asserting otherwise spends its first impression being argued with, and the first thing those teams learn about it is which flag turns it off.
So enola states what it measured and stops there. The exception it makes for itself is the one above: an unenforced run must say it enforced nothing, because a silent green is exactly what a broken gate looks like.
Any of the nineteen can fail the build. --fail-on takes the names above as a comma-separated list, and --min-confidence sets the floor within them. Two more things can fail it that are not findings at all:
--target, gated with --max-spillover=N. A change can trip this with zero failing findings.2; a baseline that isn't comparable to the current code exits 3 and enola declines to grade rather than blaming your change. Neither is a judgement about the code, and neither is suppressed by --warn-only.Which of them can actually fail at the default floor: three. cycles, intent, and layers when the order is declared in enola-intent.yaml are the ones enola computes with certainty, so only they reach 1.00. Everything else is an estimate measured against your own repository - "this file has unusually many dependents for this codebase" - and caps below 1.00 by design (MaxHeuristicConfidence is 0.95). Naming an inferred explainer in --fail-on and nothing else therefore changes nothing at all; it needs --min-confidence too.
1. Install the binary. No Go toolchain, no C compiler - Linux, macOS (amd64/arm64) and Windows:
curl -fsSL https://raw.githubusercontent.com/enola-labs/enola/main/install.sh | sh
That drops one binary into ~/.local/bin. If the next command comes back enola: command not found, that directory isn't on your PATH yet:
export PATH="$HOME/.local/bin:$PATH"
Or install it from a package index. Every route delivers the same binary, and the command is always enola:
pip install enola-cli
gem "enola" # then: bundle exec enola
The PyPI project is called enola-cli because enola was already taken there. The Ruby gems are maintained at enola-labs/enola-rb and fetch the same release on first use.
Ruby and Rails? There is a community-maintained gem that wraps the same release, fetches the binary on first use and forwards every command - and enola-rb adds a Rails generator plus enola:snapshot / enola:check rake tasks:
bundle add enola-rb
bin/rails generate enola:install
bin/rake enola:check
Both Ruby fact providers are on by default there. The gems are maintained by Muhamed Isabegović at misabegovic/enola-rb; issues and pull requests belong there. See docs/RAILS.md.
2. Tell your agents it exists, and close the loop automatically:
enola install --hooks
This writes enola's instructions into the files your agents already read - Claude Code, Cursor, Copilot, Codex, Pi, opencode - and --hooks adds the two hooks that grade each session for you. In opencode, which has no hook configuration of that shape, --hooks installs a plugin instead: the first grep, glob or list of a session is refused with the enola tool that answers it from the index, bounded to two refusals and dropped the moment any enola tool is called. Without --hooks you get instructions and nothing else, which an agent is free to read and then ignore - on a small local model it usually does. It previews every change and asks before writing, never creates a shared file like AGENTS.md that wasn't already there, and enola uninstall reverses everything byte-for-byte, including the files and directories it created itself.
3. Give your agent the graph over MCP. Pick your client:
| Client | Do this |
|---|---|
| **Claude Code** | claude mcp add enola enola |
| **Copilot (VS Code)** | code --add-mcp '{"name":"enola","command":"enola"}' |
| **Cursor** | add the block below to .cursor/mcp.json (or ~/.cursor/mcp.json for every project) |
| **opencode** | already done by step 2 - it is the one client enola install registers for you |
| **Codex** | codex mcp add enola -- enola |
| **Other MCP clients** | add the block below to its MCP config |
<details> <summary>MCP config block</summary>
{
"mcpServers": {
"enola": {
"command": "enola"
}
}
}
Copilot's .vscode/mcp.json uses servers as the top-level key instead of mcpServers. A config path in args is optional everywhere - omit it to run on built-in defaults. Full details and per-client restart instructions: docs/CLI.md.
</details>
4. Confirm it actually works. After your next session:
enola doctor
A report, not a gate - it always exits 0. It is the fastest way to find out that something has gone quietly wrong:
doctor reports when each hook last ran rather than whether it is configured.enola upgrade installs it.5. Explore the architecture visually. Once a snapshot exists, open the read-only local dashboard:
enola dashboard --open
It stays attached to the terminal until you press Ctrl-C. Use Refresh when you want to load a newer snapshot written for that repository, so the graph does not change while you inspect it. The opening screen prioritizes findings and architectural changes; lifetime usage has its own screen, while ports, processes, and paths live under Diagnostics. If no snapshot exists yet, the dashboard shows the exact generation command. Repository data never leaves your machine. See the dashboard user guide for a walkthrough of every tab.
高质量的MCP工具,架构清晰
AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。
建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。
✅ Apache 2.0 — 宽松开源协议,可商用,需保留版权声明和 NOTICE 文件,含专利授权条款。
总体来看,Enola 是一款质量优秀的MCP工具,在同类工具中具备一定竞争力。AI Skill Hub 将持续追踪其更新动态,建议收藏备用,结合自身场景选择合适时机引入使用。
| 原始名称 | enola |
| 原始描述 | 开源MCP工具:enola - MCP Architectural Snapshot Server and Knowledge Graph。⭐45 · C |
| Topics | mcpai-toolsarchitecturecode-analysisdependency-graphgolangc |
| GitHub | https://github.com/enola-labs/enola |
| License | Apache-2.0 |
| 语言 | C |
收录时间:2026-06-25 · 更新时间:2026-06-26 · License:Apache-2.0 · AI Skill Hub 不对第三方内容的准确性作法律背书。
选择 Agent 类型,复制安装指令后粘贴到对应客户端