[ 
https://issues.apache.org/jira/browse/CAMEL-24369?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Federico Mariani reassigned CAMEL-24369:
----------------------------------------

    Assignee: Federico Mariani

> camel-ai-tool/camel-mcp-server: cross-runtime fixes (dependency alignment, 
> engine parity, self-referential MCP client)
> ----------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-24369
>                 URL: https://issues.apache.org/jira/browse/CAMEL-24369
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-openai
>            Reporter: Federico Mariani
>            Assignee: Federico Mariani
>            Priority: Major
>
> Testing the new ai-tool + mcp-server components (4.22.0-SNAPSHOT) with the 
> same application on Camel Main, Spring Boot and Quarkus surfaced five issues:
> 1. *Camel Main fails to start* with {{camel-bom}}: the MCP Java SDK pins 
> {{jackson-annotations:2.20}} which wins over the 2.22 needed by 
> {{jackson-databind:2.22.1}} -> {{NoClassDefFoundError: JsonSerializeAs}} in 
> {{VertxMcpServerEngine.doStart}}. Fix: direct aligned {{jackson-annotations}} 
> dependency in {{camel-mcp-server}}.
> 2. *Spring Boot fails to start* with the documented BOM setup: MCP 
> tool-argument validation ({{mcp-json-jackson3}}) requires the Jackson3-based 
> {{com.networknt:json-schema-validator:3.0.x}}, resolution picks 2.0.x -> 
> {{NoSuchMethodError: Schema.validate(tools.jackson.databind.JsonNode)}}. Fix: 
> direct dependency in {{camel-mcp-server-starter}} (plus {{camel-ai-tool}} 
> test->compile scope).
> 3. *MCP tool annotations dropped on Spring Boot and Quarkus*: {{title}}, 
> {{readOnlyHint}}, {{destructiveHint}}, {{idempotentHint}}, {{openWorldHint}} 
> are published by the Vert.x engine but silently lost by 
> {{SpringAiMcpServerEngine}} and {{QuarkusMcpServerEngine}}, contradicting the 
> ai-tool/mcp-server docs.
> 4. *Quarkus advertises an empty inputSchema for argSchema tools* (and drops 
> {{enum}} constraints of flat parameters): the engine rebuilds the schema from 
> flat {{addArgument}} calls instead of publishing the bridge's 
> {{inputSchemaJson()}}. Fix: {{ToolDefinition.setInputSchema}}.
> 5. *Self-referential MCP client fails startup on Quarkus*: 
> {{openai:chat-completion?mcpServer.x.url=<own /mcp>}} initializes its MCP 
> client eagerly during route warm-up; on Quarkus the HTTP server only accepts 
> connections after startup -> route fails, taking the app down (Main works; 
> Spring Boot degrades to 0 tools and self-heals via {{mcpToolRefresh}}). Fix 
> in {{camel-openai}}: a server unreachable at endpoint start is logged as WARN 
> and its initialization is deferred and retried on first use, reusing the 
> reconnect path. Invalid configuration still fails fast. This aligns all 
> runtimes and matches the server-side behavior of annotated tools (quarkiverse 
> {{@Tool}} / Spring AI {{@McpTool}}), which register in-process and cannot hit 
> this ordering problem.
> All five verified with an identical order-desk application on the three 
> runtimes (27/27 MCP conformance scenario checks each after the fixes). PRs 
> follow for apache/camel, apache/camel-spring-boot and apache/camel-quarkus.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to