内容
---
license: mit
language:
- zh
tags:
- mcp
- 模型上下文协议
- 桌面自动化
- llm
- ollama
- openai
- anthropic
- pyautogui
- python
pipeline_tag: 文本生成
library_name: mcp
---
# 孙悟空-大卫智解-mcp
一款作为桌面自动化助手的模型上下文协议(MCP)服务器。它连接本地或云端的LLM(Ollama、OpenAI、Claude/Anthropic)与桌面自动化功能(PyAutoGUI 鼠标、键盘、快捷键、截图),并实施独家任务锁定,确保任务在无中断的情况下完成。
## 功能特点
1. **多LLM路由器**:
- 查询通过 **Ollama** 运行的本地模型(例如 Llama 3、Mistral、Gemma)。
- 将查询请求路由到 **OpenAI** (GPT-4o 等)和 **Anthropic** (Claude 3.5 Sonnet 等)。
- 所有本地和云端提示路由的统一接口。
2. **桌面控制与快捷键**:
- 完整的键盘控制:输入文本、按下特定键或发送多键热键组合(如 `Ctrl + Alt + T` 或 `Ctrl + S`)。
- 鼠标控制:点击(左、中、右键)、拖动、相对或绝对移动,以及滚轮操作。
- 屏幕截图工具,用于拍摄快照并保存到文件中。
3. **独家任务锁定**:
- 防止并行任务执行或并发客户端请求。
- 一旦通过 `start_task` 启动任务,就会获取独家跨进程锁。所有后续自动化工具都会受到该锁的保护和验证。
- 完成后,`complete_task` 释放锁,使服务器恢复空闲状态。
---
## 架构流程
服务器的运行流程如下图所示:

*(原始矢量格式,请参见 [docs/architecture.svg](docs/architecture.svg))*
---
## 设置与安装
### 1. 先决条件
- Python >= 3.10
- [Ollama](https://ollama.com/)(可选,用于运行免费的本地模型)
### 2. 安装依赖项
初始化虚拟环境并安装依赖项:
```bash
python -m venv venv
source venv/Scripts/activate # 在 Windows 上:venv\Scripts\activate
pip install -r requirements.txt
```
### 3. 环境配置
将 `.env.example` 复制到 `.env` 并填写您的 API 凭证:
```bash
cp .env.example .env
```
更新任何 API 密钥:
- `OPENAI_API_KEY`:路由到 GPT 模型时必填。
- `ANTHROPIC_API_KEY`:路由到 Claude 模型时必填。
- `OLLAMA_BASE_URL`:默认为 `http://localhost:11434`。
---
## 使用方法
### 运行服务器
服务器通过标准 I/O(stdio)运行。您可以使用 python 启动它:
```bash
python -m src.server
```
或将其安装为包并使用控制台入口点:
```bash
pip install -e .
sonu-mcp-server
```
### 客户端模拟测试
我们提供了一个独立的测试脚本,用于模拟客户端工具激活、任务锁定、鼠标移动、按键组合和模型列表查询:
```bash
python examples/client_example.py
```
---
## MCP 工具定义注册表
此 MCP 服务器公开了以下工具:
| 工具类别 | 工具名称 | 参数 | 描述 |
| :--- | :--- | :--- | :--- |
| **生命周期** | `start_task` | `task_id`(str),`description`(str) | 启动任务并锁定自动化会话。 |
| | `complete_task` | `task_id`(str),`success`(bool),`details`(str) | 完成活动任务并释放锁。 |
| | `get_task_status` | 无 | 获取当前活动任务状态。 |
| | `force_unlock` | 无 | 在发生错误时重置和清除锁。 |
| **自动化** | `click_mouse` | `x`(int),`y`(int),`button`(str),`clicks`(int) | 在坐标处点击鼠标。受保护。 |
| | `move_mouse` | `x`(int),`y`(int),`duration`(float) | 移动光标。受保护。 |
| | `drag_mouse` | `x`(int),`y`(int),`duration`(float),`button`(str) | 拖动鼠标。受保护。 |
| | `scroll_mouse` | `clicks`(int) | 滚动向上/向下。受保护。 |
| | `type_keyboard` | `text`(str),`interval`(float) | 输入字符串。受保护。 |
| | `press_key` | `key`(str) | 按下单个键盘按键。受保护。 |
| | `press_hotkey` | `keys`(list[str]) | 按下热键组合(例如 `['ctrl', 'c']`)。受保护。 |
| | `take_screenshot` | `filename`(str) | 捕获屏幕快照。受保护。 |
| **LLM 路由器** | `route_llm_query` | `provider`(str),`model`(str),`prompt`(str),`system_prompt`(str) | 查询提供商(ollama/openai/anthropic)。 |
| | `list_llm_models` | 无 | 列出活动提供商模型。 |
---
## 与 Claude Desktop 集成
要与 Claude Desktop 集成,请将服务器添加到您的 `claude_desktop_config.json` 中:
```json
{
"mcpServers": {
"sonu-davinceResolve-mcp": {
"command": "python",
"args": ["-m", "src.server"],
"cwd": "C:/Users/janmw/.gemini/antigravity-ide/scratch/sonu-davinceResolve-mcp",
"env": {
"OPENAI_API_KEY": "your-openai-api-key",
"ANTHROPIC_API_KEY": "your-anthropic-api-key"
}
}
}
}
```