项目简介
Conduit 是一个创新的应用,它将 Model Context Protocol (MCP) 服务器和客户端直接运行在用户的浏览器中。通过结合 Web Worker 作为 MCP 通信传输层、File System Access API 提供的本地文件系统访问能力,以及 Rust 编译为 WASM 实现的核心逻辑,Conduit 使得 AI 代理能够在不安装任何原生应用或无需逐文件上传的情况下,直接在浏览器中安全地操作用户本地文件。服务器在专用 Web Worker 中运行,确保不阻塞用户界面,并且其客户端可以通过添加更多工具来扩展功能。
主要功能点
- 浏览器内运行的MCP服务器: 在 Web Worker 中运行 MCP 服务器,提供标准化的 JSON-RPC 接口供 LLM 客户端调用。
- 本地文件系统访问: 利用 File System Access API 实现对用户本地文件的直接读取、搜索和编辑能力,无需云端同步。
- Rust + WASM 核心: 核心文件系统操作逻辑(如文件索引、正则表达式搜索、替换等)由 Rust 实现并编译为 WebAssembly,提供高性能和安全性。
- 工具与资源管理: 作为 MCP 服务器,它能够注册和执行多种工具(例如文件搜索、编辑工具),并管理本地文件作为可供 LLM 访问的资源。
- 可扩展性: 客户端可轻松扩展,集成更多工具以提供更广泛的能力。
- 安全与隔离: 通过浏览器沙箱和 Web Worker 机制,确保代理对文件系统的操作是受控和隔离的。
安装步骤
Conduit 是一个 Web 应用,你可以直接访问在线版本 https://conduit.amrit.sh 进行体验。
如果你希望在本地进行开发或部署,需要安装以下先决条件:
- Rust (stable) + Cargo: Rust 编程语言及其包管理器。
- Node.js 18+ (npm 或 pnpm): JavaScript 运行时环境和包管理器。
- 'wasm32-unknown-unknown' target: Rust 的 WebAssembly 编译目标。
本地开发环境设置:
# 第一次设置 Rust WASM 目标 rustup target add wasm32-unknown-unknown # 克隆仓库 git clone https://github.com/abaveja313/conduit.git cd conduit # 安装 JavaScript 依赖 (选择一个) pnpm i || npm i # 构建 Rust crates cargo build -p conduit-core cargo build -p conduit-wasm --target wasm32-unknown-unknown --release # 启动开发应用 pnpm dev || npm run dev
之后,你可以在浏览器中访问相应的开发服务器地址。
服务器配置
MCP 客户端需要配置服务器才能建立连接。Conduit 服务器在浏览器环境中通过 Web Worker 启动,其配置信息通常由客户端在启动时提供,指向 Web Worker 脚本。
以下是一个假设的 MCP 客户端配置示例(JSON 格式),用于连接到 Conduit 服务器:
{ "serverName": "Conduit Browser Agent", "command": "webworker", "args": { "workerScriptPath": "/_next/static/chunks/worker.js", "initMessageType": "init", "readyMessageType": "ready" }, "description": "连接到在浏览器 Web Worker 中运行的 Conduit MCP服务器。该服务器允许AI代理安全地访问本地文件系统资源和工具。" }
参数注释:
- 'serverName': 服务器的名称,例如 "Conduit Browser Agent"。
- 'command': 指示 MCP 客户端使用 Web Worker 传输协议。
- 'args': 启动 Web Worker 所需的参数。
- 'workerScriptPath': Web Worker 脚本的相对路径。在 Next.js 构建的应用中,通常位于 '/_next/static/chunks/' 目录下。
- 'initMessageType': 客户端向 Worker 发送的初始化消息类型,例如 "init"。
- 'readyMessageType': Worker 成功初始化后向客户端发送的就绪消息类型,例如 "ready"。
- 'description': 服务器的简要描述。
请注意:实际的 'workerScriptPath' 可能因项目构建配置而异,上述路径是一个常见示例。
基本使用方法
一旦 Conduit 服务器在 Web Worker 中启动并连接到 MCP 客户端,LLM 客户端即可通过 JSON-RPC 调用服务器提供的工具和访问资源。
例如,LLM 可能会通过 MCP 客户端调用一个文件系统工具来:
- 扫描目录: 请求服务器扫描用户授权的本地目录,获取文件列表及其元数据。
- 读取文件内容: 指定文件路径,请求服务器读取文件的部分或全部内容。
- 搜索文件: 使用正则表达式或 glob 模式在文件内容或路径中进行搜索。
- 编辑文件: 执行查找和替换操作来修改文件内容(需要用户授权)。
这些操作的调用都是通过标准化的 JSON-RPC 请求完成,并由 Conduit 服务器的 Rust+WASM 核心处理。
示例调用 (逻辑概念,非实际代码): 假设有一个 'echo' 工具(已在代码中实现): LLM客户端发送 JSON-RPC 请求:
{ "jsonrpc": "2.0", "method": "tool/echo", "params": { "message": "Hello from LLM!", "repeat": 2 }, "id": 1 }
服务器执行操作并返回响应:
{ "jsonrpc": "2.0", "result": { "content": [ { "type": "text", "text": "{\"echoed\":\"Hello from LLM! Hello from LLM!\",\"count\":2}" } ] }, "id": 1 }
文件系统相关的工具逻辑在 'crates/conduit-core' 中,未来可能会在 'packages/server/src/mcp/tools' 中注册为可调用的 MCP 工具。
信息
分类
数据库与文件