参考
mcp官网:modelcontextprotocol.io/introductio…
mcp官方资源:github.com/modelcontex…
mcp热门资源:github.com/punkpeye/aw…
cherry:www.cherry-ai.com/
Glama:glama.ai/mcp/servers
Smithery:smithery.ai
cursor:cursor.directory
MCP.so:mcp.so/zh
Solon-AI文档:solon.noear.org/article/994
阿里百炼:bailian.console.aliyun.com
dify:cloud.dify.ai
关于MCP资料太多了
直接实战
关于MCP的概念,就不多啰嗦了,一句话总结:MCP 是一种让大语言模型“能调用工具、能理解反馈”的控制中枢系统,是 LLM 落地应用的桥梁。
对于solon-web项目开发mcp相当简单,先讲复杂的方法,注意是复杂的方法。
1、依赖
最新版本就好
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-ai-mcp</artifactId>
</dependency>
2、mcp server
代码中详细注释了
/**
* @author wnhyang
* @date 2024/4/25
**/
@Slf4j // lombok日志
@SaIgnore // 开发中忽略权限
@Controller // 对应Spring中的@RestController
@Mapping("/adoc") // 对应Spring中的@RequestMapping
@McpServerEndpoint(sseEndpoint = "/mcp/sse/adoc") // solon-ai,mcp-server注解,标识mcp-server
public class AdocController {
@Inject //对应Spring @Bean
private PhoneNoAnalysis phoneNoAnalysis;
@Inject //对应Spring @Bean
private IpAnalysis ipAnalysis;
@Inject //对应Spring @Bean
private GeoAnalysis geoAnalysis;
@ToolMapping(description = "查询手机号归属地") //solon-ai,mcp-server具体工具,下面的@ToolParam标注工具参数,相当于大模型提示词,很重要
public String getPhone(@ToolParam(name = "phone", description = "手机号") String phone) {
log.info("查询手机号归属地:{}", phone);
return JsonUtil.toJsonString(phoneNoAnalysis.analysis(phone));
}
@ToolMapping(description = "查询IP归属地")
public String getIp(@ToolParam(name = "ip", description = "IP") String ip) {
log.info("查询IP归属地:{}", ip);
return JsonUtil.toJsonString(ipAnalysis.analysis(ip));
}
@ToolMapping(description = "查询经纬度归属地")
public String getGeo(@ToolParam(name = "lonAndLat", description = "经纬度,格式:纬度,经度") String lonAndLat) {
log.info("查询经纬度归属地:{}", lonAndLat);
return JsonUtil.toJsonString(geoAnalysis.analysis(lonAndLat));
}
}
3、正常启动solon就行了
4、测试
cherry studio
先用cherry studio,关于其其他配置自己找资料吧,甚至摸索一下就好了,直接配置mcp-server
对话中选中配置的mcp-server
测试
对比高德
同时看服务端
dify
前面是本地的测试,接着我们把服务部署到远程,这里注意,如果是有使用nginx类似的反向代理工具,注意配置支持sse协议的相关配置。
仅供参考
# sse
location /mcp/sse {
proxy_pass http://coolguard:8081/mcp/sse;
proxy_buffering off;
proxy_cache off;
proxy_read_timeout 86400s;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
安装mcp插件,选择第一个
任意智能体或chatflow,这里展示的是chatflow
运行,从工作流中可以看到具体的执行步骤和信息,发现已经调用了远程服务
远程服务器也有记录
回到上面讲的“先讲复杂的方法,注意是复杂的方法。”可能你也没意识到这是复杂的方法,更简单的方法有多可怕,引用自solon.noear.org/article/101…
小结
是否体会到了MCP的强大之处?还是有很多很多可能性,另外A2A听过没?Agent to Agnet