@@ -32,7 +32,7 @@ var _ = Describe("Protocol Builds E2E", Serial, func() {
32
32
var serverName string
33
33
34
34
BeforeEach (func () {
35
- serverName = generateUniqueProtocolServerName ("sequential-thinking-test" )
35
+ serverName = generateUniqueProtocolServerName ("sequential-thinking-noversion- test" )
36
36
})
37
37
38
38
AfterEach (func () {
@@ -73,6 +73,96 @@ var _ = Describe("Protocol Builds E2E", Serial, func() {
73
73
})
74
74
})
75
75
76
+ Context ("when starting @modelcontextprotocol/server-sequential-thinking@latest" , func () {
77
+ var serverName string
78
+
79
+ BeforeEach (func () {
80
+ serverName = generateUniqueProtocolServerName ("sequential-thinking-latest-test" )
81
+ })
82
+
83
+ AfterEach (func () {
84
+ if config .CleanupAfter {
85
+ err := e2e .StopAndRemoveMCPServer (config , serverName )
86
+ Expect (err ).ToNot (HaveOccurred (), "Should be able to stop and remove server" )
87
+ }
88
+ })
89
+
90
+ It ("should build and start successfully and provide sequential_thinking tool [Serial]" , func () {
91
+ By ("Starting the Sequential Thinking MCP server using npx:// protocol" )
92
+ stdout , stderr := e2e .NewTHVCommand (config , "run" ,
93
+ "--name" , serverName ,
94
+ "--transport" , "stdio" ,
95
+ "npx://@modelcontextprotocol/server-sequential-thinking@latest" ).ExpectSuccess ()
96
+
97
+ // The command should indicate success and show build process
98
+ output := stdout + stderr
99
+ Expect (output ).To (ContainSubstring ("Building Docker image" ), "Should show Docker build process" )
100
+ Expect (output ).To (ContainSubstring ("Successfully built" ), "Should successfully build the image" )
101
+
102
+ By ("Waiting for the server to be running" )
103
+ err := e2e .WaitForMCPServer (config , serverName , 120 * time .Second ) // Longer timeout for protocol builds
104
+ Expect (err ).ToNot (HaveOccurred (), "Server should be running within 120 seconds" )
105
+
106
+ By ("Verifying the server appears in the list" )
107
+ stdout , _ = e2e .NewTHVCommand (config , "list" ).ExpectSuccess ()
108
+ Expect (stdout ).To (ContainSubstring (serverName ), "Server should appear in the list" )
109
+ Expect (stdout ).To (ContainSubstring ("running" ), "Server should be in running state" )
110
+ Expect (stdout ).To (ContainSubstring ("npx-modelcontextprotocol-server-sequential-thinking" ), "Should show the built image name" )
111
+
112
+ By ("Listing tools and verifying sequentialthinking tool exists" )
113
+ stdout , _ = e2e .NewTHVCommand (config , "mcp" , "list" , "tools" , "--server" , serverName , "--timeout" , "60s" ).ExpectSuccess ()
114
+ Expect (stdout ).To (ContainSubstring ("sequentialthinking" ), "Should find sequentialthinking tool" )
115
+
116
+ GinkgoWriter .Printf ("✅ Protocol build successful: npx://@modelcontextprotocol/server-sequential-thinking\n " )
117
+ GinkgoWriter .Printf ("✅ Server running and provides sequential_thinking tool\n " )
118
+ })
119
+ })
120
+
121
+ Context (
"when starting @modelcontextprotocol/[email protected] " ,
func () {
122
+ var serverName string
123
+
124
+ BeforeEach (func () {
125
+ serverName = generateUniqueProtocolServerName ("sequential-thinking-pinned-test" )
126
+ })
127
+
128
+ AfterEach (func () {
129
+ if config .CleanupAfter {
130
+ err := e2e .StopAndRemoveMCPServer (config , serverName )
131
+ Expect (err ).ToNot (HaveOccurred (), "Should be able to stop and remove server" )
132
+ }
133
+ })
134
+
135
+ It ("should build and start successfully and provide sequential_thinking tool [Serial]" , func () {
136
+ By ("Starting the Sequential Thinking MCP server using npx:// protocol" )
137
+ stdout , stderr := e2e .NewTHVCommand (config , "run" ,
138
+ "--name" , serverName ,
139
+ "--transport" , "stdio" ,
140
+ "npx://@modelcontextprotocol/[email protected] " ).
ExpectSuccess ()
141
+
142
+ // The command should indicate success and show build process
143
+ output := stdout + stderr
144
+ Expect (output ).To (ContainSubstring ("Building Docker image" ), "Should show Docker build process" )
145
+ Expect (output ).To (ContainSubstring ("Successfully built" ), "Should successfully build the image" )
146
+
147
+ By ("Waiting for the server to be running" )
148
+ err := e2e .WaitForMCPServer (config , serverName , 120 * time .Second ) // Longer timeout for protocol builds
149
+ Expect (err ).ToNot (HaveOccurred (), "Server should be running within 120 seconds" )
150
+
151
+ By ("Verifying the server appears in the list" )
152
+ stdout , _ = e2e .NewTHVCommand (config , "list" ).ExpectSuccess ()
153
+ Expect (stdout ).To (ContainSubstring (serverName ), "Server should appear in the list" )
154
+ Expect (stdout ).To (ContainSubstring ("running" ), "Server should be in running state" )
155
+ Expect (stdout ).To (ContainSubstring ("npx-modelcontextprotocol-server-sequential-thinking" ), "Should show the built image name" )
156
+
157
+ By ("Listing tools and verifying sequentialthinking tool exists" )
158
+ stdout , _ = e2e .NewTHVCommand (config , "mcp" , "list" , "tools" , "--server" , serverName , "--timeout" , "60s" ).ExpectSuccess ()
159
+ Expect (stdout ).To (ContainSubstring ("sequentialthinking" ), "Should find sequentialthinking tool" )
160
+
161
+ GinkgoWriter .Printf ("✅ Protocol build successful: npx://@modelcontextprotocol/server-sequential-thinking\n " )
162
+ GinkgoWriter .Printf ("✅ Server running and provides sequential_thinking tool\n " )
163
+ })
164
+ })
165
+
76
166
Context ("when testing error conditions" , func () {
77
167
var serverName string
78
168
0 commit comments