项目简介
NanoAgent 是一个轻量级的 TypeScript 微框架,专注于构建 LLM (大型语言模型) 驱动的智能代理。它实现了代理的核心控制循环,并将复杂的任务(如数据检索、外部功能调用)委托给符合 Model Context Protocol (MCP) 的外部服务。'serveMCP' 是 NanoAgent 提供的一个微型 MCP 服务器组件,专门用于托管和提供工具服务。
主要功能点
- 工具托管: 允许您将使用 NanoAgent 定义的工具(Tool Handlers)注册并托管为一个独立的服务。
- 工具发现: 客户端可以通过标准接口查询服务器上可用的工具及其定义。
- 工具执行: LLM 客户端可以通过远程调用接口请求服务器执行托管的工具,并获取执行结果及可能的内存更新。
- HTTP 协议: 该服务器通过 HTTP 提供服务,客户端通过 HTTP 请求与服务器通信。
安装步骤
要使用 NanoAgent,您需要 Node.js 环境(推荐使用 Bun 运行时以获得更好性能)。
-
确保您已安装 Node.js 或 Bun。
-
在您的项目目录中,使用以下命令安装 NanoAgent 包:
# 使用 Bun bun add nanoagent # 或者使用 npm npm install nanoagent # 或者使用 pnpm pnpm add nanoagent # 或者使用 yarn yarn add nanoagent
服务器配置
NanoAgent 的 MCP 服务器 ('serveMCP') 通常在一个独立的脚本中启动。它接收一个工具注册器(ToolRegistry)和端口号作为参数。
例如,一个简单的服务器启动脚本可能如下所示:
import { ToolRegistry, serveMCP, tool, content } from "nanoagent"; const myTools = { myEchoTool: tool( "my_echo", "Echoes the input text.", { type: "object", properties: { text: { type: "string" } }, required: ["text"] }, async ({ text }) => content('Echo from server: ${text}') ), }; serveMCP(new ToolRegistry(myTools), 3123); // 启动服务器在端口 3123
对于连接到此服务器的 MCP 客户端,通常需要在其配置文件中提供服务器的连接信息。请注意,此实现使用 HTTP 协议,而非标准的 MCP Stdio 协议,客户端需要能够通过 HTTP 与 '/v1/tools' (GET) 和 '/v1/tool-call' (POST) 接口通信。
一个 MCP 客户端配置示例(非代码,仅描述所需信息):
{ "serverName": "我的 NanoAgent 工具服务", // 服务的友好名称 "description": "通过 HTTP 提供 NanoAgent 工具调用", // 服务的描述 "connectionType": "http", // 连接类型指示使用 HTTP "url": "http://localhost:3123" // 服务器运行的地址和端口 // 注意:此配置不包含 'command' 和 'args',因为这是一个独立运行的 HTTP 服务器, // 客户端通常直接连接到其 URL,而不是由客户端进程启动 }
您的 MCP 客户端需要解析此类配置并使用 HTTP 请求与服务器的 '/v1/tools' 路径(用于列出工具)和 '/v1/tool-call' 路径(用于调用工具)进行交互。
基本使用方法
- 定义工具: 使用 NanoAgent 的 'tool' 函数创建工具处理函数和元数据。
- 注册工具: 将定义好的工具添加到 'ToolRegistry' 实例中。
- 启动服务器: 调用 'serveMCP' 函数,传入 'ToolRegistry' 实例和希望服务器监听的端口号。
- 客户端连接: 在您的 LLM 客户端应用中,使用支持连接到此类 HTTP MCP 服务器的功能(例如 NanoAgent 自带的 'MCPClient')连接到服务器的 URL。
- 客户端使用工具: 客户端发现服务器上的工具后,可以在需要时通过服务器远程调用这些工具。
信息
分类
AI与计算