项目简介

“Build with Aspire MCP服务器”项目是 .NET Aspire 框架下的一个关键组成部分,它实现了 Model Context Protocol (MCP) 服务器功能。该服务器的核心职责是向大型语言模型(LLM)客户端提供标准化接口,以便 LLM 能够发现并调用外部工具。项目使用官方 MCP C# SDK,并集成了天气查询、系统信息获取和数学计算等多达13种实用工具,支持通过 HTTPS 和 Server-Sent Events (SSE) 进行通信。

主要功能点

  • MCP 协议支持:完全遵循 Model Context Protocol (MCP) 规范,通过 JSON-RPC 协议进行通信。
  • 动态工具发现:支持 LLM 客户端在运行时动态发现服务器上注册的所有工具,无需预先硬编码。
  • 丰富内置工具:开箱即用地提供了包括天气预报、系统信息、随机数生成、Base64 编解码以及多种数学计算(如加减乘除、平方根、幂运算、斐波那契数列、质数判断)等13个工具。
  • 安全通信:支持 HTTPS 进行安全通信,并通过 SSE 实现服务器到客户端的通知流。
  • 会话管理:服务器通过 'Mcp-Session-Id' 头部自动管理客户端会话,保持交互状态。
  • .NET Aspire 集成:作为 .NET Aspire 应用的一部分,受益于其分布式应用编排、服务发现和可观测性等特性。
  • 智能体集成:与 Microsoft Agent Framework 集成,使 AI 智能体能够自主使用这些 MCP 工具。

安装步骤

在本地运行此 MCP 服务器需要以下先决条件和步骤:

  1. 先决条件

    • .NET 9.0 SDK 或更高版本。
    • Docker Desktop(用于 Aspire 应用程序依赖的容器化服务,如 PostgreSQL)。
    • Visual Studio Code 或 Visual Studio 2022(推荐的开发环境)。
  2. 快速启动

    • 克隆仓库
      git clone https://github.com/codebytes/build-with-aspire.git
      cd build-with-aspire
    • 运行应用程序:该 MCP 服务器作为整个 Aspire 分布式应用程序的一部分运行。请在项目的根目录('build-with-aspire')下执行以下命令,启动整个 Aspire 应用程序,其中包含 MCP 服务器:
      cd src/BuildWithAspire.AppHost
      dotnet run
    • 或者,在 Visual Studio Code 或 Visual Studio 2022 中打开 'src/BuildWithAspire.AppHost' 项目,然后按 'F5' 启动。
  3. 服务启动后:Aspire Dashboard 将在 'https://localhost:17020' 打开,显示所有运行的服务。MCP 服务器将作为其中一个服务运行。

服务器配置 (面向 MCP 客户端)

MCP 服务器是 'build-with-aspire' 应用程序的一部分。MCP 客户端需要知道 MCP 服务器的连接地址来建立通信。

  • MCP 服务器名称:BuildWithAspire MCP 服务器
  • 启动MCP服务器的推荐方式:运行 'dotnet run' 命令在 'src/BuildWithAspire.AppHost' 目录下,这将启动整个 Aspire 应用程序,包括 MCP 服务器。
  • MCP 客户端连接地址:'http://localhost:8080' (这是 MCP 客户端实际用于建立 JSON-RPC 通信的 URL)。

基本使用方法 (面向 MCP 客户端)

一旦 MCP 服务器运行起来,MCP 客户端就可以通过其提供的 HTTP 端点进行交互。以下是客户端可以执行的一些基本操作示例:

  1. 检查MCP服务器健康状态: 向 'http://localhost:8080/health' 发送 GET 请求。如果服务器正常运行,将返回健康状态信息。

  2. 列出所有可用的工具: 向 'http://localhost:5020/mcp/tools' 发送 GET 请求('apiservice' 充当了 MCP 客户端,转发请求到 MCP 服务器)。此请求将返回一个包含所有已注册工具名称和描述的列表。

  3. 调用某个工具: 客户端可以向 'http://localhost:5020/mcp/call/{toolName}' 发送 POST 请求,并在请求体中包含 JSON 格式的工具参数。例如,调用天气预测工具:

    • Endpoint: 'http://localhost:5020/mcp/call/getWeatherForecast'
    • Method: 'POST'
    • 请求体示例:'{ "maxDays": 3 }'(表示获取未来3天的天气预报)

    这将返回工具执行的结果。

这些操作允许任何 MCP 兼容客户端与服务器进行交互,动态地发现和利用其提供的功能。

信息

分类

AI与计算