Skip to content

Commit 0aa6751

Browse files
author
nigel brown
committed
Fix optimizer mode to expose only find_tool and call_tool
- Change optimizer tool names from optim_find_tool/optim_call_tool to find_tool/call_tool - Prevent composite tools from being exposed when optimizer is enabled - Bump chart version from 0.0.101 to 0.0.102
1 parent 55f03db commit 0aa6751

3 files changed

Lines changed: 13 additions & 8 deletions

File tree

deploy/charts/operator-crds/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ apiVersion: v2
22
name: toolhive-operator-crds
33
description: A Helm chart for installing the ToolHive Operator CRDs into Kubernetes.
44
type: application
5-
version: 0.0.101
5+
version: 0.0.102
66
appVersion: "0.0.1"

pkg/vmcp/server/adapter/optimizer_adapter.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ import (
1313

1414
// OptimizerToolNames defines the tool names exposed when optimizer is enabled.
1515
const (
16-
FindToolName = "optim_find_tool"
17-
CallToolName = "optim_call_tool"
16+
FindToolName = "find_tool"
17+
CallToolName = "call_tool"
1818
)
1919

2020
// Pre-generated schemas for optimizer tools.

pkg/vmcp/server/server.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -472,7 +472,7 @@ func New(
472472
for _, tool := range optimizerTools {
473473
mcpServer.AddTool(tool.Tool, tool.Handler)
474474
}
475-
logger.Info("Optimizer tools registered globally (optim_find_tool, optim_call_tool)")
475+
logger.Info("Optimizer tools registered globally (find_tool, call_tool)")
476476

477477
// Ingest discovered backends into optimizer database (for semantic search)
478478
// Note: Backends are already discovered and registered with vMCP regardless of optimizer
@@ -577,7 +577,8 @@ func New(
577577
// Add composite tools to capabilities
578578
// Composite tools are static (from configuration) and not discovered from backends
579579
// They are added here to be exposed alongside backend tools in the session
580-
if len(srv.workflowDefs) > 0 {
580+
// When optimizer is enabled, composite tools are NOT exposed directly - they're accessible via find_tool/call_tool
581+
if srv.optimizerIntegration == nil && len(srv.workflowDefs) > 0 {
581582
compositeTools := convertWorkflowDefsToTools(srv.workflowDefs)
582583

583584
// Validate no conflicts between composite tool names and backend tool names
@@ -594,6 +595,10 @@ func New(
594595
logger.Debugw("added composite tools to session capabilities",
595596
"session_id", sessionID,
596597
"composite_tool_count", len(compositeTools))
598+
} else if srv.optimizerIntegration != nil && len(srv.workflowDefs) > 0 {
599+
logger.Debugw("composite tools not exposed directly in optimizer mode (accessible via find_tool/call_tool)",
600+
"session_id", sessionID,
601+
"composite_tool_count", len(srv.workflowDefs))
597602
}
598603

599604
// Store routing table in VMCPSession for subsequent requests
@@ -616,7 +621,7 @@ func New(
616621
"prompt_count", len(caps.RoutingTable.Prompts))
617622

618623
// When optimizer is enabled, we should NOT inject backend tools directly.
619-
// Instead, only optimizer tools (optim_find_tool, optim_call_tool) will be exposed.
624+
// Instead, only optimizer tools (find_tool, call_tool) will be exposed.
620625
// Backend tools are still discovered and stored for optimizer ingestion,
621626
// but not exposed directly to clients.
622627
if srv.optimizerIntegration == nil {
@@ -634,9 +639,9 @@ func New(
634639
"resource_count", len(caps.Resources))
635640
} else {
636641
// Optimizer tools already registered above (early registration)
637-
// Backend tools will be accessible via optim_find_tool and optim_call_tool
642+
// Backend tools will be accessible via find_tool and call_tool
638643

639-
// Inject resources (but not backend tools)
644+
// Inject resources (but not backend tools or composite tools)
640645
if len(caps.Resources) > 0 {
641646
sdkResources := srv.capabilityAdapter.ToSDKResources(caps.Resources)
642647
if err := srv.mcpServer.AddSessionResources(sessionID, sdkResources...); err != nil {

0 commit comments

Comments
 (0)