mcpField
T
Tanzu Platform Chat: AI Chat Client for Cloud Foundry

Tanzu Platform Chat: AI Chat Client for Cloud Foundry

github.com/cpage-pivotal框架与 SDK2436 周前更新

关于 Tanzu Platform Chat: AI Chat Client for Cloud Foundry

Tanzu Platform Chat(cf-mcp-client)是基于 Spring AI 的聊天机器人应用,可部署到 Cloud Foundry 并使用平台 AI 服务。适合在 Cloud Foundry 环境中使用 LLM、向量数据库和 MCP 服务的团队。

主要功能

  1. 01部署到 Cloud Foundry 的 Spring 应用
  2. 02绑定 GenAI 服务的 LLM 聊天
  3. 03基于 Postgres 向量数据库的文档问答
  4. 04访问码与 SSO 两种认证方式
  5. 05支持 SSE 和 Streamable HTTP 的 MCP 服务

适用场景

  1. 01在 Cloud Foundry 上部署内部聊天助手
  2. 02基于上传的 PDF 文档进行问答
  3. 03让 LLM 调用已发布到服务市场的 MCP 服务

MCP 相关

作为 MCP 客户端,通过 cf cups 创建的用户提供服务或 Service Publisher 发布的服务绑定 MCP 服务器,LLM 可在回复时调用其能力。

详细介绍

Tanzu Platform Chat:面向 Cloud Foundry 的 AI 聊天客户端

概述

Tanzu Platform Chat(cf-mcp-client)是一款 Spring 聊天机器人应用,可部署到 Cloud Foundry,并使用平台 AI 服务。它基于 Spring AI 构建,可与大模型、向量数据库和 Model Context Protocol Agent 配合使用。

前提条件

  • Java 21 或更高版本
    • 例如,使用 sdkman 执行 sdk install java 21.0.7-oracle
  • Maven 3.8+
    • 例如,使用 sdkman 执行 sdk install maven
  • 可访问带有 GenAI tile 或其他大模型服务的 Cloud Foundry Foundation
  • 对 Cloud Foundry 环境具有开发者访问权限

部署到 Cloud Foundry

准备应用
  1. 为应用创建目录并进入该目录:
mkdir tanzu-platform-chat
cd tanzu-platform-chat
  1. 从 Releases page 下载最新的 JAR 文件和 manifest.yml 到此目录

  2. 在包含下载文件的目录中,将应用推送到 Cloud Foundry:

cf push
身份验证

访问此应用需要进行身份验证。提供两种身份验证方式:访问码和 SSO。两种方式可以同时使用。

访问码身份验证

默认情况下,应用受访问码保护。用户在登录页面输入访问码即可访问。

如果未设置 APP_AUTH_SECRET,访问码默认为 changeme。

要覆盖默认访问码,有两种方式:

选项 1:设置为环境变量

cf set-env ai-tool-chat APP_AUTH_SECRET my-secret-code
cf restart ai-tool-chat

选项 2:添加到 manifest.yml

将环境变量添加到 manifest.yml:

env:
  JBP_CONFIG_OPEN_JDK_JRE: '{ jre: { version: 21.+ } }'
  APP_AUTH_SECRET: ((APP_AUTH_SECRET))

然后在推送时提供该变量:

cf push --var APP_AUTH_SECRET=my-secret-code
SSO 身份验证(可选)

将 p-identity 服务绑定到应用后,系统会自动启用单点登录。登录页面会在访问码表单旁显示“使用 SSO 登录”按钮。

  1. 创建 SSO 服务实例:
cf create-service p-identity uaa my-sso
  1. 将服务绑定到应用:
cf bind-service ai-tool-chat my-sso
cf restart ai-tool-chat

系统会自动从 Cloud Foundry 服务绑定中检测 SSO 提供程序,无需额外配置。

绑定大语言模型(LLM)
  1. 创建一个提供聊天大模型功能的服务实例:
cf create-service genai [plan-name] chat-llm
  1. 将服务绑定到应用:
cf bind-service ai-tool-chat chat-llm
  1. 重启应用以应用绑定:
cf restart ai-tool-chat

现在,聊天机器人将使用大模型响应聊天请求。

绑定模型

绑定向量数据库
  1. 创建一个提供嵌入大模型功能的服务实例
cf create-service genai [plan-name] embeddings-llm 
  1. 创建一个用作向量数据库的 Postgres 服务实例
cf create-service postgres on-demand-postgres-db vector-db
  1. 将这些服务绑定到应用
cf bind-service ai-tool-chat embeddings-llm 
cf bind-service ai-tool-chat vector-db
  1. 重启应用以应用绑定:
cf restart ai-tool-chat
  1. 点击屏幕右侧的文档工具,然后上传一个 .PDF 文件

上传文件

现在,聊天机器人会回答有关已上传文档的问题。

向量数据库

绑定 MCP Agent

Model Context Protocol(MCP)服务是轻量级程序,可通过标准化接口向 AI 模型提供特定功能。这些服务充当大模型与外部工具、数据源或服务之间的桥梁,使 AI 应用能够执行搜索数据库、访问文件或调用外部 API 等操作,而无需复杂的自定义集成。

