Skip to content

Commit f9b5177

Browse files
authored
Token-efficient result encoding (#55)
1 parent 970956f commit f9b5177

File tree

2 files changed

+5
-12
lines changed

2 files changed

+5
-12
lines changed

mcp_clickhouse/mcp_server.py

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -137,15 +137,8 @@ def execute_query(query: str):
137137
try:
138138
read_only = get_readonly_setting(client)
139139
res = client.query(query, settings={"readonly": read_only})
140-
column_names = res.column_names
141-
rows = []
142-
for row in res.result_rows:
143-
row_dict = {}
144-
for i, col_name in enumerate(column_names):
145-
row_dict[col_name] = row[i]
146-
rows.append(row_dict)
147-
logger.info(f"Query returned {len(rows)} rows")
148-
return rows
140+
logger.info(f"Query returned {len(res.result_rows)} rows")
141+
return {"columns": res.column_names, "rows": res.result_rows}
149142
except Exception as err:
150143
logger.error(f"Error executing query: {err}")
151144
# Return a structured dictionary rather than a string to ensure proper serialization

tests/test_tool.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,10 @@ def test_run_select_query_success(self):
6262
"""Test running a SELECT query successfully."""
6363
query = f"SELECT * FROM {self.test_db}.{self.test_table}"
6464
result = run_select_query(query)
65-
self.assertIsInstance(result, list)
65+
self.assertIsInstance(result, dict)
6666
self.assertEqual(len(result), 2)
67-
self.assertEqual(result[0]["id"], 1)
68-
self.assertEqual(result[0]["name"], "Alice")
67+
self.assertEqual(result["rows"][0][0], 1)
68+
self.assertEqual(result["rows"][0][1], "Alice")
6969

7070
def test_run_select_query_failure(self):
7171
"""Test running a SELECT query with an error."""

0 commit comments

Comments
 (0)