# mcp-demos **Repository Path**: tree_boss/mcp-demos ## Basic Information - **Project Name**: mcp-demos - **Description**: MCP - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-11 - **Last Updated**: 2025-11-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: SpringBoot, MCP ## README # MCP Demos 这是一个演示Spring AI中MCP (Model Context Protocol)功能的示例项目。该项目包含两个主要模块:服务端和客户端,展示了如何使用MCP协议实现模型与工具之间的交互。 ## 项目结构 ``` mcp-demos/ ├── mcp-server-demo/ # MCP服务器演示模块 ├── mcp-client-demo/ # MCP客户端演示模块 ├── pom.xml # 项目父POM文件 └── README.md # 项目说明文档 ``` ## 功能概述 ### mcp-server-demo 服务端模块实现了一个基于Spring Boot的MCP服务器,主要功能包括: - 提供天气查询工具: - 根据经纬度获取天气预报 - 根据美国州代码获取天气警报 - 提供文本转换工具: - 将文本转换为大写 - 通过SSE (Server-Sent Events)协议与客户端通信 ### mcp-client-demo 客户端模块实现了一个基于Spring Boot的MCP客户端,主要功能包括: - 使用Ollama模型进行对话 - 通过MCP协议连接到服务端 - 自动发现并使用服务端提供的工具 - 支持配置预定义问题进行测试 ## 技术栈 - Spring Boot 3.4.5 - Spring AI 1.1.0-SNAPSHOT - Ollama (用于本地模型) - MCP (Model Context Protocol) - Java 17+ ## 快速开始 ### 前提条件 - JDK 17或更高版本 - Maven 3.6或更高版本 - Ollama已安装并运行(用于客户端) ### 运行服务端 ```bash cd mcp-demos mvn spring-boot:run -pl mcp-server-demo ``` 服务端将在 http://localhost:8080 上运行。 ### 运行客户端 在服务端运行的情况下,执行以下命令启动客户端: ```bash cd mcp-demos mvn spring-boot:run -pl mcp-client-demo ``` 客户端将使用`application.properties`中配置的预定义问题与模型交互。 ## 配置 ### 服务端配置 主要配置位于`mcp-server-demo/src/main/resources/application.properties`: - `spring.ai.mcp.server.name`:服务器名称 - `spring.ai.mcp.server.protocol`:通信协议(SSE或STREAMABLE) - `spring.ai.mcp.server.capabilities.*`:服务器支持的功能 - `spring.ai.mcp.server.streamable-http.mcp-endpoint`:MCP端点路径 ### 客户端配置 主要配置位于`mcp-client-demo/src/main/resources/application.properties`: - `spring.ai.ollama.*`:Ollama模型配置 - `spring.ai.mcp.client.*`:MCP客户端配置 - `spring.ai.mcp.client.sse.connections.*`:服务端连接配置 - `ai.user.input`:预定义的用户输入问题 ## 使用示例 ### 示例1:获取特定位置的天气预报 客户端可以发送类似以下的请求: ``` What's the weather forecast for New York City? ``` 模型将使用服务端提供的`getWeatherForecastByLocation`工具获取天气预报。 ### 示例2:获取特定州的天气警报 客户端可以发送类似以下的请求: ``` Are there any weather alerts in California? ``` 模型将使用服务端提供的`getAlerts`工具获取CA州的天气警报。 ### 示例3:文本转换 客户端可以发送类似以下的请求: ``` Please convert 'hello world' to uppercase. ``` 模型将使用服务端提供的`toUpperCase`工具将文本转换为大写。 ## 扩展指南 ### 添加新工具 1. 在服务端模块中创建新的服务类或方法,并使用`@Tool`注解标记 2. 确保方法参数有合适的类型和描述 3. 重启服务端 4. 客户端将自动发现并使用新工具 ### 连接到不同的模型 在客户端的`application.properties`中修改Ollama相关配置,可以连接到不同的模型或实例。 ## 许可证 本项目采用Apache License 2.0许可证。详见LICENSE文件。