This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-spring-boot.git
The following commit(s) were added to refs/heads/main by this push:
new 71c2bb23253 [create-pull-request] automated change (#1678)
71c2bb23253 is described below
commit 71c2bb23253411581ecaddbf057a64388e46fe9d
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Thu Feb 26 06:57:10 2026 +0100
[create-pull-request] automated change (#1678)
Co-authored-by: oscerd <[email protected]>
---
.../camel/springboot/catalog/components/git.json | 2 +-
.../catalog/components/langchain4j-agent.json | 12 ++++++--
.../catalog/components/langchain4j-tools.json | 2 +-
.../src/main/docs/langchain4j-agent.json | 12 ++++++++
.../LangChain4jAgentComponentConfiguration.java | 33 ++++++++++++++++++++++
5 files changed, 56 insertions(+), 5 deletions(-)
diff --git
a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/git.json
b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/git.json
index cf59051c1aa..ec7e5e1c7bc 100644
---
a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/git.json
+++
b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/git.json
@@ -55,7 +55,7 @@
"exchangePattern": { "index": 6, "kind": "parameter", "displayName":
"Exchange Pattern", "group": "consumer (advanced)", "label":
"consumer,advanced", "required": false, "type": "enum", "javaType":
"org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ],
"deprecated": false, "autowired": false, "secret": false, "description": "Sets
the exchange pattern when the consumer creates an exchange." },
"pollStrategy": { "index": 7, "kind": "parameter", "displayName": "Poll
Strategy", "group": "consumer (advanced)", "label": "consumer,advanced",
"required": false, "type": "object", "javaType":
"org.apache.camel.spi.PollingConsumerPollStrategy", "deprecated": false,
"autowired": false, "secret": false, "description": "A pluggable
org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your
custom implementation to control error handling usually occurred during the pol
[...]
"allowEmpty": { "index": 8, "kind": "parameter", "displayName": "Allow
Empty", "group": "producer", "label": "producer", "required": false, "type":
"boolean", "javaType": "boolean", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "defaultValue": true, "description": "The
flag to manage empty git commits" },
- "depth": { "index": 9, "kind": "parameter", "displayName": "Depth",
"group": "producer", "label": "producer", "required": false, "type": "integer",
"javaType": "int", "deprecated": false, "autowired": false, "secret": false,
"description": "Clone depth for shallow clones. A value of 1 fetches only the
latest commit. When set to 0 or not specified, a full clone is performed." },
+ "depth": { "index": 9, "kind": "parameter", "displayName": "Depth",
"group": "producer", "label": "producer", "required": false, "type": "integer",
"javaType": "int", "deprecated": false, "autowired": false, "secret": false,
"description": "Clone depth for shallow clones. Must be a positive integer. A
value of 1 fetches only the latest commit. When set to 0 or not specified, a
full clone is performed." },
"operation": { "index": 10, "kind": "parameter", "displayName":
"Operation", "group": "producer", "label": "producer", "required": false,
"type": "enum", "javaType": "java.lang.String", "enum": [ "add", "cherryPick",
"clean", "clone", "commit", "commitAll", "createBranch", "createTag",
"deleteBranch", "deleteTag", "gc", "init", "log", "pull", "push", "remoteAdd",
"remoteList", "remove", "showBranches", "showTags", "status" ], "deprecated":
false, "autowired": false, "secret": false, [...]
"remoteName": { "index": 11, "kind": "parameter", "displayName": "Remote
Name", "group": "producer", "label": "producer", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "description": "The remote repository name to use in
particular operation like pull" },
"remotePath": { "index": 12, "kind": "parameter", "displayName": "Remote
Path", "group": "producer", "label": "producer", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "description": "The remote repository path" },
diff --git
a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/langchain4j-agent.json
b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/langchain4j-agent.json
index 7703cf0dcc7..5e2628609d0 100644
---
a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/langchain4j-agent.json
+++
b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/langchain4j-agent.json
@@ -29,19 +29,25 @@
"configuration": { "index": 2, "kind": "property", "displayName":
"Configuration", "group": "producer", "label": "", "required": false, "type":
"object", "javaType":
"org.apache.camel.component.langchain4j.agent.LangChain4jAgentConfiguration",
"deprecated": false, "autowired": false, "secret": false, "description": "The
configuration" },
"lazyStartProducer": { "index": 3, "kind": "property", "displayName":
"Lazy Start Producer", "group": "producer", "label": "producer", "required":
false, "type": "boolean", "javaType": "boolean", "deprecated": false,
"autowired": false, "secret": false, "defaultValue": false, "description":
"Whether the producer should be started lazy (on the first message). By
starting lazy you can use this to allow CamelContext and routes to startup in
situations where a producer may otherwise fail [...]
"tags": { "index": 4, "kind": "property", "displayName": "Tags", "group":
"producer", "label": "", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "autowired": false, "secret": false,
"configurationClass":
"org.apache.camel.component.langchain4j.agent.LangChain4jAgentConfiguration",
"configurationField": "configuration", "description": "Tags for discovering and
calling Camel route tools" },
- "autowiredEnabled": { "index": 5, "kind": "property", "displayName":
"Autowired Enabled", "group": "advanced", "label": "advanced", "required":
false, "type": "boolean", "javaType": "boolean", "deprecated": false,
"autowired": false, "secret": false, "defaultValue": true, "description":
"Whether autowiring is enabled. This is used for automatic autowiring options
(the option must be marked as autowired) by looking up in the registry to find
if there is a single instance of matching t [...]
+ "autowiredEnabled": { "index": 5, "kind": "property", "displayName":
"Autowired Enabled", "group": "advanced", "label": "advanced", "required":
false, "type": "boolean", "javaType": "boolean", "deprecated": false,
"autowired": false, "secret": false, "defaultValue": true, "description":
"Whether autowiring is enabled. This is used for automatic autowiring options
(the option must be marked as autowired) by looking up in the registry to find
if there is a single instance of matching t [...]
+ "mcpClients": { "index": 6, "kind": "property", "displayName": "Mcp
Clients", "group": "advanced", "label": "advanced", "required": false, "type":
"array", "javaType": "java.util.List<dev.langchain4j.mcp.client.McpClient>",
"deprecated": false, "autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.langchain4j.agent.LangChain4jAgentConfiguration",
"configurationField": "configuration", "description": "Pre-built MCP (Model
Context Protocol) client insta [...]
+ "mcpServer": { "index": 7, "kind": "property", "displayName": "Mcp
Server", "group": "advanced", "label": "advanced", "required": false, "type":
"object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>",
"prefix": "mcpServer.", "multiValue": true, "deprecated": false, "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.langchain4j.agent.LangChain4jAgentConfiguration",
"configurationField": "configuration", "description": "MCP server [...]
},
"headers": {
"CamelLangChain4jAgentSystemMessage": { "index": 0, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The system prompt.", "constantName":
"org.apache.camel.component.langchain4j.agent.api.Headers#SYSTEM_MESSAGE" },
"CamelLangChain4jAgentMemoryId": { "index": 1, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "Object", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Memory ID.", "constantName":
"org.apache.camel.component.langchain4j.agent.api.Headers#MEMORY_ID" },
"CamelLangChain4jAgentUserMessage": { "index": 2, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The user message to accompany file
content when using WrappedFile as input.", "constantName":
"org.apache.camel.component.langchain4j.agent.api.Headers#USER_MESSAGE" },
- "CamelLangChain4jAgentMediaType": { "index": 3, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The media type (MIME type) of the file
content. Overrides auto-detection from file extension.", "constantName":
"org.apache.camel.component.langchain4j.agent.api.Headers#MEDIA_TYPE" }
+ "CamelLangChain4jAgentMediaType": { "index": 3, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The media type (MIME type) of the file
content. Overrides auto-detection from file extension.", "constantName":
"org.apache.camel.component.langchain4j.agent.api.Headers#MEDIA_TYPE" },
+ "CamelLangChain4jAgentExcludeTags": { "index": 4, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Comma-separated list of Camel tool tags
to exclude from this agent invocation.", "constantName":
"org.apache.camel.component.langchain4j.agent.api.Headers#EXCLUDE_TAGS" },
+ "CamelLangChain4jAgentExcludeMcpServers": { "index": 5, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Comma-separated list of MCP server
names (keys) to exclude from this agent invocation.", "constantName":
"org.apache.camel.component.langchain4j.agent.api.Headers#EXCLUDE_MCP_SERVERS" }
},
"properties": {
"agentId": { "index": 0, "kind": "path", "displayName": "Agent Id",
"group": "producer", "label": "", "required": true, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "description": "The Agent id" },
"agent": { "index": 1, "kind": "parameter", "displayName": "Agent",
"group": "producer", "label": "", "required": false, "type": "object",
"javaType": "org.apache.camel.component.langchain4j.agent.api.Agent",
"deprecated": false, "deprecationNote": "", "autowired": true, "secret": false,
"configurationClass":
"org.apache.camel.component.langchain4j.agent.LangChain4jAgentConfiguration",
"configurationField": "configuration", "description": "The agent to use for the
component" },
"agentFactory": { "index": 2, "kind": "parameter", "displayName": "Agent
Factory", "group": "producer", "label": "", "required": false, "type":
"object", "javaType":
"org.apache.camel.component.langchain4j.agent.api.AgentFactory", "deprecated":
false, "deprecationNote": "", "autowired": true, "secret": false,
"configurationClass":
"org.apache.camel.component.langchain4j.agent.LangChain4jAgentConfiguration",
"configurationField": "configuration", "description": "The agent factory to u
[...]
"tags": { "index": 3, "kind": "parameter", "displayName": "Tags", "group":
"producer", "label": "", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "autowired": false, "secret": false,
"configurationClass":
"org.apache.camel.component.langchain4j.agent.LangChain4jAgentConfiguration",
"configurationField": "configuration", "description": "Tags for discovering and
calling Camel route tools" },
- "lazyStartProducer": { "index": 4, "kind": "parameter", "displayName":
"Lazy Start Producer", "group": "producer (advanced)", "label":
"producer,advanced", "required": false, "type": "boolean", "javaType":
"boolean", "deprecated": false, "autowired": false, "secret": false,
"defaultValue": false, "description": "Whether the producer should be started
lazy (on the first message). By starting lazy you can use this to allow
CamelContext and routes to startup in situations where a produc [...]
+ "lazyStartProducer": { "index": 4, "kind": "parameter", "displayName":
"Lazy Start Producer", "group": "producer (advanced)", "label":
"producer,advanced", "required": false, "type": "boolean", "javaType":
"boolean", "deprecated": false, "autowired": false, "secret": false,
"defaultValue": false, "description": "Whether the producer should be started
lazy (on the first message). By starting lazy you can use this to allow
CamelContext and routes to startup in situations where a produc [...]
+ "mcpClients": { "index": 5, "kind": "parameter", "displayName": "Mcp
Clients", "group": "advanced", "label": "advanced", "required": false, "type":
"array", "javaType": "java.util.List<dev.langchain4j.mcp.client.McpClient>",
"deprecated": false, "autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.langchain4j.agent.LangChain4jAgentConfiguration",
"configurationField": "configuration", "description": "Pre-built MCP (Model
Context Protocol) client inst [...]
+ "mcpServer": { "index": 6, "kind": "parameter", "displayName": "Mcp
Server", "group": "advanced", "label": "advanced", "required": false, "type":
"object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>",
"prefix": "mcpServer.", "multiValue": true, "deprecated": false, "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.langchain4j.agent.LangChain4jAgentConfiguration",
"configurationField": "configuration", "description": "MCP server [...]
}
}
diff --git
a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/langchain4j-tools.json
b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/langchain4j-tools.json
index e77e056b01f..40176f37878 100644
---
a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/langchain4j-tools.json
+++
b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/langchain4j-tools.json
@@ -36,7 +36,7 @@
"description": { "index": 2, "kind": "parameter", "displayName":
"Description", "group": "consumer", "label": "consumer", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "description":
"Tool description" },
"exposed": { "index": 3, "kind": "parameter", "displayName": "Exposed",
"group": "consumer", "label": "consumer", "required": false, "type": "boolean",
"javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "defaultValue": true, "description": "Whether the tool
is automatically exposed to the LLM. When false, the tool is added to a
searchable list and can be discovered via the tool-search-tool" },
"name": { "index": 4, "kind": "parameter", "displayName": "Name", "group":
"consumer", "label": "consumer", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "description": "Tool name" },
- "parameters": { "index": 5, "kind": "parameter", "displayName":
"Parameters", "group": "consumer", "label": "consumer", "required": false,
"type": "object", "javaType": "java.util.Map<java.lang.String,
java.lang.String>", "prefix": "parameter.", "multiValue": true, "deprecated":
false, "deprecationNote": "", "autowired": false, "secret": false,
"description": "List of Tool parameters in the form of parameter.=. This is a
multi-value option with prefix: parameter." },
+ "parameters": { "index": 5, "kind": "parameter", "displayName":
"Parameters", "group": "consumer", "label": "consumer", "required": false,
"type": "object", "javaType": "java.util.Map<java.lang.String,
java.lang.String>", "prefix": "parameter.", "multiValue": true, "deprecated":
false, "deprecationNote": "", "autowired": false, "secret": false,
"description": "List of Tool parameters with optional metadata. Format:
parameter.=, parameter..description=, parameter..required=, parameter [...]
"bridgeErrorHandler": { "index": 6, "kind": "parameter", "displayName":
"Bridge Error Handler", "group": "consumer (advanced)", "label":
"consumer,advanced", "required": false, "type": "boolean", "javaType":
"boolean", "deprecated": false, "autowired": false, "secret": false,
"defaultValue": false, "description": "Allows for bridging the consumer to the
Camel routing Error Handler, which mean any exceptions (if possible) occurred
while the Camel consumer is trying to pickup incoming [...]
"camelToolParameter": { "index": 7, "kind": "parameter", "displayName":
"Camel Tool Parameter", "group": "consumer (advanced)", "label":
"consumer,advanced", "required": false, "type": "object", "javaType":
"org.apache.camel.component.langchain4j.tools.spec.CamelSimpleToolParameter",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "Tool's Camel Parameters, programmatically define Tool
description and parameters" },
"exceptionHandler": { "index": 8, "kind": "parameter", "displayName":
"Exception Handler", "group": "consumer (advanced)", "label":
"consumer,advanced", "required": false, "type": "object", "javaType":
"org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.",
"deprecated": false, "autowired": false, "secret": false, "description": "To
let the consumer use a custom ExceptionHandler. Notice if the option
bridgeErrorHandler is enabled then this option is not in use. By def [...]
diff --git
a/components-starter/camel-langchain4j-agent-starter/src/main/docs/langchain4j-agent.json
b/components-starter/camel-langchain4j-agent-starter/src/main/docs/langchain4j-agent.json
index da4d03473d2..5ca934852f3 100644
---
a/components-starter/camel-langchain4j-agent-starter/src/main/docs/langchain4j-agent.json
+++
b/components-starter/camel-langchain4j-agent-starter/src/main/docs/langchain4j-agent.json
@@ -56,6 +56,18 @@
"sourceType":
"org.apache.camel.component.langchain4j.agent.springboot.LangChain4jAgentComponentConfiguration",
"defaultValue": false
},
+ {
+ "name": "camel.component.langchain4j-agent.mcp-clients",
+ "type": "java.util.List<dev.langchain4j.mcp.client.McpClient>",
+ "description": "Pre-built MCP (Model Context Protocol) client instances
for external tool integration. Reference beans from the registry, e.g.,
#myMcpClient1,#myMcpClient2",
+ "sourceType":
"org.apache.camel.component.langchain4j.agent.springboot.LangChain4jAgentComponentConfiguration"
+ },
+ {
+ "name": "camel.component.langchain4j-agent.mcp-server",
+ "type": "java.util.Map<java.lang.String,java.lang.Object>",
+ "description": "MCP server definitions in the form of mcpServer..=.
Supported properties: transportType (stdio or http, default: stdio), command
(comma-separated, for stdio), url (for http), environment.= (for stdio),
timeout (in seconds, default: 60), logRequests, logResponses. This is a
multi-value option with prefix: mcpServer.",
+ "sourceType":
"org.apache.camel.component.langchain4j.agent.springboot.LangChain4jAgentComponentConfiguration"
+ },
{
"name": "camel.component.langchain4j-agent.tags",
"type": "java.lang.String",
diff --git
a/components-starter/camel-langchain4j-agent-starter/src/main/java/org/apache/camel/component/langchain4j/agent/springboot/LangChain4jAgentComponentConfiguration.java
b/components-starter/camel-langchain4j-agent-starter/src/main/java/org/apache/camel/component/langchain4j/agent/springboot/LangChain4jAgentComponentConfiguration.java
index e8f127fb2a4..ad02de529b0 100644
---
a/components-starter/camel-langchain4j-agent-starter/src/main/java/org/apache/camel/component/langchain4j/agent/springboot/LangChain4jAgentComponentConfiguration.java
+++
b/components-starter/camel-langchain4j-agent-starter/src/main/java/org/apache/camel/component/langchain4j/agent/springboot/LangChain4jAgentComponentConfiguration.java
@@ -16,6 +16,9 @@
*/
package org.apache.camel.component.langchain4j.agent.springboot;
+import java.util.List;
+import java.util.Map;
+import dev.langchain4j.mcp.client.McpClient;
import
org.apache.camel.component.langchain4j.agent.LangChain4jAgentConfiguration;
import org.apache.camel.component.langchain4j.agent.api.Agent;
import org.apache.camel.component.langchain4j.agent.api.AgentFactory;
@@ -77,6 +80,20 @@ public class LangChain4jAgentComponentConfiguration
* etc.
*/
private Boolean autowiredEnabled = true;
+ /**
+ * Pre-built MCP (Model Context Protocol) client instances for external
tool
+ * integration. Reference beans from the registry, e.g.,
+ * #myMcpClient1,#myMcpClient2
+ */
+ private List<McpClient> mcpClients;
+ /**
+ * MCP server definitions in the form of mcpServer..=. Supported
properties:
+ * transportType (stdio or http, default: stdio), command (comma-separated,
+ * for stdio), url (for http), environment.= (for stdio), timeout (in
+ * seconds, default: 60), logRequests, logResponses. This is a multi-value
+ * option with prefix: mcpServer.
+ */
+ private Map<String, Object> mcpServer;
public Agent getAgent() {
return agent;
@@ -125,4 +142,20 @@ public class LangChain4jAgentComponentConfiguration
public void setAutowiredEnabled(Boolean autowiredEnabled) {
this.autowiredEnabled = autowiredEnabled;
}
+
+ public List<McpClient> getMcpClients() {
+ return mcpClients;
+ }
+
+ public void setMcpClients(List<McpClient> mcpClients) {
+ this.mcpClients = mcpClients;
+ }
+
+ public Map<String, Object> getMcpServer() {
+ return mcpServer;
+ }
+
+ public void setMcpServer(Map<String, Object> mcpServer) {
+ this.mcpServer = mcpServer;
+ }
}
\ No newline at end of file