diff --git a/cmd/root.go b/cmd/root.go index 9bb9f3a..907c171 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -41,7 +41,7 @@ func NewRootCommand(serverVersion string) *cobra.Command { authClientFactory := client.NewPingOneClientAuthWrapperFactory(serverVersion, mcpEnvironmentId) // Always run on stdio transport - result.AddCommand(run.NewCommand(tokenStoreFactory, clientFactory, legacyClientFactory, authClientFactory, &mcp.StdioTransport{})) + result.AddCommand(run.NewCommand(tokenStoreFactory, clientFactory, legacyClientFactory, authClientFactory, &mcp.StdioTransport{}, serverVersion)) result.AddCommand(logout.NewCommand(tokenStoreFactory)) diff --git a/cmd/run/run.go b/cmd/run/run.go index 759e1f8..9dd9460 100644 --- a/cmd/run/run.go +++ b/cmd/run/run.go @@ -25,7 +25,7 @@ import ( const commandName = "run" -func NewCommand(tokenStoreFactory tokenstore.TokenStoreFactory, clientFactory sdk.ClientFactory, legacyClientFactory legacy.ClientFactory, authClientFactory client.AuthClientFactory, transport mcp.Transport) *cobra.Command { +func NewCommand(tokenStoreFactory tokenstore.TokenStoreFactory, clientFactory sdk.ClientFactory, legacyClientFactory legacy.ClientFactory, authClientFactory client.AuthClientFactory, transport mcp.Transport, version string) *cobra.Command { var includedTools []string var excludedTools []string var includedToolCollections []string @@ -98,7 +98,7 @@ The server will communicate over stdin/stdout.`, warnAboutPotentialWriteToolsFiltered(cmd.Context(), includedTools) } - err = server.Start(cmd.Context(), transport, clientFactory, legacyClientFactory, authClientFactory, tokenStore, toolFilter, grantType) + err = server.Start(cmd.Context(), version, transport, clientFactory, legacyClientFactory, authClientFactory, tokenStore, toolFilter, grantType) if err != nil { return errs.NewCommandError(commandName, err) } diff --git a/internal/server/server.go b/internal/server/server.go index 51f389c..b916ef7 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -20,10 +20,11 @@ import ( "github.com/pingidentity/pingone-mcp-server/internal/tools/validation" ) -func Start(ctx context.Context, transport mcp.Transport, clientFactory sdk.ClientFactory, legacySdkClientFactory legacy.ClientFactory, authClientFactory client.AuthClientFactory, tokenStore tokenstore.TokenStore, toolFilter *filter.Filter, grantType auth.GrantType) error { +func Start(ctx context.Context, version string, transport mcp.Transport, clientFactory sdk.ClientFactory, legacySdkClientFactory legacy.ClientFactory, authClientFactory client.AuthClientFactory, tokenStore tokenstore.TokenStore, toolFilter *filter.Filter, grantType auth.GrantType) error { server := mcp.NewServer(&mcp.Implementation{ Name: "pingone-mcp-server", - Version: "v0.0.1", + Title: "PingOne MCP Server", + Version: version, }, &mcp.ServerOptions{ Logger: logger.FromContext(ctx), }) diff --git a/internal/server/server_test.go b/internal/server/server_test.go index 38a7e51..7313b91 100644 --- a/internal/server/server_test.go +++ b/internal/server/server_test.go @@ -28,7 +28,7 @@ func TestServer_MCPClient(t *testing.T) { serverDone := make(chan error, 1) go func() { // Pass in dummy client for now, not testing tool functionality - err := server.Start(context.Background(), serverTransport, sdk.NewEmptyClientFactory(), legacy.NewEmptyClientFactory(), testutils.NewEmptyMockAuthClientFactory(), testutils.NewInMemoryTokenStore(), filter.PassthroughFilter(), defaultGrantType) + err := server.Start(context.Background(), "test-version", serverTransport, sdk.NewEmptyClientFactory(), legacy.NewEmptyClientFactory(), testutils.NewEmptyMockAuthClientFactory(), testutils.NewInMemoryTokenStore(), filter.PassthroughFilter(), defaultGrantType) serverDone <- err }() @@ -121,7 +121,7 @@ func TestServer_ToolFiltering(t *testing.T) { serverDone := make(chan error, 1) go func() { toolFilter := filter.NewFilter(tt.readOnly, tt.includedTools, tt.excludedTools, tt.includedToolCollections, tt.excludedToolCollections) - err := server.Start(context.Background(), serverTransport, sdk.NewEmptyClientFactory(), legacy.NewEmptyClientFactory(), testutils.NewEmptyMockAuthClientFactory(), testutils.NewInMemoryTokenStore(), toolFilter, defaultGrantType) + err := server.Start(context.Background(), "test-version", serverTransport, sdk.NewEmptyClientFactory(), legacy.NewEmptyClientFactory(), testutils.NewEmptyMockAuthClientFactory(), testutils.NewInMemoryTokenStore(), toolFilter, defaultGrantType) serverDone <- err }() diff --git a/internal/testutils/execute.go b/internal/testutils/execute.go index 356b2b5..8de5f9d 100644 --- a/internal/testutils/execute.go +++ b/internal/testutils/execute.go @@ -39,7 +39,7 @@ func ExecuteCliRootCommand(t *testing.T, ctx context.Context, args ...string) (e func ExecuteCliRunCommand(t *testing.T, ctx context.Context, tokenStoreFactory tokenstore.TokenStoreFactory, clientFactory sdk.ClientFactory, legacyClientFactory legacy.ClientFactory, authClientFactory client.AuthClientFactory, transport mcp.Transport, args ...string) (err error) { t.Helper() - runCmd := run.NewCommand(tokenStoreFactory, clientFactory, legacyClientFactory, authClientFactory, transport) + runCmd := run.NewCommand(tokenStoreFactory, clientFactory, legacyClientFactory, authClientFactory, transport, TestServerVersion) prepareTestCommand(runCmd, args...) return runCmd.ExecuteContext(ctx)