@@ -12,6 +12,7 @@ import (
1212 "github.com/stacklok/toolhive/pkg/env"
1313 "github.com/stacklok/toolhive/pkg/groups"
1414 "github.com/stacklok/toolhive/pkg/logger"
15+ "github.com/stacklok/toolhive/pkg/telemetry"
1516 "github.com/stacklok/toolhive/pkg/vmcp"
1617 "github.com/stacklok/toolhive/pkg/vmcp/aggregator"
1718 "github.com/stacklok/toolhive/pkg/vmcp/auth/factory"
@@ -288,7 +289,6 @@ func runServe(cmd *cobra.Command, _ []string) error {
288289 // Create router
289290 rtr := vmcprouter .NewDefaultRouter ()
290291
291- // Setup authentication middleware
292292 logger .Infof ("Setting up incoming authentication (type: %s)" , cfg .IncomingAuth .Type )
293293
294294 authMiddleware , authInfoHandler , err := factory .NewIncomingAuthMiddleware (ctx , cfg .IncomingAuth )
@@ -303,13 +303,30 @@ func runServe(cmd *cobra.Command, _ []string) error {
303303 host , _ := cmd .Flags ().GetString ("host" )
304304 port , _ := cmd .Flags ().GetInt ("port" )
305305
306+ // If telemetry is configured, create the provider.
307+ var telemetryProvider * telemetry.Provider
308+ if cfg .Telemetry != nil {
309+ var err error
310+ telemetryProvider , err = telemetry .NewProvider (ctx , * cfg .Telemetry )
311+ if err != nil {
312+ return fmt .Errorf ("failed to create telemetry provider: %w" , err )
313+ }
314+ defer func () {
315+ err := telemetryProvider .Shutdown (ctx )
316+ if err != nil {
317+ logger .Errorf ("failed to shutdown telemetry provider: %v" , err )
318+ }
319+ }()
320+ }
321+
306322 serverCfg := & vmcpserver.Config {
307- Name : cfg .Name ,
308- Version : getVersion (),
309- Host : host ,
310- Port : port ,
311- AuthMiddleware : authMiddleware ,
312- AuthInfoHandler : authInfoHandler ,
323+ Name : cfg .Name ,
324+ Version : getVersion (),
325+ Host : host ,
326+ Port : port ,
327+ AuthMiddleware : authMiddleware ,
328+ AuthInfoHandler : authInfoHandler ,
329+ TelemetryProvider : telemetryProvider ,
313330 }
314331
315332 // Convert composite tool configurations to workflow definitions
@@ -322,7 +339,7 @@ func runServe(cmd *cobra.Command, _ []string) error {
322339 }
323340
324341 // Create server with discovery manager, backends, and workflow definitions
325- srv , err := vmcpserver .New (serverCfg , rtr , backendClient , discoveryMgr , backends , workflowDefs )
342+ srv , err := vmcpserver .New (ctx , serverCfg , rtr , backendClient , discoveryMgr , backends , workflowDefs )
326343 if err != nil {
327344 return fmt .Errorf ("failed to create Virtual MCP Server: %w" , err )
328345 }
0 commit comments