关于 omega-mcp
omega-mcp 是面向 Omega 开发 Agent 的 MCP 服务,使用固定版本编译器编译并在隔离沙箱中运行 `.om` 程序,也可查询语言关键词、错误和陷阱信息。
主要功能
- 01编译 Omega 源码
- 02在隔离沙箱中运行程序
- 03解释编译错误和运行陷阱
- 04搜索语言关键词与主题
- 05限制 CPU、内存和文件资源
适用场景
- 01检查 Omega 程序能否编译
- 02在资源限制下运行 Omega 示例
- 03理解编译错误或运行陷阱
- 04查找关键词的语法与示例
MCP 相关
通过 stdio 上的 JSON-RPC 将 compile、run、explain_error 和 lookup 暴露为 MCP 工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
omega-mcp
一个用 Omega 编写的 MCP 服务,可让 Agent 使用固定的种子编译器编译并运行 Omega(.om)程序,以及查询该语言。它通过标准输入输出,以换行符分隔的 JSON-RPC 2.0 消息进行通信,使用的协议版本为 2025-06-18。
固定版本:omega-mv e5b32567a7aff3ce594e3254a622a846a6cd190b,omc sha256 为
2c82480596bbdc50cda9626866209ef662d5834f278f839ff4ce0250c495029f。build.sh 会拒绝使用任何其他编译器,并且服务会在启动时再次检查其编译器的 sha256。
工具
| 工具 | 参数 | 结果 |
|---|---|---|
compile | source | ok、二进制大小和 sha256,或编译错误 {line, code, meaning, fix} |
run | source、stdin、timeout_ms(1..30000,默认 5000) | 编译结果、截断后的 stdout/stderr,以及退出情况:normal、trap(附带含义),或导致停止的限制:cpu_time、file_size、wall_clock、killed |
explain_error | query:错误代码 1..30、omc: line N: error K 这一行、trap T,或退出状态 101..114 | 含义、原因、修复方法、最小示例,以及 omega-mv@e5b32567 中的引用 |
lookup | query:关键词、主题或子字符串 | 条目(形式、元数、类型、结果、示例、引用),或最多 20 条搜索结果 |
编译诊断属于成功的工具结果(isError: false);如果无法运行任何内容(沙箱故障、编译阶段被拒绝),或 explain/lookup 未找到条目,则 isError 为 true。参数错误会返回 JSON-RPC 错误(-32602)。
隔离
每个 compile 和 run 阶段都会创建一个新的 /tmp/omega-mcp-<16 hex> 目录(模式 0700,并在回复后删除),并在 bwrap --unshare-all --clearenv 下运行。沙箱只能看到编译器或程序(只读)、其沙箱内的清理程序,以及一个 16 MiB 的 tmpfs 工作目录:无网络、无主机文件、环境为空。prlimit 会在沙箱启动前应用资源限制,服务则会在达到墙钟时间限制时终止整个沙箱。
| 阶段 | CPU | 地址空间 | 文件大小 | 进程数 | 墙钟时间 |
|---|---|---|---|---|---|
| run | 10 s | 256 MiB | 1 MiB | 5 | timeout_ms(默认 5 s,最长 30 s) |
| compile | 20 s | 512 MiB | 16 MiB | 4 | 20 s |
两个阶段还会限制最多打开 64 个文件,并禁用核心转储。--test-only-no-isolation 会关闭所有这些限制,仅用于让信任门验证其能检测到逃逸;切勿将此选项交给 Agent。
构建和使用
OMEGA_SRC=/path/to/omega-mv ./build.sh # omega-mv checkout at e5b32567 with seed/out/omc built
build/omega-mcp # reads JSON-RPC on stdin; logs one line per request on stderr
服务会从可执行文件所在目录加载 data/reference.json 和 data/examples/。启动退出代码:2 表示参数错误,3 表示编译器与固定版本不符,4 表示数据缺失,5 表示缺少 bwrap/prlimit。mcp.json 是一个客户端配置示例;请将其 command 指向 build/omega-mcp。
检查门
python3 gates/smoke.py # MCP client session; transcript in evidence/smoke-transcript.jsonl
python3 gates/trust.py # trust boundary: 4 attacks plus negative controls; evidence/trust-gate.json
python3 tools/check-reference.py --omega-src $OMEGA_SRC --omc $OMEGA_SRC/seed/out/omc --self-test
trust.py 通过 run 工具尝试读取 ~/.local/state 下的金丝雀文件、执行 fork 炸弹、无限循环和 10 GiB 写入,并要求每项操作都被拒绝或终止,且不留下任何进程。第二个使用 --test-only-no-isolation 启动的服务会运行这些攻击的有界版本,并且必须能观察到它们成功;因此,无法检测逃逸的检查门会失败。check-reference.py 会从固定版本的源代码重新推导所有关键词、错误和 trap 条目,使用固定版本的 omc 编译并运行每个示例,并运行三个负向对照。
这些检查门是在 Linux arm64 上获得的主机验证证据(bubblewrap 0.9.0、util-linux 2.39.3);它们不能说明其他内核的情况,也不适用于 src/sandbox.om 之外的沙箱配置。
目录结构
src/*.om:服务(src/UNITS列出串接顺序;build.sh负责构建)vendor/omega-mv/:从 omega-mv@e5b32567 原样复制的 sha256 和 JSON 单元data/:参考数据和示例程序,由tools/gen-reference.py编写,并由tools/check-reference.py检查gates/、evidence/:验证判定器及其记录结果DEPENDENCIES.md:构建、运行和验证流程中用到的所有主机工具
许可证:Apache-2.0(参见 LICENSE 和 NOTICE)。
由人类主导的 Agentic 工程
开发遵循由人类主导的 Agentic 工程(HDAE):人类定义目标、架构、约束、验收标准和停止节点;Agent 在这些边界内进行实现、执行检查、诊断故障并修改。人类审核仍负责核实声明、验收和发布决策。这描述的是开发方法,并不表示运行时自主性或历史证据发生变化。
有关该方法的文档和一个系统软件案例研究,请参阅 Gregory M. Kurtzer(2026),Ginux: Building an Independent Kernel That Runs Linux Userspace through Human-Directed Agentic Engineering,技术报告,v1,Zenodo,https://doi.org/10.5281/zenodo.23682548。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。