内容
# sqlike:MCP 服务器与客户端
[](https://www.npmjs.com/package/@sqlike/mcp)
[](https://www.npmjs.com/package/@sqlike/cli)
[](#license)
用于 PostgreSQL、MySQL、SQLite 和 SQL Server 的确定性 SQL **静态分析** 和 **查询等价性** 检查,作为 [MCP](https://modelcontextprotocol.io) 服务器、CLI 和共享客户端库。sqlike 的一部分。
这些是**薄远程客户端**。它们在本地**标记**您的 SQL(标识符和字面量在离开您的机器之前被掩盖),并将标记的查询转发到 sqlike API 进行分析。它们不包含分析引擎;分析引擎在服务器端运行并被关闭。
## 安装 MCP 服务器
将其添加到任何 MCP 客户端(Claude Desktop、Cursor 等):
```json
{
"mcpServers": {
"sqlike": { "command": "npx", "args": ["-y", "@sqlike/mcp"] }
}
}
```
或通过 [Smithery](https://smithery.ai/servers/orifisher2/sqlike) 安装。可选的 `SQLIKE_API_KEY` 环境变量提高了速率限制;如果没有它,您将获得开放的匿名层。
## 工具
### `analyze`
单个 SQL 查询的静态分析:有效性、反模式、建议的重写和模式/索引建议。返回 JSON 分析信封。
| 参数 | 类型 | 描述 |
| --------- | ------ | ------------------------------------------------------------------ |
| `sql` | 字符串 | 要分析的 SQL 查询。**必填。** |
| `schema` | 字符串 | 可选的 DDL(`CREATE TABLE` / `CREATE INDEX`)用于列和类型感知检查。 |
| `dialect` | 字符串 | `postgres`(默认)、`mysql`、`sqlite` 或 `mssql`。 |
| `allow_raw`| 布尔值 | 仅在查询无法解析时使用(因此无法标记):发送原始 SQL 进行解析诊断。默认 `false`。 |
### `diff`
检查两个 SQL 查询是否**等价**(结果保留),用于验证重写或重构。返回判决(`Equivalent` / `EquivalentWithNotes` / `Differs` / `Undecided`)、置信度和属性报告(列、行、基数、顺序)。`Undecided` 绝不意味着等价。这是 LLM 无法可靠地自我评分的判断。
| 参数 | 类型 | 描述 |
| ------ | ------ | ------------------------------------------------------- |
| `sql_a`| 字符串 | 原始查询。**必填。** |
| `sql_b`| 字符串 | 要与 `sql_a` 对比的改写查询。**必填。** |
| `schema`| 字符串 | 两个查询都解析的的可选 DDL(一个共享的模式)。 |
| `dialect`| 字符串 | `postgres`(默认)、`mysql`、`sqlite` 或 `mssql`。 |
## CLI
`crates/cli` 构建 `sqlike`,一个命令行客户端:
```sh
sqlike check "SELECT * FROM users WHERE id = 1" --remote https://api.sqlike.com
```
## 内容
- **`crates/mcp`**: `sqlike-mcp`,MCP 服务器。作为 [`@sqlike/mcp`](packages/mcp) 发布到 npm。
- **`crates/cli`**: `sqlike`,命令行客户端。
- **`crates/client`**: 共享的、无引擎的转发器:标记 → 调用 API → 取消标记。
- **`crates/core-parse`**: SQL 解析器、阶段模型、标记器和结果类型。
- **`packages/`**: `@sqlike/mcp` 的 npm 打包(每个平台的预编译二进制文件)。
## 隐私
标记化在这里发生,在您的机器上,在任何请求之前。如果查询无法解析,则无法标记;客户端然后**拒绝**发送它,而不是传输原始 SQL,除非您明确选择加入(`allow_raw` / `--allow-raw`)。
## 注意
此仓库从上游 monorepo(源头)生成。请在此处提交问题;代码更改在上游进行并镜像。
## 许可证
MIT OR Apache-2.0,由您选择。