项目简介

Spiceflow 是一个高性能、类型安全的API框架,专注于使用现代Web标准构建Web服务。它提供了强大的路由、验证、OpenAPI生成、RPC客户端生成等功能。其核心优势在于对Model Context Protocol (MCP) 的原生支持,使得开发者能够便捷地将传统的API接口暴露为大型语言模型(LLM)可以调用的工具和上下文资源。

主要功能点

  • 类型安全API构建: 基于Zod实现类型安全的Schema验证,支持生成RPC客户端,确保开发过程中的数据一致性和可靠性。
  • OpenAPI规范自动生成: 能够根据路由配置自动生成OpenAPI规范,极大地简化了API文档的维护工作,方便集成第三方工具。
  • LLM集成 (MCP支持): 提供MCP插件,将API路由自动转换为LLM可调用的工具和资源,支持SSE流式通信,实现了与LLM应用的无缝对接。
  • 高性能与异步处理: 使用Web标准进行请求和响应处理,内置对异步生成器的支持,可方便地实现Server-Sent Events (SSE) 等流式服务。
  • 模块化与可扩展性: 支持子应用挂载('.use()')以构建大型复杂应用,提供基础路径配置、灵活的中间件和错误处理机制。

安装步骤

安装Spiceflow及其依赖'zod'(用于Schema验证)非常简单,通过npm执行以下命令即可:

npm install spiceflow zod

服务器配置

Spiceflow通过其'mcp()'插件将您的API暴露为MCP服务器。MCP客户端需要以下配置信息来连接到Spiceflow MCP服务器:

{
  "serverName": "spiceflow-mcp-server",
  "command": "node",
  "args": ["your_server_file.js"],
  "port": 3000,
  "mcpPath": "/mcp",
  "description": "通过Spiceflow框架提供的MCP插件暴露的API服务。"
}

配置参数说明:

  • 'serverName': 您MCP服务器的标识名称,例如 "spiceflow-mcp-server"。
  • 'command': 启动您的Spiceflow应用所需的命令,例如 "node"。
  • 'args': 启动命令的参数,通常是您的服务器入口文件,例如 '["your_server_file.js"]'。
    • 注意: 'your_server_file.js' 是指您实际启动Spiceflow应用的文件路径。
  • 'port': Spiceflow服务器监听的端口号,例如 '3000'。
  • 'mcpPath': MCP插件挂载的路径,默认是 '/mcp'。MCP客户端将通过 'http://localhost:<port>/mcp' 连接到MCP传输层。
  • 'description': 对该MCP服务器的简要描述。

基本使用方法

以下是一个简单的Spiceflow应用,展示了如何定义路由并集成MCP插件:

  1. 创建服务器文件 ('your_server_file.js'):

    import { Spiceflow } from 'spiceflow';
    import { mcp } from 'spiceflow/mcp'; // 导入MCP插件
    
    // 创建一个Spiceflow应用实例
    const app = new Spiceflow()
      // 挂载MCP插件,这将自动为LLM暴露API路由为工具和资源
      .use(mcp({ path: '/mcp' })) // 指定MCP端点路径,默认为/mcp
    
      // 定义一个简单的GET路由,它将被LLM视为一个工具或资源
      .route({
        method: 'GET',
        path: '/hello',
        handler() {
          return 'Hello, LLM World!';
        },
      })
      // 定义一个带参数的GET路由
      .route({
        method: 'GET',
        path: '/users/:id',
        handler({ params }) {
          return { userId: params.id, name: 'User ${params.id}' };
        },
      })
      // 定义一个POST路由,它也将被LLM视为一个工具
      .route({
        method: 'POST',
        path: '/echo',
        async handler({ request }) {
          const body = await request.json();
          return { received: body };
        },
      });
    
    // 启动服务器
    app.listen(3000, '0.0.0.0', () => {
      console.log('Spiceflow server listening on http://localhost:3000');
      console.log('MCP endpoint available at http://localhost:3000/mcp');
    });
  2. 运行服务器: 打开终端并执行:

    node your_server_file.js

    服务器启动后,您将在控制台看到监听地址和MCP端点信息。此时,MCP客户端即可通过'http://localhost:3000/mcp'连接并与您的Spiceflow API进行交互。

信息

分类

开发者工具