support sql lsp
diff --git a/server/python-language-server.py b/server/lsp-server.py
similarity index 71%
rename from server/python-language-server.py
rename to server/lsp-server.py
index f491a92..a56e021 100644
--- a/server/python-language-server.py
+++ b/server/lsp-server.py
@@ -20,21 +20,16 @@
 from tornado import ioloop, process, websocket, web
 
 
-class PythonWebSocketHandler(websocket.WebSocketHandler):
+class LanguageWebSocketHandler(websocket.WebSocketHandler):
     writer = None
+    proc = None
 
     def open(self, *args: str, **kwargs: str):
-        proc = process.Subprocess(
-            ['pylsp','-v'],
-            stdin=subprocess.PIPE,
-            stdout=subprocess.PIPE
-        )
-
-        self.writer = streams.JsonRpcStreamWriter(proc.stdin)
+        self.writer = streams.JsonRpcStreamWriter(self.proc.stdin)
 
         def consume():
             ioloop.IOLoop()
-            reader = streams.JsonRpcStreamReader(proc.stdout)
+            reader = streams.JsonRpcStreamReader(self.proc.stdout)
             reader.listen(lambda msg: self.write_message(json.dumps(msg)))
         
         thread = threading.Thread(target=consume)
@@ -47,9 +42,27 @@
     def check_origin(self, origin):
         return True
 
+
+class PythonWebSocketHandler(LanguageWebSocketHandler):
+    proc = process.Subprocess(
+        ['pylsp','-v'],
+        stdin=subprocess.PIPE,
+        stdout=subprocess.PIPE
+    )
+
+
+class SQLWebSocketHandler(LanguageWebSocketHandler):
+    proc = process.Subprocess(
+        ['sqls', '-c', './sql.yml'],
+        stdin=subprocess.PIPE,
+        stdout=subprocess.PIPE
+    )
+
+
 if __name__ == "__main__":
     app = web.Application([
         (r"/python", PythonWebSocketHandler),
+        (r"/sql", SQLWebSocketHandler)
     ])
     app.listen(3001)
     ioloop.IOLoop.current().start()
diff --git a/server/sql.yml b/server/sql.yml
new file mode 100644
index 0000000..0648003
--- /dev/null
+++ b/server/sql.yml
@@ -0,0 +1,5 @@
+lowercaseKeywords: false
+connections:
+  - alias: mysql
+    driver: mysql
+    dataSourceName: root:root@tcp(127.0.0.1:3306)/demo
diff --git a/studio/components/monaco/index.tsx b/studio/components/monaco/index.tsx
index e265d0a..b014373 100644
--- a/studio/components/monaco/index.tsx
+++ b/studio/components/monaco/index.tsx
@@ -65,7 +65,7 @@
     let editor = null as monaco.editor.IStandaloneCodeEditor | null
     const formItem = useFormItem({})
 
-    const url = createUrl('localhost', 3001, '/python')
+    const url = createUrl('localhost', 3001, `/${props.options.language}`)
     const webSocket = new WebSocket(url)
 
     webSocket.onopen = () => {
@@ -87,7 +87,7 @@
         name: 'Studio Language Client',
         clientOptions: {
           // use a language id as a document selector
-          documentSelector: ['python'],
+          documentSelector: ['python', 'sql'],
           // disable the default error handler
           errorHandler: {
             error: () => ({ action: ErrorAction.Continue }),