GoSQLX
SQL validation, formatting, parsing, metadata extraction, linting, and security analysis.
Que pouvez-vous faire avec GoSQLX ?
- Parser - zero-copy tokenizer, recursive descent parser and full AST generation.
- Analysis - SQL injection scanner, 30 lint rules (L001-L030), 20 optimizer rules and metadata extraction.
- Tooling - AST-based formatter, query transforms API, VS Code extension and GitHub Action.
- Syntax highlighting - dialect-aware highlighting for terminals (ANSI), HTML/CSS, JSON spans, LSP semantic tokens and WASM;
gosqlx highlight query.sqlorgosqlx.HighlightANSI(sql). - Multi-dialect - 8 dialects with dedicated grammar support: PostgreSQL, MySQL, MariaDB, SQL Server, Oracle, SQLite, Snowflake, ClickHouse. The
--dialectflag andWithDialectaccept 11 names: tho... - AI-ready - MCP server with 7 tools, public remote endpoint, Streamable HTTP.
- Tested - race-detector clean in CI, ~80-85% SQL-99 (estimated).
Installation
Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).
claude mcp add --transport http gosqlx 'https://mcp.gosqlx.dev/mcp'
{
"mcpServers": {
"gosqlx": {
"type": "http",
"url": "https://mcp.gosqlx.dev/mcp"
}
}
}
Documentation
Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.
GoSQLX
Pure-Go SQL parser, formatter, linter and security scanner for 8 dialects.
Playground · Docs · Benchmarks · VS Code · MCP server
| ~2.9M parses/sec† | 349 ns parse latency† | ~80–85% SQL-99 (est.) | 8 dialects | 0 race conditions |
|---|
† Parse stage only (pre-tokenized input to AST), SELECT id, name FROM users, Apple M4, Go 1.27, median of 20 runs of BenchmarkPerformanceBaseline. Complex queries take longer (see performance_baselines.json). Reproduce: go test -run ^$ -bench BenchmarkPerformanceBaseline -benchmem -count=20 ./pkg/sql/parser/.
What is GoSQLX?
GoSQLX is a production-ready SQL parsing SDK for Go. It tokenizes, parses, and generates ASTs from SQL with zero-copy optimizations and intelligent object pooling - parsing a simple SELECT in about 349 ns (~2.9M parses/sec).
Why GoSQLX?
- Not an ORM - a parser. You get the AST, you decide what to do with it.
- Not slow - zero-copy tokenization, sync.Pool recycling, no allocations on hot paths.
- Not limited - PostgreSQL, MySQL, MariaDB, SQL Server, Oracle, SQLite, Snowflake, ClickHouse. CTEs, window functions, MERGE, set operations.
- Not just a library - CLI, VS Code extension, GitHub Action, MCP server, WASM playground, Python bindings.
Install
Go library
go get github.com/ajitpratap0/GoSQLX
CLI
go install github.com/ajitpratap0/GoSQLX/cmd/gosqlx@latest
VS Code
code --install-extension ajitpratap0.gosqlx
The extension bundles the binary, so there is no extra setup. Learn more.
MCP server
claude mcp add --transport http gosqlx https://mcp.gosqlx.dev/mcp
7 SQL tools in Claude, Cursor, or any MCP client. MCP guide.
Claude Code plugin (skills, slash commands, SQL reviewer agent): /plugin marketplace add ajitpratap0/GoSQLX then /plugin install gosqlx@gosqlx - details.
ChatGPT app: add https://mcp.gosqlx.dev/mcp as a connector in developer mode for an interactive analysis widget - details.
GitHub Action
- uses: ajitpratap0/GoSQLX@v1
with:
files: '**/*.sql'
validate: true
Quick start
Source: examples/readme_quickstart/main.go, compiled in CI against HEAD and the latest release.
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.
}
Output:
Tables: [users]
SELECT id, name
FROM users
WHERE active = true
SELECT with 2 columns
Formatting turns one-line SQL into a readable query:
Features
- Parser - zero-copy tokenizer, recursive descent parser and full AST generation.
- Analysis - SQL injection scanner, 30 lint rules (L001-L030), 20 optimizer rules and metadata extraction.
- Tooling - AST-based formatter, query transforms API, VS Code extension and GitHub Action.
- Syntax highlighting - dialect-aware highlighting for terminals (ANSI), HTML/CSS, JSON spans, LSP semantic tokens and WASM;
gosqlx highlight query.sqlorgosqlx.HighlightANSI(sql). - Multi-dialect - 8 dialects with dedicated grammar support: PostgreSQL, MySQL, MariaDB, SQL Server, Oracle, SQLite, Snowflake, ClickHouse. The
--dialectflag andWithDialectaccept 11 names: those 8 (postgresql,mysql,mariadb,sqlserver,oracle,sqlite,snowflake,clickhouse) plusgeneric,bigqueryandredshift. BigQuery and Redshift have no dialect-specific keyword set (they use the generic keywords) and only capability-gated grammar, such as BigQuery'sQUALIFY,PIVOT/UNPIVOT,UNNESTinFROMand(struct).fieldaccess. - AI-ready - MCP server with 7 tools, public remote endpoint, Streamable HTTP.
- Tested - race-detector clean in CI, ~80-85% SQL-99 (estimated).
Documentation
- Getting Started - parse your first SQL in 5 minutes
- Usage Guide - comprehensive patterns and examples
- API Reference - complete API documentation
- CLI Guide - command-line tool reference
- SQL Compatibility - dialect support matrix
- MCP Guide - AI assistant integration
- Architecture - system design deep-dive
- Benchmarks - performance data and methodology
- Changelog - what changed in each version
Contributing
GoSQLX is built by contributors like you. Whether it's a bug fix, new feature, documentation improvement, or just a typo - every contribution matters.
git clone https://github.com/ajitpratap0/GoSQLX.git && cd GoSQLX
task check # fmt → vet → lint → test (with race detection)
- Fork & branch from
main - Write tests - we use TDD and require race-free code
- Run
task check- must pass before PR - Open a PR - we review within 24 hours
Contributing Guide · Code of Conduct · Governance
Community
Questions or ideas: Discussions. Found a bug or want a feature: Issues.
License
Apache License 2.0 - see LICENSE for details.
gosqlx.dev · Playground · Docs · MCP Server · VS Code
Questions fréquentes
Qu'est-ce que GoSQLX ?
SQL validation, formatting, parsing, metadata extraction, linting, and security analysis.
Comment installer GoSQLX ?
Il fonctionne comme serveur distant. Dans Claude Code : claude mcp add --transport http gosqlx 'https://mcp.gosqlx.dev/mcp'. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.
Faut-il une clé API pour GoSQLX ?
Son entrée au registre n'indique aucune clé ni secret obligatoire. Certaines fonctions peuvent tout de même demander un compte auprès du service auquel il se connecte.
GoSQLX est-il open source ?
Oui. Son code est sur GitHub sous licence Apache-2.0.
Qui maintient GoSQLX ?
Il est publié par ajitpratap0. AI.tn le référence sans le maintenir ni le recommander.
Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.