方法 1:使用用户提供的服务
SSE 协议(服务器发送事件)
  1. 使用 mcpSseURL 标签,为基于 SSE 的 MCP 服务创建用户提供的服务:
cf cups mcp-server-sse -p '{"uri":"https://your-sse-mcp-server.example.com"}' -t "mcpSseURL"
  1. 将 MCP 服务绑定到应用:
cf bind-service ai-tool-chat mcp-server-sse
Streamable HTTP 协议
  1. 使用 mcpStreamableURL 标签,为基于 Streamable HTTP 的 MCP 服务创建用户提供的服务:
cf cups mcp-server-streamable -p '{"uri":"https://your-streamable-mcp-server.example.com"}' -t "mcpStreamableURL"
  1. 将 MCP 服务绑定到应用:
cf bind-service ai-tool-chat mcp-server-streamable
方法 2:使用 Service Publisher 提供的服务

Service Publisher 磁贴 的常见用例是发布 MCP 服务,并使其在 Tanzu Platform 服务市场中可用。服务绑定将包含一个 API Key 和 URI,以便更安全地配置对 MCP 服务的访问权限。应用程序会在向 MCP 服务发送请求时附加 API Key。

已发布的服务会在市场中显示,并拥有各自的服务代理和计划选项。

SSE 协议(服务器发送事件)
  1. 使用 mcpSseURL 标记,从已发布的服务代理创建一个基于 SSE 的 MCP 服务:
cf create-service your-published-service service-plan mcp-server-sse -t "mcpSseURL"
  1. 将 MCP 服务绑定到应用程序:
cf bind-service ai-tool-chat mcp-server-sse
Streamable HTTP 协议
  1. 使用 mcpStreamableURL 标记,从已发布的服务代理创建一个基于 Streamable HTTP 的 MCP 服务:
cf create-service your-published-service service-plan mcp-server-streamable -t "mcpStreamableURL"
  1. 将 MCP 服务绑定到应用程序:
cf bind-service ai-tool-chat mcp-server-streamable
完成设置
  1. 重启应用程序以应用绑定:
cf restart ai-tool-chat

现在,你的聊天机器人将注册到 MCP Agent,大模型便可以在响应聊天请求时调用这些 Agent 的能力。应用程序同时支持 SSE 和 Streamable HTTP 协议。

绑定到 Agent

绑定到 A2A Agent

Agent2Agent(A2A)是一种协议,可让独立的 AI Agent 系统彼此通信。与提供大模型可调用工具的 MCP 服务不同,A2A Agent 是能够处理消息并返回自身智能响应的独立 AI 系统。可以将 MCP 看作是为聊天机器人提供可用工具,而 A2A 则让聊天机器人能够向其他专业 AI Agent 征询意见。

主要区别:MCP 与 A2A
  • MCP 服务:提供工具和数据源,供大模型在生成响应时调用
  • A2A Agent:可直接向其发送消息并接收完整响应的独立 AI Agent
绑定 A2A Agent
  1. 使用 a2a 标记,为 A2A Agent 创建用户提供的服务:
cf cups a2a-agent -p '{"uri":"https://your-a2a-agent.example.com/.well-known/agent.json"}' -t "a2a"

URI 应指向 Agent 的 Agent Card(位于 /.well-known/agent.json 的 JSON 描述文件)。

  1. 将 A2A 服务绑定到应用程序:
cf bind-service ai-tool-chat a2a-agent
  1. 重启应用程序以应用绑定:
cf restart ai-tool-chat
使用 A2A Agent

绑定 A2A Agent 后:

  1. 点击导航栏上的 Agents 按钮(🤖)
  2. Agents 面板会显示所有已连接的 A2A Agent,以及以下信息:
    • 名称、描述和版本
    • 健康状态(正常/异常)
    • 能力(流式传输、推送通知、状态历史记录)
  3. 点击任一健康 Agent 上的“Send Message”
  4. 在对话框中输入消息,然后点击“Send”
  5. Agent 的响应会以独特的视觉样式显示在聊天中

Agent 消息的显示内容包括:

  • 机器人图标(🤖)和 Agent 名称标题
  • 第三级配色方案(与大模型的响应不同)
  • 清楚标明响应来自哪个 Agent

你可以同时绑定多个 A2A Agent,每个 Agent 都能提供专门的能力。Agents 面板会显示每个 Agent 的健康状态,导航按钮则会根据 Agent 的整体健康状况显示状态指示灯(绿色/橙色/红色)。

使用向量存储实现对话记忆

如果你绑定了向量数据库和嵌入模型,那么聊天记忆会在应用程序重启和扩缩容后继续保留。

  1. 按照上文绑定到向量数据库中的说明操作

绑定到记忆

免责声明

本仓库是一个非官方项目,按“原样”提供。任何组织均未对其提供支持或认可,也不对其功能提供任何保证或担保。使用风险由你自行承担。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。