Skip to content

Commit 93b99ce

Browse files
committed
SQL: Use cratedb-sqlparse for implementing read-only mode
1 parent be09e1e commit 93b99ce

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

cratedb_mcp/util/sql.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import logging
33
import typing as t
44

5+
import cratedb_sqlparse
56
import sqlparse
67

78
from cratedb_mcp.settings import PERMIT_ALL_STATEMENTS
@@ -39,12 +40,21 @@ class SqlStatementClassifier:
3940
expression: str
4041
permit_all: bool = False
4142

43+
_parsed_cratedb: t.Any = dataclasses.field(init=False, default=None)
4244
_parsed_sqlparse: t.Any = dataclasses.field(init=False, default=None)
4345

4446
def __post_init__(self) -> None:
4547
if self.expression:
4648
self.expression = self.expression.strip()
4749

50+
def parse_cratedb(self):
51+
"""
52+
Parse expression using `cratedb-sqlparse` library.
53+
"""
54+
if self._parsed_cratedb is None:
55+
self._parsed_cratedb = cratedb_sqlparse.sqlparse(self.expression)
56+
return self._parsed_cratedb
57+
4858
def parse_sqlparse(self):
4959
"""
5060
Parse expression using traditional `sqlparse` library.
@@ -66,7 +76,7 @@ def is_dql(self) -> bool:
6676
return True
6777

6878
# Parse the SQL statement using `cratedb-sqlparse`.
69-
parsed = self.parse_sqlparse()
79+
parsed = self.parse_cratedb()
7080

7181
# Reject multiple statements to prevent potential SQL injections.
7282
if len(parsed) > 1:
@@ -89,7 +99,7 @@ def operation(self) -> str:
8999
"""
90100
The SQL operation: SELECT, INSERT, UPDATE, DELETE, CREATE, etc.
91101
"""
92-
return self._parsed_sqlparse[0].get_type().upper()
102+
return self._parsed_cratedb[0].type.upper()
93103

94104
@property
95105
def is_camouflage(self) -> bool:

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ dynamic = [
2121
]
2222
dependencies = [
2323
"attrs",
24+
"cratedb-sqlparse==0.0.14",
2425
"hishel<0.2",
2526
"mcp[cli]>=1.5.0",
2627
"sqlparse<0.6",

0 commit comments

Comments
 (0)