From 61b4b6617bfcacd0437742c412e57620ef977a89 Mon Sep 17 00:00:00 2001 From: JianYu Zheng <2375294554@qq.com> Date: Wed, 25 Jun 2025 17:39:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96:=E6=8F=90=E5=8F=96=E5=85=B1?= =?UTF-8?q?=E7=94=A8=E6=96=B9=E6=B3=95=EF=BC=8C=E5=AE=9E=E7=8E=B0=E9=83=A8?= =?UTF-8?q?=E5=88=86getAgentMcpToolsList=E5=86=85=E5=AE=B9=20--AgentMcpAcc?= =?UTF-8?q?essPointServiceImpl.java=201.=E8=8E=B7=E5=8F=96URI=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1=EF=BC=8C=E7=BB=9F=E4=B8=802=E4=B8=AA=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E8=8E=B7=E5=8F=96URI=E5=AF=B9=E8=B1=A1=E7=9A=84?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86=202.=E5=AE=9E=E7=8E=B0getA?= =?UTF-8?q?gentMcpToolsList=E9=83=A8=E5=88=86=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/AgentMcpAccessPointServiceImpl.java | 65 +++++++++++++------ 1 file changed, 44 insertions(+), 21 deletions(-) diff --git a/main/manager-api/src/main/java/xiaozhi/modules/agent/service/impl/AgentMcpAccessPointServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/modules/agent/service/impl/AgentMcpAccessPointServiceImpl.java index c962e25f..f05ab72f 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/agent/service/impl/AgentMcpAccessPointServiceImpl.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/agent/service/impl/AgentMcpAccessPointServiceImpl.java @@ -28,22 +28,19 @@ public class AgentMcpAccessPointServiceImpl implements AgentMcpAccessPointServic if (StringUtils.isBlank(url)) { return null; } - try { - URI uri = new URI(url); - // 获取智能体mcp的url前缀 - String agentMcpUrl = getAgentMcpUrl(uri); - // 获取密钥 - String key = getSecretKey(uri); - // 获取加密的token - String encryptToken = encryptToken(id, key); - // 返回智能体Mcp路径的格式 - String AgentMcpUrl = "%s/mcp?token=%s"; - return AgentMcpUrl.formatted(agentMcpUrl,encryptToken); - } catch (URISyntaxException e) { - log.error("路径格式不正确路径:{},\n错误信息:{}",url,e.getMessage()); - throw new RuntimeException("mcp的地址存在错误,请进入参数管理修改mcp接入点地址"); - } + URI uri = getURI(url); + // 获取智能体mcp的url前缀 + String agentMcpUrl = getAgentMcpUrl(uri); + // 获取密钥 + String key = getSecretKey(uri); + // 获取加密的token + String encryptToken = encryptToken(id, key); + // 返回智能体Mcp路径的格式 + String AgentMcpUrl = "%s/mcp?token=%s"; + return AgentMcpUrl.formatted(agentMcpUrl, encryptToken); + } + @Override public List getAgentMcpToolsList(String id) { List list = List.of(); @@ -51,12 +48,38 @@ public class AgentMcpAccessPointServiceImpl implements AgentMcpAccessPointServic if (StringUtils.isBlank(url)) { return list; } + URI uri = getURI(url); + // 获取智能体mcp的url前缀 + String agentMcpUrl = getAgentMcpUrl(uri); + // 获取密钥 + String key = getSecretKey(uri); + // 获取加密的token + String encryptToken = encryptToken(id, key); + // 返回智能体Mcp路径的格式 + String AgentMcpUrl = "%s/call?token=%s"; + String formatted = AgentMcpUrl.formatted(agentMcpUrl, encryptToken); + return list; } + /** + * 获取URI对象 + * @param url 路径 + * @return URI对象 + */ + private static URI getURI(String url) { + try { + return new URI(url); + } catch (URISyntaxException e) { + log.error("路径格式不正确路径:{},\n错误信息:{}", url, e.getMessage()); + throw new RuntimeException("mcp的地址存在错误,请进入参数管理修改mcp接入点地址"); + } + } + /** * 获取密钥 + * * @param uri mcp地址 * @return 密钥 */ @@ -70,26 +93,26 @@ public class AgentMcpAccessPointServiceImpl implements AgentMcpAccessPointServic /** * 获取智能体mcp接入点url + * * @param uri mcp地址 * @return 智能体mcp接入点url */ private String getAgentMcpUrl(URI uri) { // 获取协议 - String wsScheme = (uri.getScheme().equals("https")) ? "wss" : "ws" ; + String wsScheme = (uri.getScheme().equals("https")) ? "wss" : "ws"; // 获取主机,端口,路径 String path = uri.getSchemeSpecificPart(); // 获取到最后一个/前的path - path = path.substring(0,path.lastIndexOf("/")); - return wsScheme+":"+path; + path = path.substring(0, path.lastIndexOf("/")); + return wsScheme + ":" + path; } - - /** * 获取对智能体id加密的token + * * @param agentId 智能体id - * @param key 加密密钥 + * @param key 加密密钥 * @return 加密后token */ private static String encryptToken(String agentId, String key) {