项目简介

'deco-create' 是一个快速构建AI驱动型应用的官方模板。它基于 Model Context Protocol (MCP) 设计,提供了一个 Cloudflare Workers 后端作为 MCP 服务器,并搭配一个现代 React 前端。该模板旨在帮助开发者轻松集成数千个外部API、数据库和AI服务,快速开发功能丰富的AI应用。

主要功能点

  • MCP 服务器后端: 基于 Cloudflare Workers 运行,实现 MCP 协议,提供 AI 工具和数据访问功能。
  • 强大的 AI 工具: 能够创建智能工具,利用 AI 进行数据处理、分析和自动化,并支持与各种 AI 服务(如 OpenAI)的无缝集成。
  • 丰富的 API 集成: 通过 MCP 协议即时连接到数千个外部 API、数据库(如 SQLite、PostgreSQL)、AI 服务和业务工具。
  • 数据管理: 内置 SQLite 数据库,支持类型安全的 ORM (Drizzle ORM),便于存储用户数据和应用状态。
  • 会话与上下文管理: 提供会话管理、能力声明,并支持可定制的 LLM 交互模式。
  • 现代前端界面: 包含基于 React、Vite、Tailwind CSS 和 shadcn/ui 的前端,支持实时协作和美观的界面。
  • 便捷部署: 一键部署到 Cloudflare Workers,享受全球边缘分发。

安装步骤

  1. 安装 Node.js: 确保您的系统安装了 Node.js 22.0.0 或更高版本。
  2. 安装 Deco CLI: 按照 Deco 官方文档 的说明安装 Deco 命令行工具。
  3. 创建新 AI 应用: 打开终端,运行以下命令创建您的 AI 应用:
    npm create deco@latest my-ai-app
    然后进入项目目录:
    cd my-ai-app
  4. 配置应用: 运行配置命令:
    npm run configure
  5. 登录 Deco 账户: 使用 Deco CLI 登录您的账户,这是 OAuth 认证和集成管理所必需的:
    deco login
  6. 部署应用: 首次部署到 Cloudflare Workers 是为了正确设置应用程序:
    npm run deploy
  7. 启动开发服务器: 运行以下命令启动开发服务器,您可以在 'http://localhost:8787' 访问前端和 MCP 后端:
    npm run dev

MCP 服务器配置

该 MCP 服务器由 'deco-create' 项目的 Cloudflare Worker 提供。MCP 客户端通过 JSON-RPC 协议与此服务器通信。

典型的 MCP 客户端配置需要提供服务器的启动命令和参数。对于 'deco-create',当通过 'npm run dev' 启动时,服务器在本地 'http://localhost:8787' 运行。部署到 Cloudflare Workers 后,将获得一个唯一的 '.deco.page' 域名作为服务器地址。

MCP 客户端的配置通常是 JSON 格式,包含以下关键信息:

{
  "server_name": "Deco AI应用服务器",
  "command": "npm",
  "args": ["run", "dev"],
  "description": "本地开发环境下的Deco AI应用服务器,提供MCP协议的服务。",
  "notes": "在生产环境中,'command' 和 'args' 应替换为部署后的应用URL,例如 'https://your-app-slug.deco.page'。",
  "host": "http://localhost:8787" 
}
  • 'server_name': 给 MCP 服务器起一个易于识别的名称,方便在客户端界面中区分。
  • 'command': 启动 MCP 服务器的命令行主程序,例如 'npm'。
  • 'args': 启动命令的参数列表,例如 '["run", "dev"]'。
  • 'description': 对服务器功能的简要说明,帮助用户了解其用途。
  • 'notes': 额外说明,提示用户在生产环境中应如何获取真实的服务器地址。
  • 'host': MCP 服务器的访问地址。在本地开发时是 'http://localhost:8787',部署到 Cloudflare Workers 后将是类似 'your-app-slug.deco.page' 的域名。MCP 客户端将通过此地址与服务器建立连接。

基本使用方法

  1. 创建 AI 工具: 在 'server/tools/' 目录下定义新的 TypeScript 工具。例如,创建一个返回问候语的工具:
    // server/tools/my-tool.ts
    import { createPrivateTool } from "@deco/workers-runtime/mastra";
    import { z } from "zod"; // 用于定义输入/输出数据结构
    
    export const createHelloWorldTool = () =>
      createPrivateTool({
        id: "HELLO_WORLD", // 工具的唯一标识符
        description: "返回一个问候语", // 工具的描述,供 LLM 客户端理解其功能
        inputSchema: z.object({
          name: z.string().optional().default("世界"), // 定义输入参数,例如一个可选的名称
        }),
        outputSchema: z.object({
          message: z.string(), // 定义输出结果
        }),
        execute: async ({ context }) => {
          // 工具的执行逻辑
          return { message: '你好,${context.name}!' };
        },
      });
  2. 集成工具: 将新工具添加到 'server/tools/index.ts' 的 'tools' 数组中,以便服务器能够发现并注册它。
  3. 前端调用: 在 React 前端中,可以使用自动生成的 RPC 客户端('view/src/lib/rpc-logged.ts')调用这些工具,实现与 MCP 服务器的通信:
    import { client } from "@/lib/rpc-logged"; // 导入 MCP RPC 客户端
    
    async function callTool() {
      // 调用 HELLO_WORLD 工具,并传入参数
      const response = await client.HELLO_WORLD({ name: "MCP用户" });
      console.log(response.message); // 输出: 你好,MCP用户!
    }
    callTool();
  4. AI 集成: 利用 'env.AI_GATEWAY' 调用 AI 模型,例如在您自定义的工具中实现内容生成、数据分析等 AI 功能。
  5. 数据库操作: 使用内置的 Drizzle ORM 在工具中进行类型安全的数据库读写操作,实现数据持久化和管理。

信息

分类

开发者工具