关于 GoSQLX
GoSQLX 是面向 SQL 开发者的纯 Go 解析 SDK 和工具集,支持多种 SQL 方言。它将 AST 解析与格式化、Lint、安全扫描和元数据提取结合,并提供 MCP 服务。
主要功能
- 01将 SQL 解析为抽象语法树
- 02支持八种 SQL 方言
- 03格式化和转换 SQL 查询
- 04扫描注入风险与 Lint 问题
- 05提取 SQL 元数据
- 06提供命令行工具、VS Code 扩展和 GitHub Action
适用场景
- 01在项目中验证不同方言的 SQL
- 02为代码审查格式化查询
- 03扫描 SQL 注入风险和 Lint 违规
- 04让 MCP 客户端分析 SQL
MCP 相关
远程 MCP 服务通过 Streamable HTTP 向 MCP 客户端提供七种 SQL 工具,包括 Claude 和 Cursor。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
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
纯 Go SQL 解析器、格式化工具、代码检查器和安全扫描器,支持 8 种方言。
在线体验 · 文档 · 基准测试 · VS Code · MCP 服务
| 约 2.9M 次解析/秒† | 解析延迟 349 ns† | 约 80–85% SQL-99(估算) | 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(约 2.9M 次解析/秒)。
为什么选择 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 审查 Agent):先运行 /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
格式化会将单行 SQL 转换为易读的查询:
功能
- 解析器 - 零拷贝分词器、递归下降解析器和完整的 AST 生成。
- 分析 - SQL 注入扫描器、30 条代码检查规则(L001-L030)、20 条优化器规则和元数据提取。
- 工具 - 基于 AST 的格式化器、查询转换 API、VS Code 扩展和 GitHub Action。
- 语法高亮 - 支持终端(ANSI)、HTML/CSS、JSON spans、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 由像你这样的贡献者共同构建。无论是修复 Bug、添加新功能、改进文档,还是仅仅更正一个拼写错误,每一份贡献都很重要。
git clone https://github.com/ajitpratap0/GoSQLX.git && cd GoSQLX
task check # fmt → vet → lint → test (with race detection)
- Fork 并从
main创建分支 - 编写测试 - 我们采用 TDD,并要求代码不存在竞态
- 运行
task check- 提交 PR 前必须通过 - 提交 PR - 我们会在 24 小时内审核
社区
## License
Apache License 2.0 - see LICENSE for details.
gosqlx.dev · Playground · Docs · MCP Server · VS Code
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。