From 0e979f4f4b1685ded0d129e5957a922a7a0290cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Va=C5=A1ko?= Date: Mon, 2 Jun 2025 11:34:42 +0200 Subject: [PATCH 1/5] feat: Add event schema for MCP server It should track usage of various tools within projects. fix: Remove query and projectID, add MCP server context Update schema test acordingly fix: Rename file to cotains only one dot before extension Reason: configurationId is not needed for this component fix: Change tool arguments to be key value pair fix: Rename keboola.mcp-server to keboola.mcp-server.tool, remove jobID Reason: We expect to measure prompts and resources and we will have multiple schemas for the component. Remove jobID as it is required only by 1 tool fix: Update tests based on req changes for jobID, key value arguments --- schema/ext.keboola.mcp-server.tool.json | 65 +++++++++++++++++++ tests/events/ext.keboola.mcp-server.tool.json | 49 ++++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 schema/ext.keboola.mcp-server.tool.json create mode 100644 tests/events/ext.keboola.mcp-server.tool.json diff --git a/schema/ext.keboola.mcp-server.tool.json b/schema/ext.keboola.mcp-server.tool.json new file mode 100644 index 0000000..2aea3ac --- /dev/null +++ b/schema/ext.keboola.mcp-server.tool.json @@ -0,0 +1,65 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": { + "mcp-server-context": { + "type": "object", + "properties": { + "app_env": { + "type": "string" + }, + "version": { + "type": "string" + }, + "user_agent": { + "type": "string" + } + }, + "required": [ + "app_env", + "version", + "user_agent" + ] + }, + "message": { + "type": "string" + }, + "tool": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "arguments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "key": { "type": "string" }, + "value": { "type": "string" } + }, + "required": ["key", "value"] + } + } + }, + "required": [ + "name", + "arguments" + ] + }, + "results": { + "type": "object", + "properties": { + "error": { + "type": "string" + } + } + } + }, + "required": [ + "mcp-server-context", + "message", + "tool", + "results" + ] +} diff --git a/tests/events/ext.keboola.mcp-server.tool.json b/tests/events/ext.keboola.mcp-server.tool.json new file mode 100644 index 0000000..e9c787a --- /dev/null +++ b/tests/events/ext.keboola.mcp-server.tool.json @@ -0,0 +1,49 @@ +{ + "id": 1234567890, + "event": "ext.keboola.mcp-server.tool", + "component": "keboola.mcp-server.tool", + "message": "Test message for mcp-server", + "description": "This is a test event for the mcp-server schema.", + "type": "info", + "runId": null, + "created": "2024-07-15T10:00:00+0200", + "configurationId": "test-config-id", + "objectId": "test-object-id", + "objectName": "Test Object", + "objectType": "testObjectType", + "mcp-server-context": { + "app_env": "remote", + "version": "1.0.0", + "user_agent": "mcp-server-test-suite" + }, + "context": { + "remoteAddr": "127.0.0.1", + "httpReferer": null, + "httpUserAgent": "mcp-server-test-suite", + "apiVersion": "v1" + }, + "tool": { + "name": "test-tool", + "arguments": [ + { + "key": "arg1", + "value": "value1" + }, + { + "key": "arg2", + "value": "value2" + } + ] + }, + "results": { + "error": "" + }, + "performance": {}, + "token": { + "id": 98765, + "name": "test-user@keboola.com" + }, + "idBranch": 67890, + "uri": "https://connection.keboola.com/v2/storage/events/1234567890", + "attachments": [] +} \ No newline at end of file From 9a29515eb65df9c8cda7a9dbf5e1cb24920a5d6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Va=C5=A1ko?= Date: Wed, 2 Jul 2025 07:26:59 +0200 Subject: [PATCH 2/5] feat: Add sessionID into MCP server context Reason: we are tracking sessions of users in which some of the MCP tool calls have not been/have been working --- schema/ext.keboola.mcp-server.tool.json | 6 +++++- tests/events/ext.keboola.mcp-server.tool.json | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/schema/ext.keboola.mcp-server.tool.json b/schema/ext.keboola.mcp-server.tool.json index 2aea3ac..8f0549d 100644 --- a/schema/ext.keboola.mcp-server.tool.json +++ b/schema/ext.keboola.mcp-server.tool.json @@ -13,12 +13,16 @@ }, "user_agent": { "type": "string" + }, + "sessionId": { + "type": "string" } }, "required": [ "app_env", "version", - "user_agent" + "user_agent", + "sessionId" ] }, "message": { diff --git a/tests/events/ext.keboola.mcp-server.tool.json b/tests/events/ext.keboola.mcp-server.tool.json index e9c787a..d9faa84 100644 --- a/tests/events/ext.keboola.mcp-server.tool.json +++ b/tests/events/ext.keboola.mcp-server.tool.json @@ -14,7 +14,8 @@ "mcp-server-context": { "app_env": "remote", "version": "1.0.0", - "user_agent": "mcp-server-test-suite" + "user_agent": "mcp-server-test-suite", + "sessionId": "1234567890" }, "context": { "remoteAddr": "127.0.0.1", From aa004ba3b79ad3dbefb9548ec475d221465fc11c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Va=C5=A1ko?= Date: Tue, 8 Jul 2025 15:27:17 +0200 Subject: [PATCH 3/5] fix: Change example test fields to be more correlated to actual values --- tests/events/ext.keboola.mcp-server.tool.json | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/tests/events/ext.keboola.mcp-server.tool.json b/tests/events/ext.keboola.mcp-server.tool.json index d9faa84..192a34c 100644 --- a/tests/events/ext.keboola.mcp-server.tool.json +++ b/tests/events/ext.keboola.mcp-server.tool.json @@ -3,36 +3,36 @@ "event": "ext.keboola.mcp-server.tool", "component": "keboola.mcp-server.tool", "message": "Test message for mcp-server", - "description": "This is a test event for the mcp-server schema.", + "description": "", "type": "info", "runId": null, "created": "2024-07-15T10:00:00+0200", - "configurationId": "test-config-id", - "objectId": "test-object-id", - "objectName": "Test Object", - "objectType": "testObjectType", - "mcp-server-context": { - "app_env": "remote", - "version": "1.0.0", - "user_agent": "mcp-server-test-suite", - "sessionId": "1234567890" - }, + "configurationId": null, + "objectId": "", + "objectName": "", + "objectType": "", "context": { "remoteAddr": "127.0.0.1", "httpReferer": null, "httpUserAgent": "mcp-server-test-suite", "apiVersion": "v1" }, + "mcp-server-context": { + "app_env": "remote", + "version": "1.0.0", + "user_agent": "mcp-server-local", + "sessionId": "1234567890" + }, "tool": { - "name": "test-tool", + "name": "list-buckets", "arguments": [ { - "key": "arg1", - "value": "value1" + "key": "region", + "value": "eu-central-1" }, { - "key": "arg2", - "value": "value2" + "key": "branchId", + "value": "67890" } ] }, @@ -47,4 +47,4 @@ "idBranch": 67890, "uri": "https://connection.keboola.com/v2/storage/events/1234567890", "attachments": [] -} \ No newline at end of file +} From 249fa97a2b261a96caac6d9a2a821f8ff1a54447 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Va=C5=A1ko?= Date: Wed, 9 Jul 2025 07:31:49 +0200 Subject: [PATCH 4/5] fix: Rewrite MCP event properties to snakeCase --- schema/ext.keboola.mcp-server.tool.json | 12 ++++++------ tests/events/ext.keboola.mcp-server.tool.json | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/schema/ext.keboola.mcp-server.tool.json b/schema/ext.keboola.mcp-server.tool.json index 8f0549d..ea3e7e0 100644 --- a/schema/ext.keboola.mcp-server.tool.json +++ b/schema/ext.keboola.mcp-server.tool.json @@ -2,16 +2,16 @@ "$schema": "http://json-schema.org/draft-04/schema#", "type": "object", "properties": { - "mcp-server-context": { + "mcpServerContext": { "type": "object", "properties": { - "app_env": { + "appEnv": { "type": "string" }, "version": { "type": "string" }, - "user_agent": { + "userAgent": { "type": "string" }, "sessionId": { @@ -19,9 +19,9 @@ } }, "required": [ - "app_env", + "appEnv", "version", - "user_agent", + "userAgent", "sessionId" ] }, @@ -61,7 +61,7 @@ } }, "required": [ - "mcp-server-context", + "mcpServerContext", "message", "tool", "results" diff --git a/tests/events/ext.keboola.mcp-server.tool.json b/tests/events/ext.keboola.mcp-server.tool.json index 192a34c..d919a93 100644 --- a/tests/events/ext.keboola.mcp-server.tool.json +++ b/tests/events/ext.keboola.mcp-server.tool.json @@ -17,10 +17,10 @@ "httpUserAgent": "mcp-server-test-suite", "apiVersion": "v1" }, - "mcp-server-context": { - "app_env": "remote", + "mcpServerContext": { + "appEnv": "remote", "version": "1.0.0", - "user_agent": "mcp-server-local", + "userAgent": "mcp-server-local", "sessionId": "1234567890" }, "tool": { From a9f233964676fd5bf984b9227d9afe079ed87a07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Va=C5=A1ko?= Date: Wed, 9 Jul 2025 07:34:49 +0200 Subject: [PATCH 5/5] fix: Remove results object with error message Reason: the error will be indicated by `type` and `message` fields --- schema/ext.keboola.mcp-server.tool.json | 11 +---------- tests/events/ext.keboola.mcp-server.tool.json | 3 --- 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/schema/ext.keboola.mcp-server.tool.json b/schema/ext.keboola.mcp-server.tool.json index ea3e7e0..95b5fed 100644 --- a/schema/ext.keboola.mcp-server.tool.json +++ b/schema/ext.keboola.mcp-server.tool.json @@ -50,20 +50,11 @@ "name", "arguments" ] - }, - "results": { - "type": "object", - "properties": { - "error": { - "type": "string" - } - } } }, "required": [ "mcpServerContext", "message", - "tool", - "results" + "tool" ] } diff --git a/tests/events/ext.keboola.mcp-server.tool.json b/tests/events/ext.keboola.mcp-server.tool.json index d919a93..6afe7a8 100644 --- a/tests/events/ext.keboola.mcp-server.tool.json +++ b/tests/events/ext.keboola.mcp-server.tool.json @@ -36,9 +36,6 @@ } ] }, - "results": { - "error": "" - }, "performance": {}, "token": { "id": 98765,