
【登壇資料】 『MCP Python SDKでSQLをチェックしてくれるMCPサーバーを自作してCursorから動かしてみた』
データ事業本部の鈴木です。
社内の勉強会でCursorから独自に作成したMCPサーバーを利用する例を共有しました。
簡単なものではありますがご紹介します。
資料
MCP Python SDKでSQLFluffを実行できるツールを備えたMCPサーバーを作成し、Cursorから利用する例を作成しました。直接ターミナルコマンドとしてSQLFluffを実行することもできますが、 MCP Python SDKでの実装を間に挟むことでCursorへの返却値をカスタマイズできたり、実行する環境を他のユーザーと共通化できることがメリットかなと思います。
ポイント
SQLFluffについて
SQLのフォーマットを自動で問題点の指摘や修正をしてくれる、オープンソースサービスです。
ターミナルからも実行できますが、Python向けのAPIも用意されており、Pythonスクリプトから利用可能です。
フォーマットチェックをしてくれるリント機能に加え、一部指摘事項を反映してくれる修正機能もあります。
詳しくは以下もご確認ください。
スライドでも紹介している通り、ASのエイリアス名などは修正機能では対応できないため、人間がエイリアス名を考える必要がありましたが、LLMを使うことで自動で適切な修正をできるのではないかという点が今回の例のポイントでもあります。
Claudeを使ったMCPサーバーの作成
MCPのドキュメントにClaudeを使ったMCPサーバーの作成が紹介されていたため、今回はCursorでその方法で作成してみました。
今回くらいの内容だと自分で書いてしまった方が早い気はしますが、より機能が複雑であったりツール数が多くなってきた際に、LLMに支援してもらいつつスピーディーに実装ができるのは良いかもしれません。
SQLの修正結果
課題に思っていたエイリアスの作成もしてくれました。
BigQueryの文法である程度複雑なSQLに対してチェックと修正をしてみましたが、こちらも問題なく動いていそうでした。
ある程度複雑なSnowflakeの文法のSQL文をBigQueryの文法に書き直せるかもやってみました。
BigQueryの文法にどこまで精緻に直せるかはLLM次第ではありますが、大きく異なる点はSQLFluffで検出できるため、LLM単体で書き直すより良いかもしれません。
これは例えばText2SQLがしたい場合に、特定の文法に沿わないSQL文が生成されるリスクを下げられることを期待しています。
終わりに
社内の勉強会でCursorから独自に作成したMCPサーバーを利用する例を共有したのでご紹介でした。
参考になりましたら幸いです。