Federico Mariani created CAMEL-26111:
----------------------------------------

             Summary: camel-mcp-server - support progressive discovery and 
invocation of searchable ai-tool routes
                 Key: CAMEL-26111
                 URL: https://issues.apache.org/jira/browse/CAMEL-26111
             Project: Camel
          Issue Type: Improvement
          Components: camel-mcp-server, camel-ai
            Reporter: Federico Mariani


h2. Context

CAMEL-24767 and PR https://github.com/apache/camel/pull/28354 introduce a 
shared tool-search index and deferred visibility for ai-tool routes consumed by 
Camel's langchain4j-agent, spring-ai-chat and openai producers. A route can be 
marked searchable=true so a Camel AI producer loads its definition only after 
discovery.

The MCP server does not consume this visibility flag. McpServerBridge publishes 
every tag-selected AiToolSpec through engine.toolAdded(createTool(spec)), so 
external MCP clients still receive all exposed route tools. Server-side 
discovery would allow external agents to discover and invoke a large searchable 
route catalog through Camel's MCP server.

This issue concerns camel-mcp-server exposing application ai-tool routes. It is 
distinct from the tool profiles for the Camel CLI development server in 
CAMEL-25537.

h2. Proposed behavior

# Introduce an explicit, opt-in server discovery mode; preserve today's 
full-catalog behavior by default. Option and synthetic tool names are 
illustrative.
# In discovery mode, when at least one eligible route has searchable=true, 
expose a search_tools(query, limit) capability. Keep eligible searchable=false 
route tools directly exposed.
# Reuse the shared framework-neutral index/ranking from CAMEL-24767. Search the 
server-selected catalog only, respecting tag selection, configuration 
restrictions and applicable access controls.
# Return bounded matches with tool name, description, complete input schema, 
output schema and annotations where available. Explain the available capability 
categories in server instructions or the discovery tool description.
# Provide a reliable invocation path for discovered routes on external clients. 
Returning names or schema text alone does not register callable functions with 
a host. A stable call_tool(name, arguments) dispatcher alongside search_tools 
is one candidate design; the final design must establish how discovery leads to 
execution.
# Dispatch through existing route-tool execution and authorization logic, 
preserving input validation, trusted caller identity, invocation identifiers, 
and error handling. Discovery is a visibility policy, not execution 
authorization.
# Reflect route registration, changes, stop/suspend, removal and restart in 
search and invocation. Cache embeddings/index data with invalidation; bound any 
retained state.

h2. Protocol and interoperability constraints

The MCP 2026-07-28 Tools specification says tools/list must not vary per 
connection or as a side effect of other requests on the connection. Do not 
assume that searching may reveal extra tools in a session-specific tools/list 
response. A stable meta-tool surface is one possible solution; assess supported 
protocol versions and engines explicitly.

Specification: 
https://modelcontextprotocol.io/specification/2026-07-28/server/tools

Clients that already defer MCP tools may gain less from server-side search and 
could incur an additional discovery step. Preserve an opt-out/full-catalog mode 
and evaluate the tradeoff rather than assuming universal token savings.

h2. Acceptance criteria

* End-to-end coverage: discover a searchable route, obtain its complete schema, 
invoke it, and receive the original route result through an external MCP client.
* Always-visible tools remain available; disabled mode preserves existing 
behavior; empty and no-match searches are explicit and bounded.
* Tag/configuration/access restrictions are preserved, and calls retain normal 
authorization and argument validation. Search must not make an unavailable 
route executable.
* Lifecycle changes invalidate stale catalog entries; concurrent clients do not 
share mutable discovery state unexpectedly.
* Verify supported HTTP/stdio engines and representative external clients, 
including clients that cache tool lists and clients with native tool search. 
Document the compatibility matrix and invocation contract.
* Measure initial schema/token footprint, retrieval quality, latency and 
repeated-search cost on a realistic catalog.
* Document server configuration and the distinction between producer-side 
search in CAMEL-24767 and server-side discovery here.

h2. References

* CAMEL-24767 and https://github.com/apache/camel/pull/28354
* design/aiTool.adoc for the shared tool abstraction and existing execution 
ownership
* PayPal SCOUT (search and execution meta-tools): 
https://arxiv.org/abs/2608.23992

_AI-generated issue by Codex on behalf of @Croway (authenticated Jira operator: 
fmariani)._




--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to