# VirtualPC MCP Server (孵化中)
*基于 Debian 的统一 MCP 工具运行时环境,具有会话级环境隔离、环境状态持久化、实时 UI 可视化、分布式架构和可扩展性*
[![License: MIT][license-image]][license-url]
[English](./README.md) | [快速开始](#快速开始) | [开发](#开发) | [贡献](#贡献)
---
## 1. 概述
VirtualPC MCP Server 是一个综合性的 MCP(模型上下文协议)工具运行时环境,旨在为 AI 代理提供统一、隔离和可扩展的执行环境。基于 Debian 构建,它提供会话级环境隔离、跨多个会话的持久状态管理以及实时可视化功能。
### 1.1 特性
- **会话级环境隔离**:每个 MCP 会话在其独立的隔离环境中运行
- **多会话状态持久化**:在多个 MCP 会话之间维护环境状态
- **实时 UI 可视化**:Agent MCP 操作的实时监控和可视化
- **分布式架构**:支持本地 Docker 和 Kubernetes 集群部署
- **可扩展运行时**:模块化设计,支持无缝集成新的 MCP 工具服务器
## 2. 快速开始
本项目支持本地 Docker 部署(适用于演示和调试)和 Kubernetes 集群部署(推荐用于生产和强化学习训练)。
### 2.1 本地 Docker 部署
#### 前置要求
确保 Docker 和 Docker Compose 已正确安装并正常运行:
```bash
# 验证 Docker 安装
docker --version
docker compose --version
# 验证 Docker 守护进程是否运行
docker ps
docker compose ps
```
**步骤 1:配置环境并准备 Gaia 数据集**
1. 复制环境模板并配置您的设置:
```bash
cp ./gaia-mcp-server/mcp_servers/.env_template ./gaia-mcp-server/mcp_servers/.env
```
编辑 `./gaia-mcp-server/mcp_servers/.env` 文件,填入您的具体配置值。
2. 从 Hugging Face 下载 [gaia_dataset](https://huggingface.co/datasets/gaia-benchmark/GAIA) 并放置到 `./gaia-mcp-server/docker/gaia_dataset`
**步骤 2:启动 VirtualPC MCP Server**
```bash
sh run-docker.sh
```
监控终端输出,查看启动过程中是否有任何错误。
生成本地 Bearer token,并将打印出的值复制到下面的 ``。如果你修改了 `virtualpc-mcp/docker-compose.yaml` 中的 `MCP_GATEWAY_TOKEN_SECRET`,请在运行此命令前导出相同的值。
```bash
python - <<'PY'
import base64, hashlib, hmac, json, os, time
def part(value):
raw = json.dumps(value, separators=(",", ":")).encode()
return base64.urlsafe_b64encode(raw).rstrip(b"=").decode()
signing_input = ".".join([
part({"alg": "HS256", "typ": "JWT"}),
part({"app": "local_debug", "version": 1, "time": time.time()}),
])
secret = os.getenv("MCP_GATEWAY_TOKEN_SECRET", "123321").encode()
signature = hmac.new(secret, signing_input.encode(), hashlib.sha256).digest()
print(f"{signing_input}.{base64.urlsafe_b64encode(signature).rstrip(b'=').decode()}")
PY
```
**步骤 3:连接到 VirtualPC MCP Server**
使用以下配置连接到 VirtualPC MCP Server:
```json
{
"virtualpc-mcp-server": {
"type": "streamable-http",
"url": "http://localhost:8000/mcp",
"headers": {
"Authorization": "Bearer ",
"MCP_SERVERS": "readweb-server,browser-server"
},
"timeout": 6000,
"sse_read_timeout": 6000,
"client_session_timeout_seconds": 6000
}
}
```
**注意**:上述 Bearer token 仅用于本地测试。`MCP_SERVERS` 头部指定了当前连接的 MCP 服务器范围,应该是 `gaia-mcp-server/mcp_servers/mcp_config.py` 中定义的服务器名称的子集。
### 2.2 Kubernetes 集群部署
对于生产部署和强化学习训练场景,推荐使用 Kubernetes 集群部署。详细说明将在后续更新中提供。
## 3. 开发
### 3.1 向 VirtualPC MCP Server 添加自定义 MCP 工具
**步骤 1:开发 MCP 工具(可选)**
如果您需要开发自定义 MCP 工具并将其注册到 VirtualPC MCP Server,请在 `gaia-mcp-server/mcp_servers` 下创建您的 MCP 工具项目目录并实现 MCP 工具代码。参考 [hello_world](./gaia-mcp-server/mcp_servers/hello_world/) 目录的项目结构。
项目规范:
1. 使用 `pyproject.toml` 管理项目依赖,用于 Docker 镜像构建
**步骤 2:注册 MCP 工具**
将您开发的 MCP 工具或第三方 MCP 工具注册到 VirtualPC MCP Server。
编辑 [MCP 工具注册文件](./gaia-mcp-server/mcp_servers/mcp_config.py):
```python
"STDIO_SERVER_DEMO": {
"type": "stdio",
"command": "python",
"args": ["-m", "hello_world.main"],
"cwd": "hello_world",
},
"{SSE/STREAMABLE-HTTP_SERVER_NAME}": {
"type": "sse/streamable-http",
"url": "{URL for sse/streamable-http mcp server}",
"headers": {
"Authorization": f"Bearer {token}"
}
},
```
**步骤 3:更新 MCP 工具模式**
> **重要**:VirtualPC MCP Server 使用预生成的工具模式数据用于 `list_tools()` 函数,因此您必须在修改 MCP 服务器配置后更新 [mcp_tool_schema.json](./gaia-mcp-server/mcp_servers/mcp_tool_schema.json)。
我们提供了一个 Python 脚本 [build_mcp_tool_schema.py](./gaia-mcp-server/mcp_servers/build_mcp_tool_schema.py) 来更新 `mcp_tool_schema.json`。在执行此脚本之前,请确保 MCP 服务器 [.env](./gaia-mcp-server/mcp_servers/.env) 文件已正确配置。
```bash
cd ./gaia-mcp-server/mcp_servers/
pip install mcp
python build_mcp_tool_schema.py
```
**步骤 4:构建 Docker 镜像并部署服务**
完成上述步骤后,构建 Docker 镜像并部署服务。
## 4. 贡献
我们欢迎社区的贡献!请参考我们的贡献指南:
- 代码风格和标准
- 拉取请求流程
- 问题报告
- 开发设置说明
## 5. 参考资料
### 致谢
- **Magentic-UI 项目**:我们已整合来自 [magentic-ui](https://github.com/microsoft/magentic-ui) 项目的 Docker Browser 源代码。特别感谢 magentic-ui 项目团队的出色工作。
### 相关项目
- [模型上下文协议 (MCP)](https://modelcontextprotocol.io/)
- [Magentic-UI](https://github.com/microsoft/magentic-ui)
- [Debian](https://www.debian.org/)
---
**VirtualPC MCP Server** - 为 AI Agent 提供强大、可扩展的运行时环境
[license-image]: https://img.shields.io/badge/License-MIT-yellow.svg
[license-url]: https://opensource.org/licenses/MIT