内容
<p align="center">
<img src="https://raw.githubusercontent.com/ellmos-ai/open-compute-mcp/main/assets/banner.png" alt="open-compute-mcp banner" width="100%">
</p>
# open-compute-mcp
**用于 [open-compute](https://github.com/ellmos-ai/open-compute) 的 MCP 服务器的 npm 启动器** —
模型无关的 **计算机使用** 工具,通过模型上下文协议(MCP)暴露。
**中文** | [德语](README_de.md)
[](https://www.npmjs.com/package/open-compute-mcp)
[](https://www.npmjs.com/package/open-compute-mcp)
[](https://opensource.org/licenses/MIT)
[](https://nodejs.org/)
📦 **[在 npm 上查看 →](https://www.npmjs.com/package/open-compute-mcp)**
MCP **客户端是推理者**(无需 API 密钥,模型无关):它调用 `capture` 查看屏幕,然后使用 `do` / `click_name` / `invoke` 进行操作。这是 open-compute 的无密钥模式 A 环路,但作为原生工具调用。
> 这个包是一个 **薄启动器**。它不包含服务器逻辑 — 它启动 **Python** open-compute 服务器(从 GitHub 拉取)并通过管道传输 MCP 标准输入输出。
> 真实的屏幕捕获和输入需要 **交互式 Windows 桌面会话**。
## 要求
- **Python 3.10+** 和 **[uv](https://docs.astral.sh/uv/)** 在主机上。默认启动使用 `uvx` 从 GitHub 拉取 open-compute(带有 `mcp` 额外功能)—
在第一次运行时,`mcp` 额外功能跟踪 GitHub 仓库,因此这适用于 PyPI 发布时机无关。
- **Windows** 用于真实捕获/输入(mss + UIA)。其他平台导入工具但无法驱动桌面。
## 工具
| 工具 | 用途 |
|---|---|
| `capture` | 截图 → 返回图像(可选单个窗口)。 |
| `do` | 执行一个规范操作或批处理(点击/类型/按键/滚动/拖动/...)。 |
| `tree` | 通过 Windows UIA 列出 UI 元素(名称/角色/`center_norm`)。 |
| `click_name` | 通过名称解析元素并点击它。 |
| `invoke` | 通过 UIA 模式无点击激活元素。 |
| `watch_dir` | 监视目录的文件系统更改。 |
| `push_status` | 饲料管理器状态(只读)。 |
| `rec_replay` | 重放 `.clirec` 宏(需要可选的 `clirec` 包)。 |
所有坐标都相对于虚拟桌面 **归一化为 0..1**。通过 `OC_LANGUAGE` 使用六种语言(`de/en/es/ja/ru/zh`)本地化工具描述。
## 与 MCP 客户端一起使用
**通过此 npm 启动器(npx):**
```json
{
"mcpServers": {
"open-compute": {
"command": "npx",
"args": ["-y", "open-compute-mcp"]
}
}
}
```
**直接通过 Python(uvx),无需 npm:**
```json
{
"mcpServers": {
"open-compute": {
"command": "uvx",
"args": ["--from", "open-compute[mcp,local,uia] @ git+https://github.com/ellmos-ai/open-compute.git", "open-compute-mcp"]
}
}
}
```
## 配置(环境变量)
| 变量 | 效果 |
|---|---|
| `OPEN_COMPUTE_PYTHON` | `python.exe` 的路径;启动器使用它运行 `-m open_compute.mcp_server`(如果您已将 open-compute 安装到特定环境中,请使用此变量)。 |
| `OPEN_COMPUTE_MCP_CMD` | 命令覆盖(空格分隔),例如 `python -m open_compute.mcp_server`。 |
| `OPEN_COMPUTE_GIT_REF` | 用于 uvx 启动的 Git 引用(分支/标签/SHA)(默认为仓库的默认分支)。 |
| `OPEN_COMPUTE_EXTRAS` | 默认 `uvx` 启动的额外功能(默认为 `mcp,local,uia`)。 |
| `OC_LANGUAGE` | 工具描述的语言:`de`/`en`/`es`/`ja`/`ru`/`zh`。 |
| `OC_SAFETY_MODE` | `confirm`(默认)· `read_only` · `allow_all`。 |
| `OC_DENY` | 始终拒绝的动作类型(逗号分隔),例如 `type,launch_app`。 |
## 安全
计算机使用功能强大。`OC_SAFETY_MODE` 是一个操作员 **上限**(`confirm` 默认 · `read_only` · `allow_all`);每个调用的 `mode` 只能 **收紧**,而不能放松。由于 MCP 标准输入输出没有服务器→客户端确认回调,`confirm` / `read_only` **报告** 操作而不执行它。对于交互式使用,在 **隔离的 VM/会话** 中运行,设置 `OC_SAFETY_MODE=allow_all`,并让客户端的工具审批对话框成为人为循环。`OC_DENY`(逗号分隔的动作类型)是一个硬拒绝列表。将屏幕内容视为不受信任(提示注入风险)。
## 许可证
MIT — 见 [LICENSE](LICENSE)。open-compute 项目的一部分。