mcpField
G
GoSQLX

GoSQLX

リモート
gosqlx.dev開発ツール120今日更新
リポジトリ公式サイト

GoSQLX について

GoSQLXは、複数のSQL方言を扱う開発者向けのPure Go製SQLパーサーSDKとツールセットです。AST解析に加え、フォーマット、Lint、セキュリティスキャン、メタデータ抽出、MCPサーバーを備えています。

主な機能

  1. 01SQLを抽象構文木に解析
  2. 028種類のSQL方言に対応
  3. 03SQLクエリの整形と変換
  4. 04インジェクションリスクとLint問題の検出
  5. 05SQLメタデータの抽出
  6. 06CLI、VS Code拡張、GitHub Actionの提供

活用シーン

  1. 01プロジェクト内の各方言のSQLを検証
  2. 02コードレビュー用にクエリを整形
  3. 03SQLのインジェクションリスクとLint違反を検査
  4. 04MCPクライアントからSQLを分析

MCP 対応

リモートMCPサーバーはStreamable HTTP経由で、ClaudeやCursorを含むMCPクライアントに7つのSQLツールを公開します。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://mcp.gosqlx.dev/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

詳細

GoSQLX:虫眼鏡、データベース、上昇する矢印を持つゴーファーのマスコット

GoSQLX

8 種の方言に対応した、Pure Go の SQL パーサー、フォーマッター、リンター、セキュリティスキャナーです。

CI Go Reference Release License OpenSSF Scorecard

プレイグラウンド  ·  ドキュメント  ·  ベンチマーク  ·  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/ を実行します。


ターミナルのデモ:1 つのクエリーに対する gosqlx validate、format、lint の実行と、その後の WASM プレイグラウンド

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 をコネクターとして追加すると、対話型の分析ウィジェットを利用できます - 詳細。

MCP Glama MCP Server

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 が読みやすいクエリになります。

フォーマット前:小文字の1行 SQL。gosqlx format の実行後:SELECT、FROM、INNER JOIN、WHERE、GROUP BY、HAVING、ORDER BY、LIMIT がそれぞれ独立した行に配置されます

機能

アーキテクチャ:SQL バイト列がトークナイザーを通って TokenWithSpan になり、パーサーが AST を構築します。フォーマッター、リンター、セキュリティスキャナー、トランスパイラー、フィンガープリンターがこれを利用します
  • パーサー - ゼロコピーのトークナイザー、再帰下降パーサー、完全な 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%に対応(推定)。

ドキュメント


コントリビューション

GoSQLX は、皆さんのようなコントリビューターによって開発されています。バグ修正、新機能、ドキュメントの改善、ちょっとした誤字の修正など、どんな貢献も大切です。

git clone https://github.com/ajitpratap0/GoSQLX.git && cd GoSQLX
task check    # fmt → vet → lint → test (with race detection)
  1. フォークしてブランチを作成 - main から作成します
  2. テストを作成 - TDD を採用しており、レースのないコードが必要です
  3. task check を実行 - PR の前にパスする必要があります
  4. PR を作成 - 24 時間以内にレビューします

コントリビューションガイド · 行動規範 · ガバナンス


コミュニティ

質問やアイデアはディスカッションへ。バグを見つけた場合や機能を希望する場合は、Issueを作成してください。


## License

Apache License 2.0 - see LICENSE for details.


コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。