当前位置: 首页 > news >正文

如何给自研MCP加上安全验证

在这里插入图片描述

前言
刚过去两个月,市面的 MCP 服务,如雨后春笋一般不断涌现出来,包括;百度、高德、网盘、支付宝。这些 MCP 服务,可以让我们基于 Spring AI 框架构建的 Agent 具备非常丰富的使用功能。同时这也说明,程序员👨🏻‍💻,应该具备开发 MCP 服务的能力,Spring AI 让 Java 再次牛逼!
举例
如对接高德地图 MCP

{"mcpServers": {"amap-amap-sse": {"url": "https://mcp.amap.com/sse?key=您在高德官网上申请的key"}}
}

官网 - 官网提供了创建对接 Key
二:代码案例

@Configuration
publicclass McpConfig {@Beanpublic List<NamedClientMcpTransport> mcpClientTransport() {McpClientTransport transport = HttpClientSseClientTransport.builder("https://mcp.amap.com").sseEndpoint("/sse?key=<your_key>").objectMapper(new ObjectMapper()).build();return Collections.singletonList(new NamedClientMcpTransport("amap", transport));}}

1:对接时,需要设定 sseEndpoint 如果不设定个,Spring AI 默认是对 builder 的 baseUrl 值添加 /sse 的。

2:所以,如果你要对接外部带有验证权限的 MCP 服务,需要手动设置下 sseEndpoint 值。

项目中的配置
支持了外部的这些带有权限校验的 MCP 服务。你可以,以多种方式进行配置。如

{"baseUri":"https://mcp.amap.com","sseEndpoint":"/sse?key=****"
}
{"baseUri":"https://mcp.amap.com","sseEndpoint":"/sse?key=****"
}

以上两种配置方式,在 项目案例代码中 都做了兼容处理。以下是兼容代码,有案例项目的,可以直接阅读课程代码。

@Slf4j
@Component
publicclass AiClientToolMcpNode extends AbstractArmorySupport {// ... 省略部分代码protected McpSyncClient createMcpSyncClient(AiClientToolMcpVO aiClientToolMcpVO) {String transportType = aiClientToolMcpVO.getTransportType();switch (transportType) {case"sse" -> {AiClientToolMcpVO.TransportConfigSse transportConfigSse = aiClientToolMcpVO.getTransportConfigSse();// http://127.0.0.1:9999/sse?apikey=DElk89iu8EhhnbuString originalBaseUri = transportConfigSse.getBaseUri();String baseUri;String sseEndpoint;int queryParamStartIndex = originalBaseUri.indexOf("sse");if (queryParamStartIndex != -1) {baseUri = originalBaseUri.substring(0, queryParamStartIndex - 1);sseEndpoint = originalBaseUri.substring(queryParamStartIndex - 1);} else {baseUri = originalBaseUri;sseEndpoint = transportConfigSse.getSseEndpoint();

相关文章:

  • OpenSSL 文件验签与字符串验签原理及 C 语言实现详解
  • 行为型:状态模式
  • AI时代新词-大模型(Large Language Model)
  • @MySQL升级8.0.42(Ubuntu 22.04)-SOP
  • 软考 系统架构设计师系列知识点之杂项集萃(75)
  • charAt()
  • 高性能排行榜系统架构实战
  • 白平衡校正中冯・克里兹参数计算过程详解
  • STM32之SPI——外部FLASH和RFID
  • 高阶数据结构——哈希表的实现
  • 数据结构第5章 树与二叉树(竟成)
  • 篇章三 数据结构——前置知识(三)
  • 1. 数据结构
  • 数据结构-图的应用,实现环形校验和拓扑排序
  • 【数据结构】哈希表的实现
  • 【数据结构】--二叉树--堆(上)
  • 如何用 SQL 找到最受欢迎的用户?
  • 数据结构第3章 线性表 (竟成)
  • Dify中的Extension插件开发例子:以neko为例
  • 二叉树遍历
  • 支付宝 外贸网站/重庆网络seo
  • 专业型企业网站有哪些/推广赚钱软件排行
  • 静态网站可以做留言板/百度下载老版本
  • javascript用什么软件编写/南昌seo排名扣费
  • 真人性做爰video网站/宁德市医院东侨院区
  • 做的网站一模一样会被告吗/清远网站seo