spring-ai
spring-ai copied to clipboard
How does MCP server obtain the parameters after the SSE endpoint URL for authentication
For example, my mcp client configuration is as follows: { "mcpServers": { "xxx": { "url": "https://www.xx.com/sse?ak=apikey" } } } I want to obtain the ak parameter for verification in the mcp server implemented by springAI. How should I do it?
I also encountered this problem. The endpoint configuration should be opened. Similar to configuring baseuri. The problem is the automated configuration HttpClientSseClientTransport when using the default endpoint @Bean public List<NamedClientMcpTransport> mcpHttpClientTransports(McpSseClientProperties sseProperties, ObjectProvider<ObjectMapper> objectMapperProvider) {
ObjectMapper objectMapper = objectMapperProvider.getIfAvailable(ObjectMapper::new);
List<NamedClientMcpTransport> sseTransports = new ArrayList<>();
for (Map.Entry<String, SseParameters> serverParameters : sseProperties.getConnections().entrySet()) {
var transport = new HttpClientSseClientTransport(HttpClient.newBuilder(), serverParameters.getValue().url(),
objectMapper);
sseTransports.add(new NamedClientMcpTransport(serverParameters.getKey(), transport));
}
return sseTransports;
}
@Deprecated(forRemoval = true)
public HttpClientSseClientTransport(HttpClient.Builder clientBuilder, String baseUri, ObjectMapper objectMapper) {
this(clientBuilder, baseUri, DEFAULT_SSE_ENDPOINT, objectMapper);
}
@Deprecated(forRemoval = true)
public HttpClientSseClientTransport(HttpClient.Builder clientBuilder, String baseUri, String sseEndpoint,
ObjectMapper objectMapper) {
this(clientBuilder, HttpRequest.newBuilder(), baseUri, sseEndpoint, objectMapper);
}
The endpoint property configuration should be added to McpSseClientProperties.
mcp:
client:
sse:
connections:
server1:
url: https://mcp.amap.com
sse-endpoint: /sse?key=xxx
I also encountered this problem. The endpoint configuration should be opened. Similar to configuring baseuri. The problem is the automated configuration HttpClientSseClientTransport when using the default endpoint @bean public List mcpHttpClientTransports(McpSseClientProperties sseProperties, ObjectProvider objectMapperProvider) {
ObjectMapper objectMapper = objectMapperProvider.getIfAvailable(ObjectMapper::new); List<NamedClientMcpTransport> sseTransports = new ArrayList<>(); for (Map.Entry<String, SseParameters> serverParameters : sseProperties.getConnections().entrySet()) { var transport = new HttpClientSseClientTransport(HttpClient.newBuilder(), serverParameters.getValue().url(), objectMapper); sseTransports.add(new NamedClientMcpTransport(serverParameters.getKey(), transport)); } return sseTransports; } @Deprecated(forRemoval = true) public HttpClientSseClientTransport(HttpClient.Builder clientBuilder, String baseUri, ObjectMapper objectMapper) { this(clientBuilder, baseUri, DEFAULT_SSE_ENDPOINT, objectMapper); } @Deprecated(forRemoval = true) public HttpClientSseClientTransport(HttpClient.Builder clientBuilder, String baseUri, String sseEndpoint, ObjectMapper objectMapper) { this(clientBuilder, HttpRequest.newBuilder(), baseUri, sseEndpoint, objectMapper); }The endpoint property configuration should be added to McpSseClientProperties.
mcp: client: sse: connections: server1: url: https://mcp.amap.com sse-endpoint: /sse?key=xxx
The question is about how to receive client-side authentication information on the MCP Server via SSE