本文基于 沛沛 提供的 MCP 服务与智能路由接口, 适配单行终端命令与Java 调用,包含前置鉴权、会话获取、消息发送、智能路由全流程。
https://ai-paas-mcp-endpoint.njuu.top/mcphttps://ai-paas-mcp-endpoint.njuu.top/mcp/airoutingAuthorization: sqGYuMvKgdxmzmTM5lNBgLdVpl6XNnPXContent-Type: application/json建立 SSE 长连接,获取后续请求必须的 sessionId
curl -N -H "Accept: text/event-stream" -H "Authorization: sqGYuMvKgdxmzmTM5lNBgLdVpl6XNnPX" https://ai-paas-mcp-endpoint.njuu.top/mcp
返回示例(提取 sessionId):
event: endpoint
data: /mcp?sessionId=550e8400-e29b-41d4-a716-446655440000
记录:550e8400-e29b-41d4-a716-446655440000
// 依赖:okhttp3(Maven:implementation 'com.squareup.okhttp3:okhttp:4.12.0')
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MCPSessionUtil {
public static String getMCPSessionId() throws Exception {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://ai-paas-mcp-endpoint.njuu.top/mcp")
.addHeader("Accept", "text/event-stream")
.addHeader("Authorization", "sqGYuMvKgdxmzmTM5lNBgLdVpl6XNnPX")
.build();
Response response = client.newCall(request).execute();
// 从 SSE 流解析 sessionId(正则提取,适配真实返回格式)
String sseData = response.body().string();
Pattern pattern = Pattern.compile("sessionId=([a-f0-9\\-]+)");
Matcher matcher = pattern.matcher(sseData);
String sessionId = matcher.find() ? matcher.group(1) : "";
return sessionId;
}
public static void main(String[] args) throws Exception {
String sessionId = getMCPSessionId();
System.out.println("获取到Session ID:" + sessionId);
}
}
必须携带:mcp-session-id + 鉴权头
示例1:调用 tools/list 获取工具列表
curl -X POST -H "Content-Type: application/json" -H "Authorization: sqGYuMvKgdxmzmTM5lNBgLdVpl6XNnPX" -H "mcp-session-id: 你的sessionId" -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\",\"params\":{}}" https://ai-paas-mcp-endpoint.njuu.top/mcp
示例2:调用 tools/call 执行求和工具(真实可用)
curl -X POST -H "Content-Type: application/json" -H "Authorization: sqGYuMvKgdxmzmTM5lNBgLdVpl6XNnPX" -H "mcp-session-id: 你的sessionId" -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"everything_get-sum\",\"arguments\":{\"a\":1,\"b\":2}}}" https://ai-paas-mcp-endpoint.njuu.top/mcp
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class MCPToolCall {
// 通用MCP调用方法
public static String callMCPTool(String sessionId, String jsonBody) throws Exception {
OkHttpClient client = new OkHttpClient();
MediaType JSON = MediaType.parse("application/json; charset=utf-8");
RequestBody body = RequestBody.create(jsonBody, JSON);
Request request = new Request.Builder()
.url("https://ai-paas-mcp-endpoint.njuu.top/mcp")
.post(body)
.addHeader("Authorization", "sqGYuMvKgdxmzmTM5lNBgLdVpl6XNnPX")
.addHeader("mcp-session-id", sessionId)
.build();
Response response = client.newCall(request).execute();
return response.body().string();
}
public static void main(String[] args) throws Exception {
// 1. 获取Session ID
String sessionId = MCPSessionUtil.getMCPSessionId();
// 2. 调用工具列表
String listToolsJson = "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\",\"params\":{}}";
String listResult = callMCPTool(sessionId, listToolsJson);
System.out.println("工具列表:" + listResult);
// 3. 调用求和工具
String sumToolJson = "{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/call\",\"params\":{\"name\":\"everything_get-sum\",\"arguments\":{\"a\":1,\"b\":2}}}";
String sumResult = callMCPTool(sessionId, sumToolJson);
System.out.println("求和结果:" + sumResult);
}
}
智能路由需使用专属 Session ID(与基础MCP不通用),通过SSE获取
curl -N -H "Accept: text/event-stream" -H "Authorization: sqGYuMvKgdxmzmTM5lNBgLdVpl6XNnPX" https://ai-paas-mcp-endpoint.njuu.top/mcp/airouting
返回示例(提取 sessionId):
event: endpoint
data: /mcp/airouting?sessionId=c9b1733a-6030-493b-a553-f3c0b01d19bd
记录:c9b1733a-6030-493b-a553-f3c0b01d19bd
// 复用MCPSessionUtil的正则提取逻辑,仅修改URL
public class AirRoutingSessionUtil {
public static String getAirRoutingSessionId() throws Exception {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://ai-paas-mcp-endpoint.njuu.top/mcp/airouting")
.addHeader("Accept", "text/event-stream")
.addHeader("Authorization", "sqGYuMvKgdxmzmTM5lNBgLdVpl6XNnPX")
.build();
Response response = client.newCall(request).execute();
String sseData = response.body().string();
Pattern pattern = Pattern.compile("sessionId=([a-f0-9\\-]+)");
Matcher matcher = pattern.matcher(sseData);
String sessionId = matcher.find() ? matcher.group(1) : "";
return sessionId;
}
public static void main(String[] args) throws Exception {
String airRoutingSessionId = getAirRoutingSessionId();
System.out.println("智能路由Session ID:" + airRoutingSessionId);
}
}
curl -X POST -H "Content-Type: application/json" -H "Authorization: sqGYuMvKgdxmzmTM5lNBgLdVpl6XNnPX" -H "mcp-session-id: 智能路由Session ID" -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"search_tools\",\"arguments\":{\"query\":\"求和\",\"limit\":5}}}" https://ai-paas-mcp-endpoint.njuu.top/mcp/airouting
// 复用MCPToolCall的callMCPTool方法,仅修改URL为智能路由地址
public class AirRoutingToolCall {
public static void main(String[] args) throws Exception {
// 1. 获取智能路由Session ID
String airRoutingSessionId = AirRoutingSessionUtil.getAirRoutingSessionId();
// 2. 搜索求和工具
String searchJson = "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"search_tools\",\"arguments\":{\"query\":\"求和\",\"limit\":5}}}";
String searchResult = callAirRoutingTool(airRoutingSessionId, searchJson);
System.out.println("搜索工具结果:" + searchResult);
}
// 智能路由工具调用方法(URL不同)
public static String callAirRoutingTool(String sessionId, String jsonBody) throws Exception {
OkHttpClient client = new OkHttpClient();
MediaType JSON = MediaType.parse("application/json; charset=utf-8");
RequestBody body = RequestBody.create(jsonBody, JSON);
Request request = new Request.Builder()
.url("https://ai-paas-mcp-endpoint.njuu.top/mcp/airouting") // 智能路由地址
.post(body)
.addHeader("Authorization", "sqGYuMvKgdxmzmTM5lNBgLdVpl6XNnPX")
.addHeader("mcp-session-id", sessionId)
.build();
Response response = client.newCall(request).execute();
return response.body().string();
}
}
curl -X POST -H "Content-Type: application/json" -H "Authorization: sqGYuMvKgdxmzmTM5lNBgLdVpl6XNnPX" -H "mcp-session-id: 智能路由Session ID" -d "{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/call\",\"params\":{\"name\":\"execute_tool\",\"arguments\":{\"toolName\":\"everything_get-sum\",\"arguments\":{\"a\":1,\"b\":2}}}}" https://ai-paas-mcp-endpoint.njuu.top/mcp/airouting
// 3. 执行求和工具
String executeJson = "{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/call\",\"params\":{\"name\":\"execute_tool\",\"arguments\":{\"toolName\":\"everything_get-sum\",\"arguments\":{\"a\":1,\"b\":2}}}}";
String executeResult = callAirRoutingTool(airRoutingSessionId, executeJson);
curl -X POST -H "Content-Type: application/json" -H "Authorization: sqGYuMvKgdxmzmTM5lNBgLdVpl6XNnPX" -H "mcp-session-id: 智能路由Session ID" -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\",\"params\":{}}" https://ai-paas-mcp-endpoint.njuu.top/mcp/airouting
// 4. 查询智能路由工具列表
String listJson = "{\"jsonrpc\":\"2.0\",\"id\":3,\"method\":\"tools/list\",\"params\":{}}";
String listResult = callAirRoutingTool(airRoutingSessionId, listJson);
### 二、关键补充说明(文档末尾)
```markdown
---
## 三、注意事项
1. **Session ID 隔离**:基础MCP与智能路由的Session ID不通用,需分别获取;
2. **鉴权头规范**:无需添加 `Bearer` 前缀,直接使用纯密钥;
3. **工具名规范**:智能路由搜索工具名是 `search_tools`(复数),非 `search_tool`;
4. **依赖说明**:Java示例需引入OkHttp依赖(Maven):
```xml
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.12.0</version>
</dependency>