本项目是一个基于Model Context Protocol (MCP) 构建的后端服务示例,专注于通过标准化接口向大型语言模型 (LLM) 客户端提供外部功能(工具)。该服务器实现了一组用于获取不同类型笑话的工具。

主要功能点

  • 提供外部API集成能力: 通过定义和执行MCP工具,连接并调用外部笑话 API (如 Chuck Norris Jokes, Dad Jokes, Yo Mama Jokes)。
  • 标准化工具接口: 以符合MCP规范的方式声明和执行工具,使得支持MCP的LLM客户端能够理解并调用这些功能。
  • 支持SSE传输: 服务器通过Server-Sent Events (SSE) 协议与客户端通信,是MCP支持的一种传输方式。
  • 与Microsoft Copilot Studio集成: 项目代码设计为可部署到Azure Web App,并通过Power Platform Custom Connector与Microsoft Copilot Studio无缝集成,作为Copilot的扩展能力。

安装步骤

本项目主要作为部署到Azure Web App的模板提供。简要步骤如下:

  1. 创建新的GitHub仓库: 基于此仓库模板在您自己的GitHub账户下创建一个新仓库。
  2. 部署到Azure Web App: 将新创建的GitHub仓库代码部署到Azure Web App服务上(需要Azure订阅),配置使用 Node 22 LTS 运行时。
  3. 创建Power Platform Custom Connector: 在Power Platform环境中创建一个自定义连接器,将其指向部署在Azure Web App上的服务器URL。
  4. 集成到Microsoft Copilot Studio: 在Microsoft Copilot Studio中创建一个新的AI Agent,将之前创建的Power Platform连接器添加为Agent的Action (操作)。

服务器配置 (针对MCP客户端)

MCP客户端(如支持MCP的LLM运行时或开发工具)需要连接到MCP服务器以发现其能力并与其交互。对于这个MCP服务器实现,客户端需要知道以下信息以便建立连接:

  • 服务器网络地址: 部署后Azure Web App的基准URL (例如 'https://your-webapp-name.azurewebsites.net')。
  • 传输协议和端点: 本服务器使用SSE协议,用于建立连接的端点路径是 '/sse'。JSON-RPC消息会在建立连接后通过该传输通道发送。
  • 服务器名称: 服务器自身的能力声明中包含名称,此服务器的名称是 '"jokesSSE"'。

客户端通常会通过上述网络地址和端点与服务器建立连接,然后服务器会向客户端发送其能力声明(包括服务器名称和工具列表),客户端解析这些信息后即可知道可以调用哪些工具。

基本使用方法 (通过LLM客户端)

一旦服务器部署并成功集成到支持MCP的LLM应用(例如,已作为Action添加到Microsoft Copilot Studio Agent),用户即可通过自然语言与LLM交互来使用服务器提供的功能:

  1. 向LLM请求笑话: 用户可以在聊天界面中向LLM发送请求,例如 "给我讲个查克·诺里斯的笑话"、"来个老爸笑话" 或 "有你妈的笑话吗?"。
  2. LLM调用MCP工具: 支持MCP的LLM客户端会识别用户的意图,根据配置映射到MCP服务器上的相应工具(如 'get-chuck-joke', 'get-dad-joke', 'get-yo-mama-joke')。
  3. 服务器执行并返回结果: MCP服务器收到工具调用请求后,执行对应的工具逻辑(调用外部笑话API),获取笑话内容,并通过MCP协议将结果返回给LLM客户端。
  4. LLM展现笑话: LLM客户端接收到服务器返回的笑话内容,并将其呈现给用户。

这个流程对最终用户是透明的,他们只需要像与普通聊天机器人一样交互即可获取由MCP服务器提供的外部信息。

信息

分类

网页与API