项目简介
Wassette是一个基于Model Context Protocol (MCP) 构建的后端服务,专注于以安全、可重用和便捷的方式为AI代理(如GitHub Copilot、Cursor等)提供外部功能。它通过运行WebAssembly (Wasm) 组件来扩展AI代理的能力,为每个工具提供浏览器级别的安全沙盒隔离和细粒度权限控制,从而实现LLM应用的安全、可扩展的上下文服务。
主要功能点
- WebAssembly组件托管与执行: 允许AI代理动态加载、卸载和执行WebAssembly组件,这些组件被Wassette转换为标准化工具暴露给LLM。
- 安全沙盒隔离: 每个Wasm组件都在独立的沙盒环境中运行,确保工具间的隔离性和安全性,防止恶意操作。
- 细粒度权限管理: 支持对组件的存储、网络和环境变量等权限进行增量授权、撤销和重置,以增强运行时安全性,并确保工具只访问其所需的资源。
- 标准化工具接口: Wassette会自动将Wasm组件的导出函数转换为符合MCP规范的工具接口,简化LLM的调用过程。
- 多种传输协议支持: 通过JSON-RPC协议与MCP客户端通信,支持标准输入/输出 (Stdio)、Server-Sent Events (SSE) 和 WebSocket 等多种传输方式,适应不同的部署环境。
安装步骤
Wassette提供多种安装方式,您可以根据自己的操作系统选择最便捷的一种:
-
Linux/macOS (推荐安装脚本): 打开终端,运行以下命令:
curl -fsSL https://raw.githubusercontent.com/microsoft/wassette/main/install.sh | bash这个脚本会自动检测您的平台,并将最新版本的 'wassette' 二进制文件安装到您的系统路径 ('$PATH') 中。
-
macOS/Linux (通过Homebrew): 如果您是Homebrew用户,可以通过以下命令安装:
brew install wassette -
Windows (通过WinGet): Windows用户可以通过WinGet包管理器安装:
winget install --id Microsoft.Wassette -
手动安装: 您也可以直接从Wassette的GitHub Releases页面下载对应您操作系统的最新二进制文件,并手动将其添加到系统的 '$PATH' 环境变量中。
服务器配置 (MCP客户端使用)
Wassette作为MCP服务器,需要被您的MCP客户端(例如Visual Studio Code中的GitHub Copilot)识别和连接。以下是配置Wassette服务器所需的JSON信息,您需要将这些信息添加到您的MCP客户端中:
-
在Visual Studio Code中添加 (通过徽章): 访问Wassette GitHub仓库的README页面,点击“Install in VS Code”或“Install in VS Code Insiders”徽章,VS Code将自动完成服务器的配置。
-
在Visual Studio Code中添加 (通过命令行): 如果您更倾向于使用命令行,可以在VS Code终端中运行以下命令:
- Bash/Zsh (Linux/macOS):
code --add-mcp '{"name":"Wassette","command":"wassette","args":["serve","--stdio"]}' - PowerShell (Windows):
code --% --add-mcp "{\"name\":\"wassette\",\"command\":\"wassette\",\"args\":[\"serve\",\"--stdio\"]}"
- Bash/Zsh (Linux/macOS):
-
配置信息说明:
- 'name': 服务器的显示名称,例如 "Wassette"。这是客户端界面中识别该服务器的名称。
- 'command': 启动Wassette服务器的可执行文件命令,例如 "wassette"。请确保该命令在您的系统路径中可执行。
- 'args': 传递给启动命令的参数列表,例如 '["serve", "--stdio"]'。其中 '"serve"' 指示Wassette以服务器模式运行,'"--stdio"' 表示通过标准输入/输出流与客户端进行通信,这是最常见的连接方式。Wassette也支持 '"--sse"' (Server-Sent Events) 和 '"--websocket"' 模式,但通常通过代理或特定客户端配置。
基本使用方法
一旦Wassette MCP服务器在您的AI代理中成功注册并启动,您就可以通过AI代理与它进行交互,利用其托管的WebAssembly组件扩展能力:
-
加载Wasm组件 (工具): 在您的AI代理聊天窗口中,指示代理加载一个Wasm组件。例如,加载一个可以获取当前时间的组件: 'Please load the time component from oci://ghcr.io/yoshuawuyts/time:latest' Wassette将从指定的OCI注册表下载、编译并加载该组件,使其功能可供AI代理作为工具调用。
-
调用加载的工具: 一旦组件加载完成,您可以直接在AI代理的聊天中调用其暴露的工具。例如,询问当前时间: 'What is the current time?' AI代理将通过Wassette服务器调用时间组件的 'get-current-time' 函数,并返回当前时间。
-
管理组件权限: Wassette提供了强大的权限管理机制,可以为每个组件设定细粒度的访问权限。例如,如果您希望允许一个文件系统组件访问您机器上的某个特定目录: 'Please grant the filesystem component read access to the directory at fs:///my/data.' Wassette提供了一系列内置工具(如 'grant-storage-permission'、'grant-network-permission'、'grant-environment-variable-permission'、'revoke-storage-permission'、'reset-permission' 等),LLM客户端可以通过这些工具接口进行交互,动态调整组件的权限,从而安全地执行更复杂的操作。
信息
分类
AI与计算