本项目展示了如何结合使用 Google Genkit、Firebase (Cloud Run) 和 Model Context Protocol (MCP) 来构建 AI 应用后端。它包含了多个 AI 功能示例,并提供了一个 Genkit MCP 服务器的实现示例。

项目简介

该项目是使用 Firebase Cloud Run Functions (第二代) 和 Genkit 1.0 构建的 AI 应用示例。它提供了一系列 AI 相关功能,并通过集成 MCP 客户端和服务器示例来展示 Genkit 在更广泛 AI 应用生态中的应用。

主要功能点

  • 图像分析: 利用 Google AI 分析上传的图像内容。
  • 网页内容分析: 通过访问指定网址,提取并分析网页文本内容。
  • 聊天消息生成: 根据 Firestore 中存储的聊天记录,使用 Google AI 生成回复消息。
  • 图像生成: 调用 Vertex AI 的能力生成图像。
  • Google Maps 集成: 通过 Genkit 的 MCP 客户端功能,调用外部 Google Maps MCP 服务器提供的地图相关工具。
  • Genkit MCP 服务器示例: 包含一个使用 Genkit 实现 MCP 服务器的示例代码,用于向 MCP 客户端暴露 Genkit 配置的能力(模型、工具等)。

安装步骤

  1. 安装 Genkit CLI: 如果尚未安装,全局安装 Genkit 命令行工具。
    npm i -g genkit
  2. 安装项目依赖: 在项目根目录下运行命令安装所有必要的库。
    npm install
  3. 设置环境变量: 配置 Google Cloud 项目 ID、AI API 密钥等必要的环境变量。
    export GCLOUD_PROJECT="your-google-cloud-project-id"
    export GOOGLE_GENAI_API_KEY="your-api-key"
    export GENKIT_ENV="dev"
    export GOOGLE_MAPS_API_KEY="your-maps-api-key" # 如果需要使用地图功能则需要
  4. 启动 Genkit 模拟器 (开发用): 在本地运行 Genkit 模拟器进行开发和测试。
    npm start
  5. 构建项目: 由于 MCP 服务器示例代码通常需要编译后运行,执行构建命令。
    npm run build # 假设您的 package.json 中有构建脚本
  6. 运行 MCP 服务器示例: 编译完成后,您需要单独启动 MCP 服务器代码。根据代码结构 ('lib/mcp/server/genkit-mcp-server.js' 假设编译输出路径),可以使用 node 运行。
    node lib/mcp/server/genkit-mcp-server.js # 示例命令,请根据实际编译路径调整
    注意:此示例 MCP 服务器代码默认监听 3000 端口,并使用 SSE 协议。

服务器配置(供 MCP 客户端参考)

要让 MCP 客户端连接到基于此示例代码启动的 Genkit MCP 服务器,客户端需要配置服务器的连接信息。由于此示例服务器代码通过 HTTP/SSE 监听特定端口,典型的 MCP 客户端配置会通过指定服务器进程启动命令来实现(尽管通过网络连接是更常见的方式,但 MCP 客户端也可以通过启动进程并与其 Stdio 或其他通道通信)。

以下是一个示例的 MCP 客户端 'serverProcess' 配置,假设服务器代码已构建到 'lib/mcp/server/genkit-mcp-server.js' 并使用 Stdio 或兼容 'serverProcess' 的方式启动(请注意,此仓库示例代码默认使用 SSE/HTTP 监听 3000 端口,可能需要修改服务器代码以支持 Stdio 方式启动):

{
  "name": "genkitServer",
  "serverProcess": {
    "command": "node", // 用于启动服务器进程的命令
    "args": [
      "lib/mcp/server/genkit-mcp-server.js" // 服务器脚本路径,请根据实际情况修改
    ],
    "env": {
      // 启动服务器进程所需的环境变量
      "GCLOUD_PROJECT": "your-google-cloud-project-id",
      "GOOGLE_GENAI_API_KEY": "your-api-key",
      "GENKIT_ENV": "dev"
      // ... 其他需要的环境变量
    }
  },
  "transport": "stdio" // 假设使用 Stdio 传输协议,此示例代码默认使用 SSE
}

重要提示: 上述 JSON 配置是基于 MCP 客户端通过 'serverProcess' 启动服务器的模式。本项目中的 MCP 服务器示例代码 ('src/mcp/server/genkit-mcp-server.ts') 是一个 Express 应用,默认通过 HTTP/SSE 监听端口 3000。一个典型的 MCP 客户端要连接到这个 运行中的 服务器,通常会配置一个 SSE 或 HTTP 客户端传输方式,指向 'http://localhost:3000/sse' (如果服务器运行在本地)。实际客户端配置取决于客户端库对不同传输协议的支持方式。

基本使用方法

一旦 MCP 服务器示例代码运行起来,兼容的 MCP 客户端就可以连接到它,并通过 JSON-RPC 调用服务器暴露的能力。这些能力包括:

  • 使用配置的模型: 客户端可以请求服务器使用 Genkit 配置的模型(如 Gemini)进行文本生成等任务。
  • 调用暴露的工具: 客户端可以发现并调用服务器集成的工具(如 'webLoader' 或 'getCurrentTime',如果它们被 Genkit 实例加载并由 MCP 服务器暴露)。
  • 利用 Prompt 模板: 虽然 Prompt 模板通常在服务器端定义并在模型调用时使用,但服务器会根据客户端的请求利用这些模板进行处理。

例如,一个 MCP 客户端可以发送一个 JSON-RPC 请求来调用 'webLoader' 工具或请求模型生成文本,MCP 服务器会执行相应的操作并返回结果。

请参考 MCP 客户端库的文档,了解如何配置客户端连接到指定的地址、协议和启动命令,并如何发送 JSON-RPC 请求来与 MCP 服务器进行交互。

信息

分类

开发者工具