项目简介
'wasmcp' 是一个用于开发和组合Model Context Protocol (MCP) 服务器的WebAssembly组件开发套件。它允许开发者使用Rust、Python、TypeScript等多种语言编写MCP工具、资源或提示处理器,然后将这些功能组件与预构建的传输层(如HTTP或Stdio)和核心中间件组合成一个独立的、高效的WebAssembly MCP服务器。该服务器以可组合、沙盒化、轻量级的方式为LLM应用提供上下文服务。
主要功能点
- 多语言支持: 允许开发者使用Rust、Python、TypeScript等流行语言编写自定义的MCP功能组件。
- 组件化架构: MCP服务器被设计为一系列可插拔的WebAssembly组件,通过责任链模式(middleware chain)进行组合,每个组件处理特定的MCP方法并委托其他请求。
- 多种传输协议: 内置HTTP/SSE和Stdio传输层,方便与各种MCP客户端进行通信。
- 工具管理: 能够托管和执行LLM可调用的外部工具,支持工具列表查询和调用。
- 资源管理: 支持托管和管理上下文资源,提供数据访问能力。
- Prompt模板: 支持定义和渲染可定制的Prompt模板,用于生成LLM交互内容。
- 能力声明: 服务器能够向客户端声明其支持的功能(如工具、资源、提示、补全等)。
- 轻量高效: WebAssembly组件的特性使得生成的服务器体积小巧,启动快速,运行隔离。
安装步骤
- 安装 Rust (Cargo): 如果尚未安装,请通过 'rustup' 安装Rust编程语言及其包管理器Cargo。
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh - 安装 'wasmcp' CLI: 使用Cargo安装 'wasmcp' 命令行工具。
cargo install --git https://github.com/wasmcp/wasmcp - 安装 Wasmtime 运行时: 'wasmcp' 生成的WebAssembly组件需要Wasmtime运行时来执行。
确保 'wasmtime' 命令在您的PATH中可用。# 请根据您的操作系统访问 https://wasmtime.dev/ 下载或使用其官方指南安装 # 例如 (Linux/macOS): curl https://wasmtime.dev/install.sh -sSf | bash
服务器配置
MCP客户端与MCP服务器通过JSON-RPC通信。客户端需要知道如何启动MCP服务器及其参数。MCP服务器可以作为命令行程序(Stdio传输)或HTTP服务(HTTP传输)运行。
以下是两种常见传输模式下,MCP客户端可能需要配置的服务器启动命令的描述(JSON配置示例仅用于说明结构,不应直接复制)。
-
Stdio 传输模式 (命令行应用程序) 当MCP服务器配置为Stdio传输时,它将作为一个标准的命令行程序运行,通过其标准输入/输出与MCP客户端通信。
- 配置信息:
- 'server_name': 用于客户端界面显示的服务名称,例如 "My MCP Stdio Server"。
- 'command': 启动MCP服务器所需的可执行文件,通常是 'wasmtime'。
- 'args': 传递给 'command' 的参数列表。例如,'["run", "/path/to/your/stdio-server.wasm"]',其中 'run' 是 'wasmtime' 的子命令,'/path/to/your/stdio-server.wasm' 是您使用 'wasmcp compose -t stdio' 命令生成的WebAssembly MCP服务器组件的完整路径。
- 配置信息:
-
HTTP 传输模式 (Web服务) 当MCP服务器配置为HTTP传输时,它将监听一个HTTP端口,并通过HTTP POST请求接收JSON-RPC调用,通过Server-Sent Events (SSE) 发送响应和通知。
- 配置信息:
- 'server_name': 用于客户端界面显示的服务名称,例如 "My MCP HTTP Server"。
- 'command': 启动MCP服务器所需的可执行文件,通常是 'wasmtime'。
- 'args': 传递给 'command' 的参数列表。例如,'["serve", "-Scli", "/path/to/your/http-server.wasm"]',其中 'serve' 是 'wasmtime' 的子命令,'-Scli' 启用WASI CLI接口,'/path/to/your/http-server.wasm' 是您使用 'wasmcp compose -t http' 命令生成的WebAssembly MCP服务器组件的完整路径。
- 'env' (可选): 环境变量,例如 '{"PORT": "8080"}' 用于指定服务器监听的端口。
- 'url': MCP客户端连接到服务器的URL,例如 '"http://127.0.0.1:8080/"'。默认情况下,'wasmtime serve' 监听 'http://0.0.0.0:8080/'。
- 配置信息:
基本使用方法
- 创建新的MCP功能组件 (例如,一个Python工具):
wasmcp new my-tools --language python cd my-tools # 在 app.py 文件中,您可以添加或修改您的MCP工具逻辑,例如实现一个字符串反转工具。 - 构建您的组件:
make # 这个命令会根据您在 'new' 步骤中选择的语言,构建出一个WebAssembly组件文件,例如 'my-tools.wasm'。 - 组合成一个完整的MCP服务器:
假设您想创建一个HTTP服务器,并包含您刚刚制作的 'my-tools.wasm' 组件。
您也可以组合多个功能组件。这些组件将自动形成一个中间件链,其提供的工具、资源和提示将自动合并并暴露给客户端。wasmcp compose my-tools.wasm -t http -o http-server.wasm# 假设您还有一个 Rust 编写的 calculator-tools.wasm wasmcp compose my-tools.wasm ../calculator-tools.wasm -t stdio -o stdio-server.wasm - 运行MCP服务器:
- 作为HTTP服务器运行:
wasmtime serve -Scli http-server.wasm # 服务器默认监听 http://0.0.0.0:8080/ - 作为Stdio服务器运行:
wasmtime run stdio-server.wasm
- 作为HTTP服务器运行:
信息
分类
开发者工具