WebVC MCP服务器示例
Spring AI MCP Server with WebMVC transport(SSE)示例项目。
特点
- 运输:HTTP/SSE(服务器发送事件)
- 部署:作为独立的Web服务运行
- 多客户端:多个客户端可以同时连接
- 远程访问:支持通过网络进行远程连接
提供的工具
1.获取旅游天气指数
- 说明:使用城市代码查询当前日期的旅游景点TCI(气候舒适度)指数
- 参数:
- cityAreaId:城市代码(例如1168000000是首尔江南区)
- 实现:
WeatherService.java
2.获取TouristWeatherByDate
- 说明:按城市代码和特定日期查询旅游景点TCI指数
- 参数:
- cityAreaId:城市代码 - date:要查询的日期(格式:yyyyyMMdd,例如20251103)
- 实现:
WeatherService.java
3.获取城市信息
- 说明:返回主要城市代码信息
- 参数:无
- 实现:
WeatherService.java
4.getCurrentDateTimeWithZone
- 说明:查看特定时区的当前日期和时间
- 参数:
- zoneId:区域ID(예:亚洲/美国首尔/欧洲纽约/伦敦)
- 实现:
DateTimeService.java
项目结构
my-webmvc-mcp/
├── pom.xml # Maven 설정 (webmvc, swagger 포함)
├── README.md
└── src/main/
├── java/com/example/webmvc/
│ ├── WebmvcMcpApplication.java # Main Application
│ ├── config/
│ │ ├── McpConfig.java # MCP Tool 등록
│ │ └── SwaggerConfig.java # Swagger 설정
│ └── service/
│ ├── WeatherService.java # 관광지 날씨 TCI 조회 Tool
│ └── DateTimeService.java # 현재 시간 조회 Tool
└── resources/
└── application.properties # 애플리케이션 설정构建和运行
1.构建
cd C:\workspace-test\my-webmvc-mcp
mvn clean package2.运行
java -jar target/webmvc-mcp-0.0.1-SNAPSHOT.jar服务器启动后,将在以下端口运行:
- 应用: http://localhost:9090
- MCP SSE端点: http://localhost:9090/mcp/sse
- Swagger用户界面: http://localhost:9090/swagger-ui.html
- API文件: http://localhost:9090/api-docs
MCP客户端连接设置
Claude Desktop设置示例
claude_desktop_config.json:
{
"mcpServers": {
"webmvc-weather-api": {
"url": "http://localhost:9090/mcp/sse",
"transport": "sse"
}
}
}远程服务器连接示例
如果服务器在另一台PC上运行:
{
"mcpServers": {
"webmvc-weather-api": {
"url": "http://remote-server-ip:9090/mcp/sse",
"transport": "sse"
}
}
}与STDIO方式的区别
| 项目 | STDIO方式 | WebMVC方式(本项目) |
|---|---|---|
| 依赖 | spring-ai-starter-mcp-server | spring-ai-starter-mcp-server-webmvc |
| 运输 | stdin/stdout | HTTP/SSE |
| 进程 | 客户机直接启动 | 独立Web服务器 |
| 连接范围 | 仅本地PC可以通过网络远程连接 | |
| 并发连接 | 单客户端 | 多客户端 |
| 部署方式 | 在每台PC上部署jar文件 | 只运行一台服务器 |
验证API文档
运行服务器后,从浏览器连接到以下URL:
- Swagger用户界面:http://localhost:9090/swagger-ui.html
您可以在此处查看MCP服务器提供的端点和模式。
测试
查看MCP Tools列表
可以在服务器启动后的日志中查看已注册的工具列表:
DEBUG com.example.webmvc - Registered MCP Tools:
- getTouristWeatherIndex
- getTouristWeatherByDate
- getCityInfo
- getCurrentDateTimeWithZone客户端测试
在Claude Desktop或其他MCP客户端上:
- “告诉我首尔江南区观光地的天气”→
getCityInfo+getTouristWeatherIndex调用Tool - “济州岛观光地TCI指数是?”→
getCityInfo+getTouristWeatherIndex调用Tool - “首尔时间段的现在时间是?”→
getCurrentDateTimeWithZone调用Tool
注意事项
weather.api.key请使用公共数据门户网站(气象厅景区气候指数)的实际API密钥替换- 在生产环境中添加安全设置(HTTPS、身份验证等)
- 必须在防火墙设置中打开9090端口才能进行远程连接
