本项目(特指'mcp-weather-server'模块)是使用Spring AI框架实现的模型上下文协议(MCP)服务器的一个示例。它展示了如何构建一个能向大语言模型(LLM)客户端提供特定功能(如天气查询)的后端服务。

项目简介

该模块实现了一个MCP服务器,通过标准的MCP协议暴露了一个天气查询工具。LLM客户端可以通过这个服务器获取实时的天气数据,而无需直接与外部API交互。

主要功能点

  • MCP服务器实现: 遵循模型上下文协议(MCP)标准,能够接收并处理来自LLM客户端的请求。
  • 工具托管: 托管一个预定义的天气查询工具,负责调用外部天气服务获取数据。
  • 多种传输支持: 支持Stdio和WebFlux SSE等多种客户端与服务器的通信方式。
  • 集成外部服务: 天气工具内部集成了Open-Meteo API来获取天气数据。

安装步骤

在运行之前,请确保您已安装Java 17或更高版本以及Maven 3.6+。

  1. 克隆整个仓库:
    git clone https://github.com/tzolov/talent-arena-demo.git
  2. 切换到'mcp-weather-server'模块目录:
    cd talent-arena-demo/mcp-weather-server
  3. 打包服务器应用(这将生成可执行的JAR文件):
    ./mvnw clean package
  4. 运行MCP天气服务器:
    ./mvnw spring-boot:run
    服务器启动后,即可等待MCP客户端连接。

服务器配置(供MCP客户端参考)

MCP客户端需要知道如何连接到此服务器。如果客户端使用Stdio传输方式并需要启动服务器进程,配置通常包含服务器名称、启动命令和参数。以下是一个基于示例代码的配置结构描述:

  • 'name': 服务器的逻辑名称,例如 "weather-server"。
  • 'transport': 使用的传输协议,例如 "stdio"。
  • 'command': 用于启动服务器进程的命令,例如 "java"。
  • 'args': 传递给启动命令的参数列表。这些参数用于指定运行哪个JAR文件以及相关的Spring Boot配置。
    • '-Dspring.ai.mcp.server.stdio=true': 启用Stdio传输。
    • '-Dspring.main.web-application-type=none': 将Spring Boot应用设置为非Web类型,适用于Stdio模式。
    • '-Dlogging.pattern.console=': 清除控制台日志格式,使JSON-RPC消息更易解析。
    • '-jar': 指示Java运行一个JAR文件。
    • 'mcp-weather-server/target/mcp-ta-weather-server-0.0.1-SNAPSHOT.jar': 服务器模块打包后生成的JAR文件路径。

基本使用方法

一旦MCP客户端成功连接到此服务器,它就可以:

  1. 调用服务器的'listTools'方法来发现可用的工具(例如,会发现名为'getTemperature'的天气工具)。
  2. 调用服务器的'callTool'方法来执行天气工具,并传递必要的参数,例如:
    • 'toolName': 'getTemperature'
    • 'parameters': 包含'latitude' (纬度), 'longitude' (经度), 'city' (城市名)等键值对的JSON对象。

服务器将执行工具调用,获取天气数据,并将结果通过MCP协议返回给客户端。

信息

分类

网页与API