mcp
为什么要有mcp
- 模型只能获得训练终止之前的数据, 比如当前时间, 系统就无法感知,
- 可以在项目中为大模型开发一个工具, 让大模型调用它获取数据
- 这样可以达到目的,但同样面临两个问题, 公用和数量
- 多个项目都要写一个这样的工具类
- 一个工具类完成一个功能, 需要写很多的工具类

MCP协议
mcp是一种大模型向外调用的协议, 类似于openfeign, 可以向外部调用拿数据, 一个mcp服务器可以提供很多工具可以供大模型调用
如果这个工具只是自己项目中调用, 而且所需要的工具类也不多, 那可以用function call, 否则, 可以把很多工具类封装为一个MCP服务器, 供多个项目的大模型调用
mcp网站
本地MCP开发
引入包
1 | <!--注意事项(重要) |
编写一个提供天气的MCP服务器
这种写法感觉和function call 一样啊, 其实区别就是MCP是一个单独的服务, 它向外提供服务
编写一个工具类

将工具暴露出去, 提供使用

因为没有引入spring boot web, 使用netty服务启动

编写调用MCP的客户端
引入包
1 | <dependency> |
配置mcp服务器


调用MCP
不仅返回了MCP的信息, 而且还对结果做了优化

结果对比
提供的MCP

没有使用MCP

调用高德MCP服务
在mcp.so找到想要调用的mcp server
https://mcp.so/zh/server/amap-maps/amap?tab=tools

创建mcp server
并不是直接调用高德mcp而是通过间接的方式调用

结果对比
调用MCP


没有MCP的话
