项目简介

NanoAgent 是一个轻量级的 TypeScript 微框架,专注于构建 LLM (大型语言模型) 驱动的智能代理。它实现了代理的核心控制循环,并将复杂的任务(如数据检索、外部功能调用)委托给符合 Model Context Protocol (MCP) 的外部服务。'serveMCP' 是 NanoAgent 提供的一个微型 MCP 服务器组件,专门用于托管和提供工具服务。

主要功能点

  • 工具托管: 允许您将使用 NanoAgent 定义的工具(Tool Handlers)注册并托管为一个独立的服务。
  • 工具发现: 客户端可以通过标准接口查询服务器上可用的工具及其定义。
  • 工具执行: LLM 客户端可以通过远程调用接口请求服务器执行托管的工具,并获取执行结果及可能的内存更新。
  • HTTP 协议: 该服务器通过 HTTP 提供服务,客户端通过 HTTP 请求与服务器通信。

安装步骤

要使用 NanoAgent,您需要 Node.js 环境(推荐使用 Bun 运行时以获得更好性能)。

  1. 确保您已安装 Node.js 或 Bun。

  2. 在您的项目目录中,使用以下命令安装 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' 路径(用于调用工具)进行交互。

基本使用方法

  1. 定义工具: 使用 NanoAgent 的 'tool' 函数创建工具处理函数和元数据。
  2. 注册工具: 将定义好的工具添加到 'ToolRegistry' 实例中。
  3. 启动服务器: 调用 'serveMCP' 函数,传入 'ToolRegistry' 实例和希望服务器监听的端口号。
  4. 客户端连接: 在您的 LLM 客户端应用中,使用支持连接到此类 HTTP MCP 服务器的功能(例如 NanoAgent 自带的 'MCPClient')连接到服务器的 URL。
  5. 客户端使用工具: 客户端发现服务器上的工具后,可以在需要时通过服务器远程调用这些工具。

信息

分类

AI与计算