GoSQLX について
GoSQLXは、複数のSQL方言を扱う開発者向けのPure Go製SQLパーサーSDKとツールセットです。AST解析に加え、フォーマット、Lint、セキュリティスキャン、メタデータ抽出、MCPサーバーを備えています。
主な機能
- 01SQLを抽象構文木に解析
- 028種類のSQL方言に対応
- 03SQLクエリの整形と変換
- 04インジェクションリスクとLint問題の検出
- 05SQLメタデータの抽出
- 06CLI、VS Code拡張、GitHub Actionの提供
活用シーン
- 01プロジェクト内の各方言のSQLを検証
- 02コードレビュー用にクエリを整形
- 03SQLのインジェクションリスクとLint違反を検査
- 04MCPクライアントからSQLを分析
MCP 対応
リモートMCPサーバーはStreamable HTTP経由で、ClaudeやCursorを含むMCPクライアントに7つのSQLツールを公開します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.gosqlx.dev/mcpclaude mcp add --transport http ajitpratap0-gosqlx https://mcp.gosqlx.dev/mcp{"mcpServers":{"ajitpratap0-gosqlx":{"type":"http","url":"https://mcp.gosqlx.dev/mcp"}}}Cursor で開く{"servers":{"ajitpratap0-gosqlx":{"type":"http","url":"https://mcp.gosqlx.dev/mcp"}}}VS Code で開く{"mcpServers":{"ajitpratap0-gosqlx":{"type":"http","url":"https://mcp.gosqlx.dev/mcp"}}}{"mcpServers":{"ajitpratap0-gosqlx":{"serverUrl":"https://mcp.gosqlx.dev/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
GoSQLX
8 種の方言に対応した、Pure Go の SQL パーサー、フォーマッター、リンター、セキュリティスキャナーです。
プレイグラウンド · ドキュメント · ベンチマーク · VS Code · MCP サーバー
| 約 290 万回の解析/秒† | 解析レイテンシー 349 ns† | SQL-99 の約 80~85%(推定) | 8 種の方言 | データ競合 0 件 |
|---|
† 解析ステージのみ(トークン化済み入力から AST への変換)、SELECT id, name FROM users、Apple M4、Go 1.27、BenchmarkPerformanceBaseline を 20 回実行した中央値です。複雑なクエリーはより時間がかかります(performance_baselines.json を参照)。再現するには、go test -run ^$ -bench BenchmarkPerformanceBaseline -benchmem -count=20 ./pkg/sql/parser/ を実行します。
GoSQLX とは?
GoSQLX は、Go 向けの本番環境対応 SQL 解析 SDKです。ゼロコピー最適化とインテリジェントなオブジェクトプーリングを使って SQL をトークン化・解析し、AST を生成します。シンプルな SELECT を約 **349 ns(約 290 万回の解析/秒)**で解析します。
GoSQLX を選ぶ理由
- ORM ではなく、パーサーです。AST を取得し、それをどう扱うかは自分で決められます。
- 低速ではありません。ゼロコピーのトークン化、sync.Pool による再利用、ホットパスでのアロケーションなしを実現しています。
- 機能は限定されません。PostgreSQL、MySQL、MariaDB、SQL Server、Oracle、SQLite、Snowflake、ClickHouse に対応しています。CTE、ウィンドウ関数、MERGE、集合演算もサポートします。
- 単なるライブラリではありません。CLI、VS Code 拡張機能、GitHub Action、MCP サーバー、WASM プレイグラウンド、Python バインディングを提供します。
インストール
Go ライブラリ
go get github.com/ajitpratap0/GoSQLX
CLI
go install github.com/ajitpratap0/GoSQLX/cmd/gosqlx@latest
VS Code
code --install-extension ajitpratap0.gosqlx
拡張機能にはバイナリが同梱されているため、追加のセットアップは不要です。詳細はこちら。
MCP サーバー
claude mcp add --transport http gosqlx https://mcp.gosqlx.dev/mcp
Claude、Cursor、または任意の MCP クライアントで 7 種の SQL ツールを利用できます。MCP ガイド。
Claude Code プラグイン(スキル、スラッシュコマンド、SQL レビュアーエージェント):/plugin marketplace add ajitpratap0/GoSQLX を実行してから /plugin install gosqlx@gosqlx を実行してください - 詳細。
ChatGPT アプリ:開発者モードで https://mcp.gosqlx.dev/mcp をコネクターとして追加すると、対話型の分析ウィジェットを利用できます - 詳細。
GitHub Action
- uses: ajitpratap0/GoSQLX@v1
with:
files: '**/*.sql'
validate: true
## クイックスタート
ソース:examples/readme_quickstart/main.go。CI で HEAD および最新リリースに対してコンパイルされます。
package main
import (
"context"
"errors"
"fmt"
"log"
"github.com/ajitpratap0/GoSQLX/pkg/gosqlx"
"github.com/ajitpratap0/GoSQLX/pkg/sql/ast"
)
func main() {
ctx := context.Background()
// ParseTree is the recommended entry point. It returns an
// opaque handle with built-in helpers.
tree, err := gosqlx.ParseTree(ctx, "SELECT id, name FROM users WHERE active = true",
gosqlx.WithDialect("postgresql"))
if err != nil {
// Sentinel errors work with errors.Is
if errors.Is(err, gosqlx.ErrSyntax) {
log.Fatalf("syntax error: %v", err)
}
log.Fatal(err)
}
fmt.Println("Tables:", tree.Tables())
fmt.Println(tree.Format(gosqlx.WithIndent(2), gosqlx.WithUppercaseKeywords(true)))
// Walk the AST - typed walkers avoid the type-assertion dance:
tree.WalkSelects(func(s *ast.SelectStatement) bool {
fmt.Printf(" SELECT with %d columns\n", len(s.Columns))
return true
})
// The legacy Parse/Format/Validate API still works for v1.x code.
// See docs/MIGRATION.md for the Tree migration guide.
}
出力:
Tables: [users]
SELECT id, name
FROM users
WHERE active = true
SELECT with 2 columns
フォーマットすると、1 行の SQL が読みやすいクエリになります。
機能
- パーサー - ゼロコピーのトークナイザー、再帰下降パーサー、完全な AST 生成。
- 解析 - SQL インジェクションスキャナー、30 個の lint ルール(L001~L030)、20 個のオプティマイザールール、メタデータ抽出。
- ツール - AST ベースのフォーマッター、クエリ変換 API、VS Code 拡張機能、GitHub Action。
- 構文ハイライト - ターミナル(ANSI)、HTML/CSS、JSON スパン、LSP セマンティックトークン、WASM に対応した方言別のハイライト。
gosqlx highlight query.sqlまたはgosqlx.HighlightANSI(sql)を使用できます。 - マルチ方言対応 - 専用の文法サポートを備えた 8 種類の方言:PostgreSQL、MySQL、MariaDB、SQL Server、Oracle、SQLite、Snowflake、ClickHouse。
--dialectフラグとWithDialectは 11 個の名前を受け付けます。上記の 8 種類(postgresql、mysql、mariadb、sqlserver、oracle、sqlite、snowflake、clickhouse)に加えて、generic、bigquery、redshiftです。BigQuery と Redshift には方言固有のキーワードセットがなく、汎用キーワードを使用します。また、BigQuery のQUALIFY、PIVOT/UNPIVOT、FROM内のUNNEST、(struct).fieldアクセスなど、機能によって有効化される文法のみがサポートされます。 - AI 対応 - 7 個のツールを備えた MCP サーバー、公開リモートエンドポイント、Streamable HTTP。
- テスト済み - CI でレースディテクターによる問題がなく、SQL-99 の約 80~85%に対応(推定)。
ドキュメント
- はじめに - 5 分で最初の SQL を解析
- 使用ガイド - 包括的なパターンと例
- API リファレンス - API ドキュメント一式
- CLI ガイド - コマンドラインツールのリファレンス
- SQL 互換性 - 方言サポート一覧
- MCP ガイド - AI アシスタントとの統合
- アーキテクチャ - システム設計の詳細
- ベンチマーク - パフォーマンスデータと測定方法
- 変更履歴 - 各バージョンでの変更内容
コントリビューション
GoSQLX は、皆さんのようなコントリビューターによって開発されています。バグ修正、新機能、ドキュメントの改善、ちょっとした誤字の修正など、どんな貢献も大切です。
git clone https://github.com/ajitpratap0/GoSQLX.git && cd GoSQLX
task check # fmt → vet → lint → test (with race detection)
- フォークしてブランチを作成 -
mainから作成します - テストを作成 - TDD を採用しており、レースのないコードが必要です
task checkを実行 - PR の前にパスする必要があります- PR を作成 - 24 時間以内にレビューします
コントリビューションガイド · 行動規範 · ガバナンス
コミュニティ
質問やアイデアはディスカッションへ。バグを見つけた場合や機能を希望する場合は、Issueを作成してください。
## License
Apache License 2.0 - see LICENSE for details.
gosqlx.dev · Playground · Docs · MCP Server · VS Code
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。