This is an automated email from the ASF dual-hosted git repository.
liuhongyu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shenyu.git
The following commit(s) were added to refs/heads/master by this push:
new d14a4238dc fix 'addCustomHeaders' header value replace bug (#6257)
d14a4238dc is described below
commit d14a4238dc4710a9dc48f87804e7ac621c9bee19
Author: MaMengzhen <[email protected]>
AuthorDate: Wed Dec 17 10:04:10 2025 +0800
fix 'addCustomHeaders' header value replace bug (#6257)
Co-authored-by: aias00 <[email protected]>
Co-authored-by: loongs-zhang <[email protected]>
---
.../mcp/server/callback/ShenyuToolCallback.java | 20 +++++++++++++++-----
.../plugin/mcp/server/request/RequestConfig.java | 13 ++++++++++++-
2 files changed, 27 insertions(+), 6 deletions(-)
diff --git
a/shenyu-plugin/shenyu-plugin-mcp-server/src/main/java/org/apache/shenyu/plugin/mcp/server/callback/ShenyuToolCallback.java
b/shenyu-plugin/shenyu-plugin-mcp-server/src/main/java/org/apache/shenyu/plugin/mcp/server/callback/ShenyuToolCallback.java
index 10839c9f39..3620519116 100644
---
a/shenyu-plugin/shenyu-plugin-mcp-server/src/main/java/org/apache/shenyu/plugin/mcp/server/callback/ShenyuToolCallback.java
+++
b/shenyu-plugin/shenyu-plugin-mcp-server/src/main/java/org/apache/shenyu/plugin/mcp/server/callback/ShenyuToolCallback.java
@@ -346,7 +346,7 @@ public class ShenyuToolCallback implements ToolCallback {
// Build body with parameter formatting (only format body parameters
that need it)
final JsonObject bodyJson = buildFormattedBodyJson(argsToJsonBody,
argsPosition, inputJson);
- return new RequestConfig(method, path, bodyJson, requestTemplate,
argsToJsonBody);
+ return new RequestConfig(method, path, bodyJson, requestTemplate,
argsToJsonBody, inputJson);
}
/**
@@ -470,10 +470,20 @@ public class ShenyuToolCallback implements ToolCallback {
if (requestConfig.getRequestTemplate().has("headers")) {
for (final var headerElem :
requestConfig.getRequestTemplate().getAsJsonArray("headers")) {
final JsonObject headerObj = headerElem.getAsJsonObject();
- requestBuilder.header(
- headerObj.get("key").getAsString(),
- headerObj.get("value").getAsString()
- );
+ String headerKey = headerObj.get("key").getAsString();
+ String headerValue = headerObj.get("value").getAsString();
+ if (headerValue.contains("{{.")) {
+ JsonObject inputJson = requestConfig.getInputJson();
+ if (Objects.nonNull(inputJson)) {
+ for (String key : inputJson.keySet()) {
+ if (inputJson.get(key).isJsonPrimitive() &&
inputJson.get(key).getAsJsonPrimitive().isString()) {
+ String value =
inputJson.get(key).getAsString();
+ headerValue = headerValue.replace("{{." + key
+ "}}", value);
+ }
+ }
+ }
+ }
+ requestBuilder.header(headerKey, headerValue);
}
}
}
diff --git
a/shenyu-plugin/shenyu-plugin-mcp-server/src/main/java/org/apache/shenyu/plugin/mcp/server/request/RequestConfig.java
b/shenyu-plugin/shenyu-plugin-mcp-server/src/main/java/org/apache/shenyu/plugin/mcp/server/request/RequestConfig.java
index 2b5da8b830..d6621c3245 100644
---
a/shenyu-plugin/shenyu-plugin-mcp-server/src/main/java/org/apache/shenyu/plugin/mcp/server/request/RequestConfig.java
+++
b/shenyu-plugin/shenyu-plugin-mcp-server/src/main/java/org/apache/shenyu/plugin/mcp/server/request/RequestConfig.java
@@ -30,13 +30,16 @@ public class RequestConfig {
private JsonObject requestTemplate;
private boolean argsToJsonBody;
+
+ private JsonObject inputJson;
- public RequestConfig(final String method, final String path, final
JsonObject bodyJson, final JsonObject requestTemplate, final boolean
argsToJsonBody) {
+ public RequestConfig(final String method, final String path, final
JsonObject bodyJson, final JsonObject requestTemplate, final boolean
argsToJsonBody, final JsonObject inputJson) {
this.method = method;
this.path = path;
this.bodyJson = bodyJson;
this.requestTemplate = requestTemplate;
this.argsToJsonBody = argsToJsonBody;
+ this.inputJson = inputJson;
}
public String getMethod() {
@@ -78,4 +81,12 @@ public class RequestConfig {
public void setArgsToJsonBody(final boolean argsToJsonBody) {
this.argsToJsonBody = argsToJsonBody;
}
+
+ public JsonObject getInputJson() {
+ return inputJson;
+ }
+
+ public void setInputJson(final JsonObject inputJson) {
+ this.inputJson = inputJson;
+ }
}