WebVC MCP客户端
Spring AI MCP Client with Ollama LLM示例项目。
使用WebMVC MCP服务器上的工具,使本地LLM可以利用外部API数据。
动作流
[사용자]
↓
[REST API /api/chat]
↓
[ChatController]
↓
[ChatService]
↓
[Ollama LLM] ←→ [MCP Client] ←→ [MCP Server (http://localhost:9090)]
↓ ↓
[응답 반환] [Tools: getTouristWeatherIndex, getCityInfo, getCurrentTime]项目结构
my-webmvc-mcp-client/
├── pom.xml # Maven 설정 (MCP Client, Ollama)
├── README.md
└── src/main/
├── java/com/example/client/
│ ├── ClientApplication.java # Main Application
│ ├── config/
│ │ ├── OllamaConfig.java # Ollama API 설정
│ │ └── SwaggerConfig.java # Swagger 설정
│ ├── controller/
│ │ └── ChatController.java # REST API 엔드포인트
│ └── service/
│ └── ChatService.java # LLM + MCP Tool 통합
└── resources/
└── application.properties # Ollama, MCP 서버 설정事前准备
1.安装Ollama并下载型号
# Ollama 설치 (https://ollama.com/download)
# 모델 다운로드 (Tool Calling 지원 모델 필요)
ollama pull qwen2.5:7b
# Ollama 서버 실행 확인
ollama serveOllama服务器http://localhost:11434必须在中运行。
2.运行MCP服务器
首先,必须运行WebMVC MCP服务器:
cd C:\workspace-test\my-webmvc-mcp
mvn clean package
java -jar target/webmvc-mcp-0.0.1-SNAPSHOT.jar服务器http://localhost:9090必须在中运行。
构建和运行
1.构建
cd C:\workspace-test\my-webmvc-mcp-client
mvn clean package2.运行
java -jar target/webmvc-mcp-client-0.0.1-SNAPSHOT.jar客户端http://localhost:8080在中运行。
测试
测试方案
通过以下流验证MCP Client是否正常运行:
- 向客户机提问 →向REST API发送问题
- 由本地LLM判断 →确定是否需要Tool
- MCP服务器的Tool调用 →在服务器上查看公共API数据
- 确认响应 →LLM使用Tool结果生成答案
1.景区天气查询测试
# GET 방식
curl "http://localhost:8080/api/chat?message=서울 강남구 관광지 날씨 알려줘"
# POST 방식
curl -X POST http://localhost:8080/api/chat \
-H "Content-Type: application/json" \
-d '{"message": "제주도 관광지 TCI 지수는?"}'预期动作:
- Ollama LLM分析问题
getCityInfo使用Tool检查城市代码getTouristWeatherIndex认为需要Tool- 向MCP服务器请求Tool调用
- 在公共API中查看旅游景点气候指数数据
- LLM用自然语言回答结果
2.测试时间查询
curl "http://localhost:8080/api/chat?message=서울 시간대의 현재 시간은?"
# 또는
curl -X POST http://localhost:8080/api/chat \
-H "Content-Type: application/json" \
-d '{"message": "Asia/Seoul 타임존의 현재 날짜와 시간 알려줘"}'预期动作:
- Ollama LLM分析问题
getCurrentDateTimeWithZone认为需要Tool- 向MCP服务器请求Tool调用
- 在服务器上查看当前时间
- LLM用自然语言回答结果
3.确认日志
您可以在客户端控制台中查看以下日志:
INFO c.e.c.service.ChatService - User message: 서울 강남구 관광지 날씨 알려줘
INFO c.e.c.service.ChatService - Available tools: [getTouristWeatherIndex, getTouristWeatherByDate, getCityInfo, getCurrentDateTimeWithZone]
INFO c.e.c.service.ChatService - AI response: ...测试成功标准
✅ 成功测试:
- MCP Client连接到服务器并获取工具列表
- LLM为您的问题选择合适的工具
- 调用MCP服务器上的Tool以返回实际数据
- LLM使用Tool结果生成自然语言响应
主要设置
application.properties
# Ollama LLM
spring.ai.ollama.base-url=http://localhost:11434
spring.ai.ollama.chat.options.model=qwen3-4b:Q4_K_M
spring.ai.ollama.chat.options.temperature=0.7
# MCP Client 연결 설정
spring.ai.mcp.client.sse.connections.webmvc-weather-api.url=http://localhost:9090/mcp/sse使用不同的LLM模型
要使用Ollama的其他型号(仅限支持Tool Calling的型号):
# Tool Calling 지원 모델 다운로드
ollama pull llama3.1
ollama pull mistral
# application.properties 수정
spring.ai.ollama.chat.options.model=llama3.1注意:要使用Tool Calling,必须使用支持的模型(Llama 3.1+、Mistral、Qwen等)。
故障射击
1.“拒绝连接”错误
原因:MCP服务器未运行
解决:
cd C:\workspace-test\my-webmvc-mcp
java -jar target/webmvc-mcp-0.0.1-SNAPSHOT.jar2.“Ollama not available”错误
原因:Ollama服务器无法运行
解决:
ollama serve3.不调用Tool
原因:LLM不认为需要工具
解决:更具体地更改问题
- “天气怎么样?”
- “告诉我首尔江南区观光地的天气”
- “济州岛观光地TCI指数是?”
扩展想法
- 添加Web UI:使用React、Vue等实现聊天界面
- 对话历史记录:记忆以前对话内容的功能
- 多MCP服务器:同时连接多个MCP服务器
- 流响应:实时响应流到SSE
STDIO与WebMVC比较
| 项目 | STDIO MCP | WebMVC MCP(当前方式) |
|---|---|---|
| 运输 | stdin/stdout | HTTP/SSE |
| 运行服务器 客户端启动独立运行 | ||
| 远程连接 | 不可能 | 可能 |
| 多客户端 | 不可能 | 可能 |
| 部署 | 在每台PC上安装 | 仅1台服务器 |
WebMVC方式的优点:
- 集中式服务器管理
- 多个客户端可同时使用
- 通过网络提供远程工具
