本项目展示了如何结合使用 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 配置的能力(模型、工具等)。
安装步骤
- 安装 Genkit CLI: 如果尚未安装,全局安装 Genkit 命令行工具。
npm i -g genkit - 安装项目依赖: 在项目根目录下运行命令安装所有必要的库。
npm install - 设置环境变量: 配置 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" # 如果需要使用地图功能则需要 - 启动 Genkit 模拟器 (开发用): 在本地运行 Genkit 模拟器进行开发和测试。
npm start - 构建项目: 由于 MCP 服务器示例代码通常需要编译后运行,执行构建命令。
npm run build # 假设您的 package.json 中有构建脚本 - 运行 MCP 服务器示例: 编译完成后,您需要单独启动 MCP 服务器代码。根据代码结构 ('lib/mcp/server/genkit-mcp-server.js' 假设编译输出路径),可以使用 node 运行。
注意:此示例 MCP 服务器代码默认监听 3000 端口,并使用 SSE 协议。node lib/mcp/server/genkit-mcp-server.js # 示例命令,请根据实际编译路径调整
服务器配置(供 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 服务器进行交互。
信息
分类
开发者工具