mirror of
https://github.com/xinnan-tech/xiaozhi-esp32-server.git
synced 2026-07-29 03:33:56 +08:00
优化:提取共用方法,实现部分getAgentMcpToolsList内容
--AgentMcpAccessPointServiceImpl.java 1.获取URI对象,统一2个方法获取URI对象的异常处理 2.实现getAgentMcpToolsList部分内容
This commit is contained in:
+44
-21
@@ -28,22 +28,19 @@ public class AgentMcpAccessPointServiceImpl implements AgentMcpAccessPointServic
|
|||||||
if (StringUtils.isBlank(url)) {
|
if (StringUtils.isBlank(url)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
try {
|
URI uri = getURI(url);
|
||||||
URI uri = new URI(url);
|
// 获取智能体mcp的url前缀
|
||||||
// 获取智能体mcp的url前缀
|
String agentMcpUrl = getAgentMcpUrl(uri);
|
||||||
String agentMcpUrl = getAgentMcpUrl(uri);
|
// 获取密钥
|
||||||
// 获取密钥
|
String key = getSecretKey(uri);
|
||||||
String key = getSecretKey(uri);
|
// 获取加密的token
|
||||||
// 获取加密的token
|
String encryptToken = encryptToken(id, key);
|
||||||
String encryptToken = encryptToken(id, key);
|
// 返回智能体Mcp路径的格式
|
||||||
// 返回智能体Mcp路径的格式
|
String AgentMcpUrl = "%s/mcp?token=%s";
|
||||||
String AgentMcpUrl = "%s/mcp?token=%s";
|
return AgentMcpUrl.formatted(agentMcpUrl, encryptToken);
|
||||||
return AgentMcpUrl.formatted(agentMcpUrl,encryptToken);
|
|
||||||
} catch (URISyntaxException e) {
|
|
||||||
log.error("路径格式不正确路径:{},\n错误信息:{}",url,e.getMessage());
|
|
||||||
throw new RuntimeException("mcp的地址存在错误,请进入参数管理修改mcp接入点地址");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getAgentMcpToolsList(String id) {
|
public List<String> getAgentMcpToolsList(String id) {
|
||||||
List<String> list = List.of();
|
List<String> list = List.of();
|
||||||
@@ -51,12 +48,38 @@ public class AgentMcpAccessPointServiceImpl implements AgentMcpAccessPointServic
|
|||||||
if (StringUtils.isBlank(url)) {
|
if (StringUtils.isBlank(url)) {
|
||||||
return list;
|
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;
|
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地址
|
* @param uri mcp地址
|
||||||
* @return 密钥
|
* @return 密钥
|
||||||
*/
|
*/
|
||||||
@@ -70,26 +93,26 @@ public class AgentMcpAccessPointServiceImpl implements AgentMcpAccessPointServic
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取智能体mcp接入点url
|
* 获取智能体mcp接入点url
|
||||||
|
*
|
||||||
* @param uri mcp地址
|
* @param uri mcp地址
|
||||||
* @return 智能体mcp接入点url
|
* @return 智能体mcp接入点url
|
||||||
*/
|
*/
|
||||||
private String getAgentMcpUrl(URI uri) {
|
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();
|
String path = uri.getSchemeSpecificPart();
|
||||||
// 获取到最后一个/前的path
|
// 获取到最后一个/前的path
|
||||||
path = path.substring(0,path.lastIndexOf("/"));
|
path = path.substring(0, path.lastIndexOf("/"));
|
||||||
return wsScheme+":"+path;
|
return wsScheme + ":" + path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取对智能体id加密的token
|
* 获取对智能体id加密的token
|
||||||
|
*
|
||||||
* @param agentId 智能体id
|
* @param agentId 智能体id
|
||||||
* @param key 加密密钥
|
* @param key 加密密钥
|
||||||
* @return 加密后token
|
* @return 加密后token
|
||||||
*/
|
*/
|
||||||
private static String encryptToken(String agentId, String key) {
|
private static String encryptToken(String agentId, String key) {
|
||||||
|
|||||||
Reference in New Issue
Block a user