From 26c449f9a0a842478b96107f6dde442845252569 Mon Sep 17 00:00:00 2001 From: mariankrotil Date: Wed, 3 Sep 2025 17:40:56 +0200 Subject: [PATCH 1/6] feat(mcp-server-tool): add serverTransport string property under mcpServerContext in the mcp-server-tool event schema --- schema/ext.keboola.mcp-server-tool.json | 6 +++++- schema/ext.keboola.mcp-server.tool.json | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/schema/ext.keboola.mcp-server-tool.json b/schema/ext.keboola.mcp-server-tool.json index 95b5fed..f61a13f 100644 --- a/schema/ext.keboola.mcp-server-tool.json +++ b/schema/ext.keboola.mcp-server-tool.json @@ -16,13 +16,17 @@ }, "sessionId": { "type": "string" + }, + "serverTransport": { + "type": "string" } }, "required": [ "appEnv", "version", "userAgent", - "sessionId" + "sessionId", + "serverTransport" ] }, "message": { diff --git a/schema/ext.keboola.mcp-server.tool.json b/schema/ext.keboola.mcp-server.tool.json index 95b5fed..f61a13f 100644 --- a/schema/ext.keboola.mcp-server.tool.json +++ b/schema/ext.keboola.mcp-server.tool.json @@ -16,13 +16,17 @@ }, "sessionId": { "type": "string" + }, + "serverTransport": { + "type": "string" } }, "required": [ "appEnv", "version", "userAgent", - "sessionId" + "sessionId", + "serverTransport" ] }, "message": { From aad4be003f1052e381ac1dce6079b7b98adb6e19 Mon Sep 17 00:00:00 2001 From: mariankrotil Date: Wed, 3 Sep 2025 17:42:16 +0200 Subject: [PATCH 2/6] test(mcp-server-tool): update tests to correspond to the new changes with the serverTransport property --- tests/events/ext.keboola.mcp-server-tool.json | 3 ++- tests/events/ext.keboola.mcp-server.tool.json | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/events/ext.keboola.mcp-server-tool.json b/tests/events/ext.keboola.mcp-server-tool.json index 153afb0..4d9a222 100644 --- a/tests/events/ext.keboola.mcp-server-tool.json +++ b/tests/events/ext.keboola.mcp-server-tool.json @@ -21,7 +21,8 @@ "appEnv": "remote", "version": "1.0.0", "userAgent": "mcp-server-local", - "sessionId": "1234567890" + "sessionId": "1234567890", + "serverTransport": "streamable-http" }, "tool": { "name": "list-buckets", diff --git a/tests/events/ext.keboola.mcp-server.tool.json b/tests/events/ext.keboola.mcp-server.tool.json index 6afe7a8..7561bac 100644 --- a/tests/events/ext.keboola.mcp-server.tool.json +++ b/tests/events/ext.keboola.mcp-server.tool.json @@ -21,7 +21,8 @@ "appEnv": "remote", "version": "1.0.0", "userAgent": "mcp-server-local", - "sessionId": "1234567890" + "sessionId": "1234567890", + "serverTransport": "stdio" }, "tool": { "name": "list-buckets", From 850144689f767fc0205a0e8bc885cb681f240a12 Mon Sep 17 00:00:00 2001 From: mariankrotil Date: Thu, 4 Sep 2025 10:31:58 +0200 Subject: [PATCH 3/6] refactor(mcp-server-tool): make serverState enum --- schema/ext.keboola.mcp-server-tool.json | 10 +++++++++- schema/ext.keboola.mcp-server.tool.json | 10 +++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/schema/ext.keboola.mcp-server-tool.json b/schema/ext.keboola.mcp-server-tool.json index f61a13f..b89d16b 100644 --- a/schema/ext.keboola.mcp-server-tool.json +++ b/schema/ext.keboola.mcp-server-tool.json @@ -18,7 +18,15 @@ "type": "string" }, "serverTransport": { - "type": "string" + "type": "string", + "enum": [ + "stdio", + "http", + "sse", + "streamable-http", + "http-compat", + "NA" + ] } }, "required": [ diff --git a/schema/ext.keboola.mcp-server.tool.json b/schema/ext.keboola.mcp-server.tool.json index f61a13f..b89d16b 100644 --- a/schema/ext.keboola.mcp-server.tool.json +++ b/schema/ext.keboola.mcp-server.tool.json @@ -18,7 +18,15 @@ "type": "string" }, "serverTransport": { - "type": "string" + "type": "string", + "enum": [ + "stdio", + "http", + "sse", + "streamable-http", + "http-compat", + "NA" + ] } }, "required": [ From b7b2c66f564e77d11793d04013e75ea9f31ec440 Mon Sep 17 00:00:00 2001 From: mariankrotil Date: Thu, 4 Sep 2025 10:32:19 +0200 Subject: [PATCH 4/6] tests(mcp-server-tool): add tests for each enum type --- .../ext.keboola.mcp-server-tool.NA.json | 50 +++++++++++++++++++ ...t.keboola.mcp-server-tool.http-compat.json | 50 +++++++++++++++++++ .../ext.keboola.mcp-server-tool.http.json | 50 +++++++++++++++++++ .../ext.keboola.mcp-server-tool.sse.json | 50 +++++++++++++++++++ .../ext.keboola.mcp-server.tool.NA.json | 50 +++++++++++++++++++ ...t.keboola.mcp-server.tool.http-compat.json | 50 +++++++++++++++++++ .../ext.keboola.mcp-server.tool.http.json | 50 +++++++++++++++++++ .../ext.keboola.mcp-server.tool.sse.json | 50 +++++++++++++++++++ 8 files changed, 400 insertions(+) create mode 100644 tests/events/ext.keboola.mcp-server-tool.NA.json create mode 100644 tests/events/ext.keboola.mcp-server-tool.http-compat.json create mode 100644 tests/events/ext.keboola.mcp-server-tool.http.json create mode 100644 tests/events/ext.keboola.mcp-server-tool.sse.json create mode 100644 tests/events/ext.keboola.mcp-server.tool.NA.json create mode 100644 tests/events/ext.keboola.mcp-server.tool.http-compat.json create mode 100644 tests/events/ext.keboola.mcp-server.tool.http.json create mode 100644 tests/events/ext.keboola.mcp-server.tool.sse.json diff --git a/tests/events/ext.keboola.mcp-server-tool.NA.json b/tests/events/ext.keboola.mcp-server-tool.NA.json new file mode 100644 index 0000000..5e95d1d --- /dev/null +++ b/tests/events/ext.keboola.mcp-server-tool.NA.json @@ -0,0 +1,50 @@ +{ + "id": 1234567894, + "event": "ext.keboola.mcp-server-tool", + "component": "keboola.mcp-server-tool", + "message": "Test message for mcp-server (NA)", + "description": "", + "type": "info", + "runId": null, + "created": "2024-07-15T10:00:00+0200", + "configurationId": null, + "objectId": "", + "objectName": "", + "objectType": "", + "context": { + "remoteAddr": "127.0.0.1", + "httpReferer": null, + "httpUserAgent": "mcp-server-test-suite", + "apiVersion": "v1" + }, + "mcpServerContext": { + "appEnv": "remote", + "version": "1.0.0", + "userAgent": "mcp-server-local", + "sessionId": "1234567894", + "serverTransport": "NA" + }, + "tool": { + "name": "list-buckets", + "arguments": [ + { + "key": "region", + "value": "eu-central-1" + }, + { + "key": "branchId", + "value": "67890" + } + ] + }, + "performance": {}, + "token": { + "id": 98765, + "name": "test-user@keboola.com" + }, + "idBranch": 67890, + "uri": "https://connection.keboola.com/v2/storage/events/1234567894", + "attachments": [] +} + + diff --git a/tests/events/ext.keboola.mcp-server-tool.http-compat.json b/tests/events/ext.keboola.mcp-server-tool.http-compat.json new file mode 100644 index 0000000..bd43baa --- /dev/null +++ b/tests/events/ext.keboola.mcp-server-tool.http-compat.json @@ -0,0 +1,50 @@ +{ + "id": 1234567893, + "event": "ext.keboola.mcp-server-tool", + "component": "keboola.mcp-server-tool", + "message": "Test message for mcp-server (http-compat)", + "description": "", + "type": "info", + "runId": null, + "created": "2024-07-15T10:00:00+0200", + "configurationId": null, + "objectId": "", + "objectName": "", + "objectType": "", + "context": { + "remoteAddr": "127.0.0.1", + "httpReferer": null, + "httpUserAgent": "mcp-server-test-suite", + "apiVersion": "v1" + }, + "mcpServerContext": { + "appEnv": "remote", + "version": "1.0.0", + "userAgent": "mcp-server-local", + "sessionId": "1234567893", + "serverTransport": "http-compat" + }, + "tool": { + "name": "list-buckets", + "arguments": [ + { + "key": "region", + "value": "eu-central-1" + }, + { + "key": "branchId", + "value": "67890" + } + ] + }, + "performance": {}, + "token": { + "id": 98765, + "name": "test-user@keboola.com" + }, + "idBranch": 67890, + "uri": "https://connection.keboola.com/v2/storage/events/1234567893", + "attachments": [] +} + + diff --git a/tests/events/ext.keboola.mcp-server-tool.http.json b/tests/events/ext.keboola.mcp-server-tool.http.json new file mode 100644 index 0000000..883951b --- /dev/null +++ b/tests/events/ext.keboola.mcp-server-tool.http.json @@ -0,0 +1,50 @@ +{ + "id": 1234567891, + "event": "ext.keboola.mcp-server-tool", + "component": "keboola.mcp-server-tool", + "message": "Test message for mcp-server (http)", + "description": "", + "type": "info", + "runId": null, + "created": "2024-07-15T10:00:00+0200", + "configurationId": null, + "objectId": "", + "objectName": "", + "objectType": "", + "context": { + "remoteAddr": "127.0.0.1", + "httpReferer": null, + "httpUserAgent": "mcp-server-test-suite", + "apiVersion": "v1" + }, + "mcpServerContext": { + "appEnv": "remote", + "version": "1.0.0", + "userAgent": "mcp-server-local", + "sessionId": "1234567891", + "serverTransport": "http" + }, + "tool": { + "name": "list-buckets", + "arguments": [ + { + "key": "region", + "value": "eu-central-1" + }, + { + "key": "branchId", + "value": "67890" + } + ] + }, + "performance": {}, + "token": { + "id": 98765, + "name": "test-user@keboola.com" + }, + "idBranch": 67890, + "uri": "https://connection.keboola.com/v2/storage/events/1234567891", + "attachments": [] +} + + diff --git a/tests/events/ext.keboola.mcp-server-tool.sse.json b/tests/events/ext.keboola.mcp-server-tool.sse.json new file mode 100644 index 0000000..2f55d61 --- /dev/null +++ b/tests/events/ext.keboola.mcp-server-tool.sse.json @@ -0,0 +1,50 @@ +{ + "id": 1234567892, + "event": "ext.keboola.mcp-server-tool", + "component": "keboola.mcp-server-tool", + "message": "Test message for mcp-server (sse)", + "description": "", + "type": "info", + "runId": null, + "created": "2024-07-15T10:00:00+0200", + "configurationId": null, + "objectId": "", + "objectName": "", + "objectType": "", + "context": { + "remoteAddr": "127.0.0.1", + "httpReferer": null, + "httpUserAgent": "mcp-server-test-suite", + "apiVersion": "v1" + }, + "mcpServerContext": { + "appEnv": "remote", + "version": "1.0.0", + "userAgent": "mcp-server-local", + "sessionId": "1234567892", + "serverTransport": "sse" + }, + "tool": { + "name": "list-buckets", + "arguments": [ + { + "key": "region", + "value": "eu-central-1" + }, + { + "key": "branchId", + "value": "67890" + } + ] + }, + "performance": {}, + "token": { + "id": 98765, + "name": "test-user@keboola.com" + }, + "idBranch": 67890, + "uri": "https://connection.keboola.com/v2/storage/events/1234567892", + "attachments": [] +} + + diff --git a/tests/events/ext.keboola.mcp-server.tool.NA.json b/tests/events/ext.keboola.mcp-server.tool.NA.json new file mode 100644 index 0000000..66b6750 --- /dev/null +++ b/tests/events/ext.keboola.mcp-server.tool.NA.json @@ -0,0 +1,50 @@ +{ + "id": 2234567894, + "event": "ext.keboola.mcp-server.tool", + "component": "keboola.mcp-server.tool", + "message": "Test message for mcp-server (NA)", + "description": "", + "type": "info", + "runId": null, + "created": "2024-07-15T10:00:00+0200", + "configurationId": null, + "objectId": "", + "objectName": "", + "objectType": "", + "context": { + "remoteAddr": "127.0.0.1", + "httpReferer": null, + "httpUserAgent": "mcp-server-test-suite", + "apiVersion": "v1" + }, + "mcpServerContext": { + "appEnv": "remote", + "version": "1.0.0", + "userAgent": "mcp-server-local", + "sessionId": "2234567894", + "serverTransport": "NA" + }, + "tool": { + "name": "list-buckets", + "arguments": [ + { + "key": "region", + "value": "eu-central-1" + }, + { + "key": "branchId", + "value": "67890" + } + ] + }, + "performance": {}, + "token": { + "id": 98765, + "name": "test-user@keboola.com" + }, + "idBranch": 67890, + "uri": "https://connection.keboola.com/v2/storage/events/2234567894", + "attachments": [] +} + + diff --git a/tests/events/ext.keboola.mcp-server.tool.http-compat.json b/tests/events/ext.keboola.mcp-server.tool.http-compat.json new file mode 100644 index 0000000..63518a9 --- /dev/null +++ b/tests/events/ext.keboola.mcp-server.tool.http-compat.json @@ -0,0 +1,50 @@ +{ + "id": 2234567893, + "event": "ext.keboola.mcp-server.tool", + "component": "keboola.mcp-server.tool", + "message": "Test message for mcp-server (http-compat)", + "description": "", + "type": "info", + "runId": null, + "created": "2024-07-15T10:00:00+0200", + "configurationId": null, + "objectId": "", + "objectName": "", + "objectType": "", + "context": { + "remoteAddr": "127.0.0.1", + "httpReferer": null, + "httpUserAgent": "mcp-server-test-suite", + "apiVersion": "v1" + }, + "mcpServerContext": { + "appEnv": "remote", + "version": "1.0.0", + "userAgent": "mcp-server-local", + "sessionId": "2234567893", + "serverTransport": "http-compat" + }, + "tool": { + "name": "list-buckets", + "arguments": [ + { + "key": "region", + "value": "eu-central-1" + }, + { + "key": "branchId", + "value": "67890" + } + ] + }, + "performance": {}, + "token": { + "id": 98765, + "name": "test-user@keboola.com" + }, + "idBranch": 67890, + "uri": "https://connection.keboola.com/v2/storage/events/2234567893", + "attachments": [] +} + + diff --git a/tests/events/ext.keboola.mcp-server.tool.http.json b/tests/events/ext.keboola.mcp-server.tool.http.json new file mode 100644 index 0000000..51fe86c --- /dev/null +++ b/tests/events/ext.keboola.mcp-server.tool.http.json @@ -0,0 +1,50 @@ +{ + "id": 2234567891, + "event": "ext.keboola.mcp-server.tool", + "component": "keboola.mcp-server.tool", + "message": "Test message for mcp-server (http)", + "description": "", + "type": "info", + "runId": null, + "created": "2024-07-15T10:00:00+0200", + "configurationId": null, + "objectId": "", + "objectName": "", + "objectType": "", + "context": { + "remoteAddr": "127.0.0.1", + "httpReferer": null, + "httpUserAgent": "mcp-server-test-suite", + "apiVersion": "v1" + }, + "mcpServerContext": { + "appEnv": "remote", + "version": "1.0.0", + "userAgent": "mcp-server-local", + "sessionId": "2234567891", + "serverTransport": "http" + }, + "tool": { + "name": "list-buckets", + "arguments": [ + { + "key": "region", + "value": "eu-central-1" + }, + { + "key": "branchId", + "value": "67890" + } + ] + }, + "performance": {}, + "token": { + "id": 98765, + "name": "test-user@keboola.com" + }, + "idBranch": 67890, + "uri": "https://connection.keboola.com/v2/storage/events/2234567891", + "attachments": [] +} + + diff --git a/tests/events/ext.keboola.mcp-server.tool.sse.json b/tests/events/ext.keboola.mcp-server.tool.sse.json new file mode 100644 index 0000000..a1e90a2 --- /dev/null +++ b/tests/events/ext.keboola.mcp-server.tool.sse.json @@ -0,0 +1,50 @@ +{ + "id": 2234567892, + "event": "ext.keboola.mcp-server.tool", + "component": "keboola.mcp-server.tool", + "message": "Test message for mcp-server (sse)", + "description": "", + "type": "info", + "runId": null, + "created": "2024-07-15T10:00:00+0200", + "configurationId": null, + "objectId": "", + "objectName": "", + "objectType": "", + "context": { + "remoteAddr": "127.0.0.1", + "httpReferer": null, + "httpUserAgent": "mcp-server-test-suite", + "apiVersion": "v1" + }, + "mcpServerContext": { + "appEnv": "remote", + "version": "1.0.0", + "userAgent": "mcp-server-local", + "sessionId": "2234567892", + "serverTransport": "sse" + }, + "tool": { + "name": "list-buckets", + "arguments": [ + { + "key": "region", + "value": "eu-central-1" + }, + { + "key": "branchId", + "value": "67890" + } + ] + }, + "performance": {}, + "token": { + "id": 98765, + "name": "test-user@keboola.com" + }, + "idBranch": 67890, + "uri": "https://connection.keboola.com/v2/storage/events/2234567892", + "attachments": [] +} + + From acc10bbde2ebf709e801fb9216f68a1d070eadd6 Mon Sep 17 00:00:00 2001 From: mariankrotil Date: Thu, 4 Sep 2025 18:29:53 +0200 Subject: [PATCH 5/6] feat(mcp-server-tool): make the serverTransport property optional in the schema for backward compatibility --- schema/ext.keboola.mcp-server-tool.json | 3 +-- schema/ext.keboola.mcp-server.tool.json | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/schema/ext.keboola.mcp-server-tool.json b/schema/ext.keboola.mcp-server-tool.json index b89d16b..fa16925 100644 --- a/schema/ext.keboola.mcp-server-tool.json +++ b/schema/ext.keboola.mcp-server-tool.json @@ -33,8 +33,7 @@ "appEnv", "version", "userAgent", - "sessionId", - "serverTransport" + "sessionId" ] }, "message": { diff --git a/schema/ext.keboola.mcp-server.tool.json b/schema/ext.keboola.mcp-server.tool.json index b89d16b..fa16925 100644 --- a/schema/ext.keboola.mcp-server.tool.json +++ b/schema/ext.keboola.mcp-server.tool.json @@ -33,8 +33,7 @@ "appEnv", "version", "userAgent", - "sessionId", - "serverTransport" + "sessionId" ] }, "message": { From 7e1c7f8104bf00ddc5dab1ead413363014d0528c Mon Sep 17 00:00:00 2001 From: mariankrotil Date: Thu, 4 Sep 2025 18:31:51 +0200 Subject: [PATCH 6/6] test(mcp-server-tool): assess mcp-server-tool object without specified serverTransport property(optional) --- ....keboola.mcp-server-tool.no-transport.json | 49 +++++++++++++++++++ ....keboola.mcp-server.tool.no-transport.json | 49 +++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 tests/events/ext.keboola.mcp-server-tool.no-transport.json create mode 100644 tests/events/ext.keboola.mcp-server.tool.no-transport.json diff --git a/tests/events/ext.keboola.mcp-server-tool.no-transport.json b/tests/events/ext.keboola.mcp-server-tool.no-transport.json new file mode 100644 index 0000000..0c24030 --- /dev/null +++ b/tests/events/ext.keboola.mcp-server-tool.no-transport.json @@ -0,0 +1,49 @@ +{ + "id": 1234567900, + "event": "ext.keboola.mcp-server-tool", + "component": "keboola.mcp-server-tool", + "message": "Test message for mcp-server (no serverTransport)", + "description": "", + "type": "info", + "runId": null, + "created": "2024-07-15T10:00:00+0200", + "configurationId": null, + "objectId": "", + "objectName": "", + "objectType": "", + "context": { + "remoteAddr": "127.0.0.1", + "httpReferer": null, + "httpUserAgent": "mcp-server-test-suite", + "apiVersion": "v1" + }, + "mcpServerContext": { + "appEnv": "remote", + "version": "1.0.0", + "userAgent": "mcp-server-local", + "sessionId": "1234567900" + }, + "tool": { + "name": "list-buckets", + "arguments": [ + { + "key": "region", + "value": "eu-central-1" + }, + { + "key": "branchId", + "value": "67890" + } + ] + }, + "performance": {}, + "token": { + "id": 98765, + "name": "test-user@keboola.com" + }, + "idBranch": 67890, + "uri": "https://connection.keboola.com/v2/storage/events/1234567900", + "attachments": [] +} + + diff --git a/tests/events/ext.keboola.mcp-server.tool.no-transport.json b/tests/events/ext.keboola.mcp-server.tool.no-transport.json new file mode 100644 index 0000000..e6f9eb1 --- /dev/null +++ b/tests/events/ext.keboola.mcp-server.tool.no-transport.json @@ -0,0 +1,49 @@ +{ + "id": 2234567900, + "event": "ext.keboola.mcp-server.tool", + "component": "keboola.mcp-server.tool", + "message": "Test message for mcp-server (no serverTransport)", + "description": "", + "type": "info", + "runId": null, + "created": "2024-07-15T10:00:00+0200", + "configurationId": null, + "objectId": "", + "objectName": "", + "objectType": "", + "context": { + "remoteAddr": "127.0.0.1", + "httpReferer": null, + "httpUserAgent": "mcp-server-test-suite", + "apiVersion": "v1" + }, + "mcpServerContext": { + "appEnv": "remote", + "version": "1.0.0", + "userAgent": "mcp-server-local", + "sessionId": "2234567900" + }, + "tool": { + "name": "list-buckets", + "arguments": [ + { + "key": "region", + "value": "eu-central-1" + }, + { + "key": "branchId", + "value": "67890" + } + ] + }, + "performance": {}, + "token": { + "id": 98765, + "name": "test-user@keboola.com" + }, + "idBranch": 67890, + "uri": "https://connection.keboola.com/v2/storage/events/2234567900", + "attachments": [] +} + +