Skip to content

Commit 9246a3f

Browse files
- Added robot test Concurrent psql and Reverse Proxy MCP HTTP Server Query Tool.
1 parent 5210730 commit 9246a3f

File tree

5 files changed

+71
-11
lines changed

5 files changed

+71
-11
lines changed

.vscode/launch.json

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -512,6 +512,30 @@
512512
"--pgsrv.debug.enable=${input:serverDebugPublish}",
513513
],
514514
},
515+
{
516+
"name": "run server AND mcp",
517+
"type": "go",
518+
"request": "launch",
519+
"envFile": "${workspaceFolder}/.vscode/.env",
520+
"mode": "debug",
521+
"program": "${workspaceFolder}/stackql",
522+
"args": [
523+
"srv",
524+
"--pgsrv.port=5885",
525+
"--tls.allowInsecure",
526+
"--auth=${input:authString}",
527+
"--session=${input:sessionString}",
528+
"--gc=${input:gcString}",
529+
"--registry=${input:registryString}",
530+
"--namespaces=${input:namespaceString}",
531+
"--sqlBackend=${input:sqlBackendString}",
532+
"--dbInternal=${input:dbInternalString}",
533+
"--export.alias=${input:exportAliasString}",
534+
"--pgsrv.debug.enable=${input:serverDebugPublish}",
535+
"--mcp.server.type=reverse_proxy",
536+
"--mcp.config={\"server\": {\"transport\": \"http\", \"address\": \"127.0.0.1:9914\"}, \"backend\": {\"dsn\": \"postgres://stackql:[email protected]:5885?default_query_exec_mode=simple_protocol&standard_conforming_strings=on&client_encoding=UTF8\"}}"
537+
],
538+
},
515539
{
516540
"name": "run mTLS server",
517541
"type": "go",

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ require (
1919
github.com/spf13/viper v1.10.1
2020
github.com/stackql/any-sdk v0.2.2-beta07
2121
github.com/stackql/go-suffix-map v0.0.1-alpha01
22-
github.com/stackql/psql-wire v0.1.1-beta25
22+
github.com/stackql/psql-wire v0.1.1-beta29
2323
github.com/stackql/stackql-parser v0.0.15-alpha06
2424
github.com/stretchr/testify v1.10.0
2525
golang.org/x/sync v0.15.0

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -469,8 +469,8 @@ github.com/stackql/any-sdk v0.2.2-beta07 h1:c/MaT8p4lB30xslJo9LQm3JDWMMfzwheGXqf
469469
github.com/stackql/any-sdk v0.2.2-beta07/go.mod h1:m1o5TCfyKkdt2bREB3itwPv1MhM+lk4eu24KpPohFoY=
470470
github.com/stackql/go-suffix-map v0.0.1-alpha01 h1:TDUDS8bySu41Oo9p0eniUeCm43mnRM6zFEd6j6VUaz8=
471471
github.com/stackql/go-suffix-map v0.0.1-alpha01/go.mod h1:QAi+SKukOyf4dBtWy8UMy+hsXXV+yyEE4vmBkji2V7g=
472-
github.com/stackql/psql-wire v0.1.1-beta25 h1:DFBLjtz9N1S9gIYhqsjVZtVZMVSg7c0vvirPT29+S3s=
473-
github.com/stackql/psql-wire v0.1.1-beta25/go.mod h1:a44Wd8kDC3irFLpGutarKDBqhJ/aqXlj1aMzO5bVJYg=
472+
github.com/stackql/psql-wire v0.1.1-beta29 h1:WyM1TY3An6tojczWE8zpJNFVzOtI+zxneNb3L6JIdyA=
473+
github.com/stackql/psql-wire v0.1.1-beta29/go.mod h1:a44Wd8kDC3irFLpGutarKDBqhJ/aqXlj1aMzO5bVJYg=
474474
github.com/stackql/readline v0.0.2-alpha05 h1:ID4QzGdplFBsrSnTuz8pvKzWw96JbrJg8fsLry2UriU=
475475
github.com/stackql/readline v0.0.2-alpha05/go.mod h1:OFAYOdXk/X4+5GYiDXFfaGrk+bCN6Qv0SYY5HNzD2E0=
476476
github.com/stackql/stackql-go-sqlite3 v1.0.4-stackql h1:fp70Vdw+PCVEoPrAhkyqPuAlrIiHT79mght/0rlR4oY=

internal/stackql/cmd/mcp.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ import (
3131
"github.com/stackql/stackql/internal/stackql/mcpbackend"
3232
"github.com/stackql/stackql/pkg/mcp_server"
3333

34-
"github.com/jackc/pgx/v5"
3534
_ "github.com/jackc/pgx/v5" //nolint:revive // canonical driver pattern
3635
)
3736

@@ -76,10 +75,8 @@ func runMCPServer(handlerCtx handler.HandlerContext) {
7675
var backend mcp_server.Backend
7776
var backendErr error
7877
if mcpServerType == "reverse_proxy" {
78+
config.Server.Transport = "http"
7979
dsn := config.GetBackendConnectionString()
80-
conn, connErr := pgx.Connect(context.Background(), dsn)
81-
iqlerror.PrintErrorAndExitOneIfError(connErr)
82-
defer conn.Close(context.Background()) //nolint:errcheck // TODO: investigate
8380
// conn
8481
var cfg dto.SQLBackendCfg
8582
cfg.DSN = dsn

test/robot/functional/mcp.robot

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,18 @@ Start MCP Servers
2727
... \-\-tls.allowInsecure
2828
... \-\-pgsrv.port
2929
... 5665
30+
Start Process ${STACKQL_EXE}
31+
... srv
32+
... \-\-mcp.server.type\=reverse_proxy
33+
... \-\-mcp.config
34+
... {"server": {"transport": "http", "address": "127.0.0.1:9914"}, "backend": {"dsn": "postgres:\/\/stackql:[email protected]:5445?default_query_exec_mode\=simple_protocol"} }
35+
... \-\-registry
36+
... ${REGISTRY_NO_VERIFY_CFG_JSON_STR}
37+
... \-\-auth
38+
... ${AUTH_CFG_STR}
39+
... \-\-tls.allowInsecure
40+
... \-\-pgsrv.port
41+
... 5445
3042
Sleep 5s
3143

3244
*** Settings ***
@@ -142,8 +154,8 @@ Concurrent psql and MCP HTTP Server Query Tool
142154
... \-\-url\=http://127.0.0.1:9913
143155
... \-\-exec.action query_v2
144156
... \-\-exec.args {"sql": "SELECT assetType, count(*) as asset_count FROM google.cloudasset.assets WHERE parentType \= 'projects' and parent \= 'testing-project' GROUP BY assetType order by count(*) desc, assetType desc;"}
145-
... stdout=${CURDIR}${/}tmp${/}MCP-HTTP-Server-Query-Tool.txt
146-
... stderr=${CURDIR}${/}tmp${/}MCP-HTTP-Server-Query-Tool-stderr.txt
157+
... stdout=${CURDIR}${/}tmp${/}Concurrent-psql-and-MCP-HTTP-Server-Query-Tool.txt
158+
... stderr=${CURDIR}${/}tmp${/}Concurrent-psql-and-MCP-HTTP-Server-Query-Tool-stderr.txt
147159
Should Contain ${mcp_client_result.stdout} cloudkms.googleapis.com
148160
Should Be Equal As Integers ${mcp_client_result.rc} 0
149161
${posixInput} = Catenate
@@ -155,7 +167,34 @@ Concurrent psql and MCP HTTP Server Query Tool
155167
${shellExe} = Set Variable If "${IS_WINDOWS}" == "1" powershell sh
156168
${psql_client_result}= Run Process
157169
... ${shellExe} \-c ${input}
158-
... stdout=${CURDIR}${/}tmp${/}Concurrent-psql-and-MCP-HTTP-Server-Query-Tool.txt
159-
... stderr=${CURDIR}${/}tmp${/}Concurrent-psql-and-MCP-HTTP-Server-Query-Tool-stderr.txt
170+
... stdout=${CURDIR}${/}tmp${/}Concurrent-psql-and-MCP-HTTP-Server-Query-Tool-psql.txt
171+
... stderr=${CURDIR}${/}tmp${/}Concurrent-psql-and-MCP-HTTP-Server-Query-Tool-psql-stderr.txt
172+
Should Contain ${psql_client_result.stdout} cloudkms.googleapis.com
173+
Should Be Equal As Integers ${psql_client_result.rc} 0
174+
175+
Concurrent psql and Reverse Proxy MCP HTTP Server Query Tool
176+
Pass Execution If "%{IS_SKIP_MCP_TEST=false}" == "true" Some platforms do not have the MCP client available
177+
Sleep 5s
178+
${mcp_client_result}= Run Process ${STACKQL_MCP_CLIENT_EXE}
179+
... exec
180+
... \-\-client\-type\=http
181+
... \-\-url\=http://127.0.0.1:9914
182+
... \-\-exec.action query_v2
183+
... \-\-exec.args {"sql": "SELECT assetType, count(*) as asset_count FROM google.cloudasset.assets WHERE parentType \= 'projects' and parent \= 'testing-project' GROUP BY assetType order by count(*) desc, assetType desc;"}
184+
... stdout=${CURDIR}${/}tmp${/}Concurrent-psql-and-Reverse-Proxy-MCP-HTTP-Server-Query-Tool.txt
185+
... stderr=${CURDIR}${/}tmp${/}Concurrent-psql-and-Reverse-Proxy-MCP-HTTP-Server-Query-Tool-stderr.txt
186+
Should Contain ${mcp_client_result.stdout} cloudkms.googleapis.com
187+
Should Be Equal As Integers ${mcp_client_result.rc} 0
188+
${posixInput} = Catenate
189+
... "${PSQL_EXE}" -d postgres://stackql:[email protected]:5445 -c
190+
... "SELECT assetType, count(*) as asset_count FROM google.cloudasset.assets WHERE parentType = 'projects' and parent = 'testing-project' GROUP BY assetType order by count(*) desc, assetType desc;"
191+
${windowsInput} = Catenate
192+
... & ${posixInput}
193+
${input} = Set Variable If "${IS_WINDOWS}" == "1" ${windowsInput} ${posixInput}
194+
${shellExe} = Set Variable If "${IS_WINDOWS}" == "1" powershell sh
195+
${psql_client_result}= Run Process
196+
... ${shellExe} \-c ${input}
197+
... stdout=${CURDIR}${/}tmp${/}Concurrent-psql-and-Reverse-Proxy-MCP-HTTP-Server-Query-Tool-psql.txt
198+
... stderr=${CURDIR}${/}tmp${/}Concurrent-psql-and-Reverse-Proxy-MCP-HTTP-Server-Query-Tool-psql-stderr.txt
160199
Should Contain ${psql_client_result.stdout} cloudkms.googleapis.com
161200
Should Be Equal As Integers ${psql_client_result.rc} 0

0 commit comments

Comments
 (0)