返回市场
MCP客户端

MCP客户端

作者:cpage-pivotal21 星标更新:2025-11-22

项目介绍

Tanzu 平台聊天:面向Cloud Foundry的AI聊天客户端

概述

Tanzu 平台聊天(cf-mcp-client)是一个可以部署到Cloud Foundry并消费平台AI服务的Spring聊天机器人应用程序。它使用Spring AI构建,并与大型语言模型(LLMs)、向量数据库以及模型上下文协议代理一起工作。

预备条件

  • Java 21或更高版本
    • 例如,使用sdkman sdk install java 21.0.7-oracle
  • Maven 3.8+
    • 例如,使用sdkman sdk install maven
  • 访问带有GenAI磁贴或其他LLM服务的Cloud Foundry基础架构
  • 对您的Cloud Foundry环境的开发者访问权限

部署到Cloud Foundry

准备应用程序

  1. 创建一个目录用于存放应用程序,并导航到该目录:
mkdir tanzu-platform-chat
cd tanzu-platform-chat
  1. 发布页面下载最新的JAR文件和manifest.yml到此目录

  2. 从包含已下载文件的目录推送应用程序到Cloud Foundry:

cf push

绑定到大型语言模型(LLMs)

  1. 创建一个提供聊天LLM能力的服务实例:
cf create-service genai [plan-name] chat-llm
  1. 将服务绑定到您的应用程序:
cf bind-service ai-tool-chat chat-llm
  1. 重启您的应用程序以应用绑定:
cf restart ai-tool-chat

现在,您的聊天机器人将使用LLM来响应聊天请求。

绑定到模型

绑定到向量数据库

  1. 创建一个提供嵌入式LLM能力的服务实例
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文件
<p> <img src="images/uploads.png" alt="上传文件" width="250"> </p>

现在,您的聊天机器人将对上传的文档进行查询并作出回应

向量数据库

绑定到MCP代理

模型上下文协议(MCP)服务器是轻量级程序,通过标准化接口向AI模型暴露特定的能力。这些服务器充当了LLMs与外部工具、数据源或服务之间的桥梁,使您的AI应用程序能够执行如搜索数据库、访问文件或调用外部API等操作,而无需复杂的自定义集成。

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

可流式传输HTTP协议

  1. 使用mcpStreamableURL标签创建一个基于可流式传输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

完成设置

  1. 重启您的应用程序以应用绑定:
cf restart ai-tool-chat

现在,您的聊天机器人将注册到MCP代理,LLM在响应聊天请求时可以调用代理的能力。应用程序同时支持SSE和可流式传输HTTP协议。

绑定到代理

绑定到A2A代理

Agent2Agent(A2A)是一种允许独立AI代理系统之间通信的协议。与提供您的LLM可以调用的工具的MCP服务器不同,A2A代理是独立的AI系统,可以直接处理消息并返回自己的智能响应。可以将MCP视为给您的聊天机器人提供工具,而A2A则让您的聊天机器人可以咨询其他专门的AI代理。

关键差异:MCP vs A2A

  • MCP服务器:提供您的LLM在生成响应过程中可以调用的工具和数据源
  • A2A代理:您可以直接发送消息并接收完整响应的独立AI代理

绑定一个A2A代理

  1. 使用a2a标签创建一个A2A代理的用户提供的服务:
cf cups a2a-agent -p '{"uri":"https://your-a2a-agent.example.com/.well-known/agent.json"}' -t "a2a"

URI应指向代理的代理卡(位于/.well-known/agent.json的JSON描述符)。

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

使用A2A代理

绑定A2A代理后:

  1. 单击导航栏中的代理按钮(🤖)
  2. 代理面板显示所有连接的A2A代理及其:
    • 名称、描述和版本
    • 健康状态(健康/不健康)
    • 能力(流式传输、推送通知、状态历史)
  3. 在任何健康的代理上点击“发送消息”
  4. 在对话框中输入您的消息并点击“发送”
  5. 代理的响应将以独特的视觉风格出现在聊天中

代理消息显示为:

  • 机器人图标(🤖)和代理名称头
  • 第三色系(不同于您的LLM响应)
  • 清晰的归属,显示哪个代理进行了响应

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

使用向量存储进行对话记忆

如果您已经绑定了向量数据库和嵌入模型,则您的聊天记忆将在应用程序重启和扩展时持久化。

  1. 按照上面绑定到向量数据库部分的说明操作

绑定到记忆