kangminlee-maker/onto-mcp
GitHub: kangminlee-maker/onto-mcp
该项目是一个 MCP 原生的本体工具,帮助 LLM 审查各类产物的逻辑一致性并从真实来源推导结构化的领域本体。
Stars: 0 | Forks: 0
# 进入 MCP
[](https://www.npmjs.com/package/onto-mcp)
MCP 原生的本体(ontology)工具,帮助 LLM **审查产物的本体完整性** —— 即其概念、权威性和目的的逻辑一致性 —— 并从真实来源中**推导本体**,通过 runtime 校验门控确保每一个结构化声明都有据可查。
```
.onto contracts and domain documents
-> TS review/reconstruct runtime
-> core API facade
-> MCP tools
-> provider adapters
```
其公共接口是 MCP 原生的:只需安装一次该 server,将其注册到你的 MCP host 中,然后通过工具来驱动它。目标不一定要是代码 —— runtime 契约会在选择观察、校验或 adapter 行为之前,对材料形态进行分类(`code`、`spreadsheet`、`document`、`database`、`mixed` 或 `unknown`)。
## 你可以用它做什么
将 LLM host 指向该 server,并通过工具驱动它来:
- **审查产物的本体完整性** —— 检查其*概念、权威性和目的*是否保持逻辑一致(定义、权威席位和既定目标是否一致?)。产物可以采取任何形式 —— 代码、电子表格、文档、数据库或混合包;形态只是读取本体的层。独立的视角、可控的审议和保守的综合;发现的问题将以*实质性材料问题*的形式呈现。 → `onto_review`
- **从真实来源推导领域本体** —— 从实际的代码库 / 电子表格 / 文档中重建一个有边界的、经过校验的本体种子,并将其优化直至具有可操作性。 → `onto_reconstruct`
**适用场景** 当你的目标是*检查某个产物在概念上是否自洽* —— 即其概念、权威性和目的的逻辑 / 本体完整性 —— 或者是*从真实来源中推导出结构化的领域本体*,并且你希望每一个结构化声明都由 runtime 校验门控负责(显式失败,而非尽力而为)。代码在此范围内,因为代码只有在逻辑一致时才能正常工作。
**不适用场景** linting/格式化、运行测试、一次性聊天摘要、自由生成,或者针对操作 / runtime bug(边缘情况、崩溃、性能)的对抗性挖掘 —— 后者由一个单独的对抗性多视角工具来补充。
| 如果你的目标是… | 使用 |
|---|---|
| 检查产物的概念 / 权威性 / 目的一致性(任何形式:代码、电子表格、文档、DB) | `onto_review`(然后使用 `onto_review_read` 获取结果) |
| 从真实来源推导 / 重建领域本体 | `onto_reconstruct`(然后使用 `onto_reconstruct_read`) |
| 发现可用的视角、领域或源配置文件 | `onto_list` |
## 快速开始
```
npm install -g onto-mcp
onto register # interactive: pick detected MCP hosts
```
`npm install` 只会将 `onto` 二进制文件放在 PATH 中 —— 每个 MCP host(Claude Code, Codex, Claude Desktop, Cursor)都必须额外被告知去启动它。`onto register` 一步即可完成此操作;同一个全局二进制文件由每个 host 共享。注册后请重启 host 应用程序。
```
onto register --all --yes # non-interactive: every detected host
onto register --hosts cursor,codex --yes
onto register --list # show detection status, write nothing
onto register --hosts cursor --dry-run # preview the change, write nothing
```
| Host | 注册方式 |
|---|---|
| Claude Code | `claude mcp add onto -s user -- onto mcp`(user 作用域 = 所有项目) |
| Codex CLI | `codex mcp add onto -- onto mcp` |
| Claude Desktop | 在 `claude_desktop_config.json` 中编辑 `mcpServers.onto` |
| Cursor | 在 `~/.cursor/mcp.json` 中编辑 `mcpServers.onto` |
对于基于 CLI 的 host,`onto register` 会优先使用官方 CLI,如果不在 PATH 中,则回退到打印手动说明。它会在 `mcp add` 之后验证结果,如果 CLI 成功退出但随后未列出 server,则会报告 `failed`(而不是虚假的 `registered`)。JSON 编辑会保留任何已存在的 server,并且是幂等的。注册仅写入 host 拥有的配置;它从不写入 onto 运行时数据。使用 `--command ` / `--name ` 覆盖启动的命令或 server 名称。
**Claude Code 配置文件。** Claude Code 按配置目录(`CLAUDE_CONFIG_DIR`)存储 MCP server。要在一条命令中注册每个配置文件,请让 `onto` 发现它们 —— 它会扫描 `~/.claude` 和 `~/.claude-*` 以查找真实的配置目录(那些包含 `settings.json`、`.credentials.json`、`.claude.json` 或 `projects/` 的目录)以及任何环境的 `CLAUDE_CONFIG_DIR`,并逐一注册:
```
onto register --hosts claude-code --all-claude-profiles --yes # every profile
onto register --all --all-claude-profiles --yes # profiles + other hosts
onto register --all-claude-profiles --list # preview discovered profiles
```
如果要单独针对某个配置文件,请明确指定其名称(与 `--all-claude-profiles` 互斥):
```
onto register --hosts claude-code --claude-config-dir ~/.claude-1 --yes
```
对于项目本地安装:
```
npm install --save-dev onto-mcp
npm exec -- onto mcp
```
在运行审查之前,请在 `.onto/settings.json` 或 `~/.onto/settings.json` 中配置 LLM provider(参见[配置](#configuration))。
## onto CLI
`onto` 二进制文件公开了一小组命令;实际的产品工作由你的 host 通过 MCP 工具驱动。
| 命令 | 作用 |
|---|---|
| `onto mcp` | 启动 MCP stdio 工具 server —— 每个 MCP host 都会启动它(参见[快速开始](#quickstart)) |
| `onto register` | 将 server 注册到受支持的 MCP host 中(参见[快速开始](#quickstart)) |
| `onto configure-provider` | 将 LLM provider/model 设置写入 settings.json 链中(参见[配置](#configuration)) |
| `onto seats` | 打印 runtime 可以分发的每个 LLM model seat 的只读清单,根据 settings.json 链进行解析(使用 `--json` 进行机器输出);不写入任何内容 |
| `onto watch [session]` | 在审查 / 重建会话上打开实时的、只读的 TUI —— 传递会话 id 子字符串或路径,或者省略它以查看最近的一次(参见[观察运行](#observing-a-run)) |
## 它的作用
### 审查
`onto_review` 对目标运行结构化的多视角审查:
1. 调用解释与绑定
2. 执行准备产物
3. 隔离的并行视角执行(上下文隔离的视角)
4. 问题台账和问题立场关闭产物
5. 可控的视角审议
6. 保守综合
7. `ReviewRecord` 组装
8. 简明的人类可读最终输出
两种编排模式共享同一个 runtime:默认的 runtime 编排路径(`onto_review` 驱动一切),以及 host 编排路径(MCP host 一轮一轮地自行执行单元(`onto_review_round` / `onto_review_advance`)),同时 onto 保留产物真值、校验和门控。
审查会话会将产物写入 `.onto/review//` 下:
| 产物 | 用途 |
|---|---|
| `execution-plan.yaml` | 有边界的 runtime 计划 |
| `issue-ledger.yaml` | 规范化的问题列表 |
| `issue-stance-matrix.yaml` | 每个参与视角对每个问题的立场 |
| `deliberation.md` | teamlead 控制的审议结果 |
| `problem-framing.yaml` | 审查结束时的问题分类 |
| `review-run-manifest.yaml` | packet/output 引用和哈希值 |
| `review-record.yaml` | 主要的结构化审查产物 |
| `final-output.md` | 面向主体的报告,包含 `Final Review Result` 解释 |
### 重建
`onto_reconstruct` 从真实来源推导出有边界的本体种子并使其成熟:对目标材料进行分类,在安全和血缘门控之后观察来源,编写并校验 `ontology-seed.yaml`,然后迭代成熟循环(问题边界 → 答案支持 → 本体扩展 → 收敛),直到结果变为 `actionable_ready`、`actionable_limited` 或被明确阻塞。每个结构化声明都由 runtime 校验门控负责;当 provider 凭证、LLM 编写的产物格式、不支持的材料或 runtime 门控无效时,运行会显式失败。
最小的 MCP 调用形式:
```
{
"name": "onto_reconstruct",
"arguments": {
"projectRoot": "/path/to/project",
"targetRefs": ["src/example.ts"],
"intent": "Create a bounded reconstruct Seed from this target.",
"domain": "ontology",
"sessionRoot": ".onto/reconstruct/example-run"
}
}
```
产物和门控目录的权威性来源是机器可读的 [reconstruct 契约注册表](https://github.com/kangminlee-maker/onto-mcp/blob/main/.onto/processes/reconstruct/reconstruct-contract-registry.yaml);语义和基本原理位于 [`.onto/processes/reconstruct/`](https://github.com/kangminlee-maker/onto-mcp/tree/main/.onto/processes/reconstruct) 下的叙述性契约中。一个可读的时间点映射(v0.4.7 快照,不维护)保存在 [development-records/design/reconstruct-runtime-reference-v0.4.7-snapshot.md](https://github.com/kangminlee-maker/onto-mcp/blob/main/development-records/design/reconstruct-runtime-reference-v0.4.7-snapshot.md) 中。
## MCP 工具
| 工具 | 用途 |
|---|---|
| `onto_review` | 运行完整的审查路径并返回产物引用及摘要 |
| `onto_prepare_review` | 准备审查会话和 prompt packet |
| `onto_review_continue` | 从台账边界继续准备好的或已暂停的审查 |
| `onto_review_round` | Host 编排:返回现在准备执行的单元,并实例化 prompt packet |
| `onto_review_advance` | Host 编排:报告 host 执行的单元;onto 校验 seat、记录结果并返回下一轮 |
| `onto_review_cancel` | 请求取消正在运行的审查会话 |
| `onto_review_read` | 读取审查会话 —— 运行时查看实时性的唯一入口,以及完成后获取有边界结果的入口;`projectionLevel` `compact`/`standard`/`full`(`full` 添加 `review-record.yaml` 和最终输出) |
| `onto_list` | 按 `kind` 列出注册表:`lenses`(规范视角集)、`domains`(可用的领域 ID)或 `source_profiles`(重建源配置文件) |
| `onto_observe_source` | 实例化重建材料配置文件、清单、来源观察记录和初始记录 |
| `onto_validate_reconstruct_directive` | 校验 LLM 编写的重建产物 |
| `onto_reconstruct` | 通过 runtime 校验门控运行具有材料感知能力的直接调用重建路径 |
| `onto_reconstruct_read` | 读取重建会话 —— 阶段进度、实时性和计数,或在 `projectionLevel=full` 时读取完整记录、运行 manifest 和最终输出 |
MCP 结果包含 `llmPresentation` prompt:runtime 提供有边界的事实,host LLM 使用这些 prompt 来解释开篇简报和最终结果,而无需捏造设置或发现。
### 工具调用 schema
每个工具完整的、权威的输入 schema 都会在 runtime 通过 MCP `tools/list`(JSON Schema)提供给你的 host,并定义在 [`src/mcp/tool-schemas.ts`](https://github.com/kangminlee-maker/onto-mcp/blob/main/src/mcp/tool-schemas.ts) 中。
两个主要入口点:
**`onto_review`** —— 必需的 `target`(审查什么)和 `intent`(为什么审查);常见的可选项:`reviewMode`(`core-axis` | `full`)、`domain`(或 `noDomain: true`)、`targetScopeKind`(`file` | `directory` | `bundle`)、`diffRange`、`projectRoot`、`prepareOnly`、`returnRunningAfterMs`、`llmOverride`。
```
{
"name": "onto_review",
"arguments": {
"target": "src/payments/",
"intent": "Review the refund path for material correctness and safety issues.",
"reviewMode": "full",
"projectRoot": "/path/to/project"
}
}
```
**`onto_reconstruct`** —— 必需的 `projectRoot`、`targetRefs`、`intent`;常见的可选项:`domain`、`sessionRoot`、`resumeMode`(`fresh` | `reuse_existing_authored_artifacts`)、`judgeModel`、`judgeLlmEffort`、`llmOverride`(参见上面的 [重建](#reconstruct) 示例)。
**读取结果** —— `onto_review_read` / `onto_reconstruct_read` 接受 `projectionLevel`(`compact` | `standard` | `full`);在 token 受限的 host 中使用 `compact`,使用 `full` 以包含记录和最终输出。
**单次调用的 LLM 覆盖(`llmOverride`)** —— `onto_review` 和 `onto_reconstruct` 接受一个可选的 `llmOverride`,它会**仅针对该次调用**覆盖设置解析出的 LLM(设置不变,默认关闭)。字段是设置 `llm` 块的子集 —— `{ provider?, auth?, model?, effort?, service_tier? }` —— 只有你设置的字段会被覆盖。设置 `provider` 需要明确的 `model`。支持的 model id 编写在 [`.onto/authority/supported-models.yaml`](https://github.com/kangminlee-maker/onto-mcp/blob/main/.onto/authority/supported-models.yaml) 中。
```
{
"name": "onto_review",
"arguments": {
"target": "src/example.ts",
"intent": "Second-opinion review with a stronger model.",
"llmOverride": { "model": "gpt-5.6-sol", "effort": "high" }
}
}
```
### 自文档化
该 server 会公布 MCP `resources` 和 `prompts`,以便 host LLM 无需外部文档即可了解 onto:
- **Resource `onto://usage`** —— provider 设置、审查和重建工作流、运行句柄轮询模式以及输出大小指导。
- **Prompts** —— 规范的任务模板 `review_target`(参数:`target`、`intent`、`reviewMode`)和 `reconstruct_seed`(参数:`targetRefs`、`intent`)。
`onto_review_read` 接受 `projectionLevel`(`compact` |standard` | `full`);在 token 受限的 host 中使用 `compact`。
### 观察运行
`onto watch` 在审查或重建会话上打开一个实时的、只读的 TUI:浏览工作流树、节点详细信息和日志。传递会话 id 子字符串或会话路径,或者省略它以附加到最近的会话(`--project-root` 选择在哪里查找 `.onto/{review,reconstruct}`)。它仅用于观察 —— 不写入任何内容,也不驱动任何内容。
runtime 还会写入会话本地的 `runtime-events.ndjson` 流,并尝试在受支持的终端(tmux、Warp、Cursor、iTerm2、Apple Terminal、Codex Desktop(配置了启动器的情况下))中自动打开观察者。设置 `ONTO_RUNTIME_WATCHER=0` 以禁用,或者设置 `ONTO_RUNTIME_WATCHER_COMMAND` 并提供用于不受支持 host 的 `{watcherCommand}` 模板。
## 配置
runtime 设置存在于 `settings.json` 中(JSON 格式;接受 `#` 注释):
| 路径 | 作用 |
|---|---|
| `{project}/.onto/settings.json` | 项目本地设置 |
| `~/.onto/settings.json` | 用户默认设置 |
对于标量键,项目设置会覆盖用户默认设置。在 `settings.json/v3` 中,actor `llm` 块是完整的 model 设置;它们不会从根 `llm.default` 继承。
最小的 Codex OAuth 配置文件:
```
{
# v3 puts model settings inside each actor.
"schema_version": "settings.json/v3",
"review": {
"mode": "full",
"execution": {
"executor": "auto",
"topology": "main-workers",
"actors": {
"teamlead": {
"seat": "main",
"llm": {
"auth": "oauth",
"provider": "openai",
"model": "gpt-5.5",
"effort": "medium",
"service_tier": "fast"
}
},
"lens": {
"seat": "worker",
"llm": {
"auth": "oauth",
"provider": "openai",
"model": "gpt-5.5",
"effort": "medium",
"service_tier": "fast"
}
},
"synthesize": {
"seat": "worker",
"llm": {
"auth": "oauth",
"provider": "openai",
"model": "gpt-5.5",
"effort": "xhigh",
"service_tier": "fast"
}
}
},
"deliberation": "controlled-lens-deliberation"
}
},
"reconstruct": {
"execution": {
"actors": {
"semantic_author": {
"llm": {
"auth": "oauth",
"provider": "openai",
"model": "gpt-5.5",
"effort": "high",
"service_tier": "fast"
}
},
"confirmation_provider": {
"llm": {
"auth": "oauth",
"provider": "openai",
"model": "gpt-5.5",
"effort": "medium",
"service_tier": "fast"
}
}
}
}
}
}
```
LLM 切换器轴线:
| auth | provider | runtime 路径 |
|---|---|---|
| `oauth` | `openai` | Codex worker(订阅) |
| `oauth` | `anthropic` | Claude Code worker(订阅) |
| `api_key` | `openai` | OpenAI API |
| `api_key` | `anthropic` | Anthropic API |
| `api_key` | `grok` | xAI/Grok OpenAI 风格的 API |
| `local` | `lmstudio` | LM Studio OpenAI 风格的 endpoint |
不支持的设置会在配置文件解析期间停止。
### provider·model 切换(推荐:`onto configure-provider`)
`settings.json`을 손으로 고치는 대신 `onto configure-provider`가 actor LLM 블록을
라우트 검증 후 기록합니다(units 등 다른 설정은 보존). 라우팅 불가능한 조합은 기록
전에 fail-loud 합니다.
```
# Codex (OpenAI) OAuth
onto configure-provider --provider openai --model gpt-5.5 --auth oauth \
--effort medium --service-tier fast
# Claude Code (Anthropic) OAuth
onto configure-provider --provider anthropic --model claude-opus-4-8 --auth oauth \
--effort high
```
- `--service-tier`는 `openai`+`oauth`(Codex) 경로 전용입니다 — anthropic에 주면
profile 해석 단계에서 거부됩니다.
- `--auth`를 주면 reconstruct actor 블록(`semantic_author`/`confirmation_provider`)도
함께 기록합니다. 생략하면 review actor만 기록하고 loader가 provider 기본 auth를 파생합니다.
- `--timeout-ms `는 각 actor `llm` 블록에 per-actor `timeout_ms`(양의 정수)를
함께 기록합니다 — codex/claude direct-call worker 호출 타임아웃(아래 [타임아웃](#타임아웃)
참고). api_key SDK 경로에는 적용되지 않습니다.
- `--project`는 프로젝트 seat(`.onto/settings.json`)에, 생략하면 사용자 seat
(`~/.onto/settings.json`)에 기록합니다.
- 지원 model id는 [`.onto/authority/supported-models.yaml`](.onto/authority/supported-models.yaml)가
authority입니다. 범용 seat은 `gpt-5.5`(openai)·`claude-opus-4-8`(anthropic)이고,
역할 전용으로 `review`에 `gpt-5.6-sol`·`claude-fable-5`, `semantic_map_synthesize`에
`gpt-5.6-luna`·`claude-sonnet-5`가 인증돼 있습니다. 현재 프로젝트에서 실제로
해석되는 seat은 `onto seats`로 확인하세요.
- 이 명령은 actor 블록만 기록합니다. `units[].llm.model`로 unit별 model을 고정해
두었다면(위 정적 프로필 예시가 그렇습니다) 같은 model로 바꾸거나 그 `model` 키를
지워 actor 값을 상속하게 하세요.
### 超时
| 경로 | 기본값 | 조절 knob (우선순위) |
|---|---|---|
| review unit worker (codex/claude) | 240s (짧은 응답 단계 180s, `issue_stance_matrix` 120s) | `units[].timeout_ms` |
| direct-call CLI worker (codex/claude) — reconstruct·inline review | 600s | actor `llm.timeout_ms` → 없으면 `ONTO_LLM_TIMEOUT_MS` |
| SDK direct call (`api_key`) | 120s | `ONTO_LLM_TIMEOUT_MS` (ms) |
`llm.timeout_ms`(ms)는 actor `llm` 블록에 넣는 per-actor 값으로, codex/claude CLI worker
경로(reconstruct의 `semantic_author`/`confirmation_provider`, inline review actor)의 호출
타임아웃을 그 값으로 고정합니다. 없으면 env `ONTO_LLM_TIMEOUT_MS`, 그것도 없으면 기본값을
씁니다(api_key SDK 경로에는 적용되지 않고 `ONTO_LLM_TIMEOUT_MS`만 반영). 이 knob은 review의
`units[].timeout_ms`(worker 프로세스 bound)와 구분되는 별개 계층입니다.
`ONTO_LLM_TIMEOUT_MS`(ms)는 direct-call/CLI-worker와 SDK 경로 기본값을 전역으로 덮어씁니다.
opus 같은 프론티어 모델의 긴 단일-turn authoring도 600s worker 기본값으로 완료되므로 지원
모델에는 override가 필요 없습니다. 특정 review unit이 오래 걸리면 그 unit의
`units[].timeout_ms`만 키우면 됩니다(모든 unit에 큰 값을 박을 필요 없음).
## 文档
| 文档 | 内容 |
|---|---|
| [reconstruct 契约注册表](https://github.com/kangminlee-maker/onto-mcp/blob/main/.onto/processes/reconstruct/reconstruct-contract-registry.yaml) | 活跃的重建产物/门控权威图(附带叙述性契约) |
| [docs/development.md](https://github.com/kangminlee-maker/onto-mcp/blob/main/docs/development.md) | 验证工具和开发工作流 |
| [docs/architecture/repo-layout.md](https://github.com/kangminlee-maker/onto-mcp/blob/main/docs/architecture/repo-layout.md) | 仓库布局 SSOT:文件夹角色和放置规则 |
| [docs/architecture/](https://github.com/kangminlee-maker/onto-mcp/tree/main/docs/architecture) | 架构说明 |
标签:DLL 劫持, MCP, TypeScript, 人工智能工具, 代码质量审查, 大语言模型, 安全插件, 暗色界面, 本体论, 自动化攻击