在 Hello World 的基础上，再构建一个真实的场景（天气预报的工具服务）

### 1、服务端（mcp-server）示例（发布工具服务）

跟在 Solon AI 里开发 Tool Call 很像。只需要在工具类上添加 `@McpServerEndpoint` 注解，就变成了 MCP 服务了（可以被“跨进程”或“远程”使用）。

```java
import org.noear.solon.Solon;
import org.noear.solon.ai.annotation.ToolMapping;
import org.noear.solon.ai.mcp.server.annotation.McpServerEndpoint;
import org.noear.solon.annotation.Param;

@McpServerEndpoint(channel = McpChannel.STREAMABLE, mcpEndpoint = "/mcp")
public class McpServerTool {
    //
    // 建议开启编译参数：-parameters （否则，要再配置参数的 name）
    //
    @ToolMapping(description = "查询天气预报")
    public String getWeather(@Param(description = "城市位置") String location) {
        return "晴，14度";
    }
}

public class McpServerApp {
    public static void main(String[] args) {
        //启动时，会扫描到 McpServerTool 类，并转为真实的 Mcp 服务。
        Solon.start(McpServerApp.class, args);
    }
}
```

比如，这是国家气象台，提供的一个天气 mcp tool 服务。就可以被各种 AI 应用集成。


### 2、客户端（mcp-client）示例（使用工具服务）

使用 McpClientProvider 可以快速使用工具服务。(也可以使用第三方的工具，或平台)

* 直接调用（测试场景）

```java
public void case1() {
    McpClientProvider clientProvider = McpClientProvider.builder()
                .channel(McpChannel.STREAMABLE)
                .url("http://localhost:8080/mcp")
                .build();

    String rst = clientProvider.callTool("getWeather", Map.of("location", "杭州"))
                               .getContent();
}
```

* 集成到大模型使用（应用场景）

在 AI 应用里，可以快速集成上面国家气象台的天气 mcp tool 服务。

```java
public void case2() {
    McpClientProvider clientProvider = McpClientProvider.builder()
                .channel(McpChannel.STREAMABLE)
                .url("http://localhost:8080/mcp")
                .build();

    ChatModel chatModel = ChatModel.of("http://127.0.0.1:11434/api/chat")
                .provider("ollama")
                .model("qwen2.5:1.5b")
                .defaultToolsAdd(clientProvider) //添加为默认工具。和本地的 Tool 使用一样。
                .build();
    
    String rst = chatModel.prompt("杭州今天的天气怎么样？")
                .call()
                .getMessage()
                .getContent();
}
```

### 3、MCP 之于 AI 应用开发

* 以前调用第三方接口，我们需要先封装成本地的 Tool 规范，再给 ChatModel。
* 现在，第三方提供 Mcp Tool 服务（通过 MCP 协议）。可以直接整合给 ChatModel 用了。
* 再进一步的话，能过“配置”就可以使用第三方的 Mcp Tool 服务

