Sqlike MCP
概要
作者による説明(英語の原文)
Lints SQL and checks rewrites return the same rows. Postgres, MySQL, MariaDB, SQLite, MSSQL, DuckDB
PopNx MCPの3つの柱
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
- 利用者の声iレビューはまだありませんレビューは今後のステップで、アカウント機能と一緒に始まります
- 私たちの基本チェックi1項目中1項目に合格公開情報からチェック。コードはまだスキャンしていません
- 利用状況iとても新しい↓ 114/週 · ★ –
できること
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
- 接続方法: パソコンで動く
- トランスポート: stdio
- カテゴリ: データベース・データセット
- 入力が必要なもの:SQLIKE_API_KEY
インストール
使っているAIアプリを選んで、設定をコピーしてください。
インストールの前に
- 基本チェック:1項目中1項目に合格
- あなたのパソコンで、あなたのユーザーと同じ権限(ファイル、ネットワーク、アプリ)で動きます。
- 自分で入力するもの:
SQLIKE_API_KEY
「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。
必要なもの
- npmNode.jsのインストール(npxコマンドに必要)
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"sqlike": {
"command": "npx",
"args": [
"-y",
"@sqlike/mcp"
],
"env": {
"SQLIKE_API_KEY": "your-value"
}
}
}
}ターミナルでこれを実行します
claude mcp add sqlike --env SQLIKE_API_KEY=your-value -- npx -y @sqlike/mcp動かす前に、空欄の値を入力してください。
または、設定を自分でコピーする
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"sqlike": {
"command": "npx",
"args": [
"-y",
"@sqlike/mcp"
],
"env": {
"SQLIKE_API_KEY": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
または、設定を自分でコピーする
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"sqlike": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@sqlike/mcp"
],
"env": {
"SQLIKE_API_KEY": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
自分で入力する値
- Optional API key for the sqlike backend (higher rate limits).
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
できること
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
基本チェックi
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月9日にチェック
- ✓ 合格
作者とリポジトリが一致
レジストリ名は、リポジトリを所有するGitHubアカウント orifisher2 で確認済みです
- … 未チェック
今もメンテナンスされている
このリポジトリはまだGitHubから読み取っていません
- … 未チェック
ライセンスがある
このリポジトリはまだGitHubから読み取っていません
- – 対象外
エンドポイントが応答する
これはパソコンで動くため、インターネット上のエンドポイントはありません
- – 対象外
OAuthでサインイン
パソコンで動き、代わりにローカルの設定を使います
- … 未チェック
ツールの説明に隠れた指示がない
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
データベース・データセットのほかのサーバーとの比較i
- このカテゴリのほかの1152件のうち0%よりスターが多い
- このカテゴリのほかの1152件のうち74%より最近レジストリに公開
- 基本チェックの結果が、このカテゴリのほかの1152件のうち100%と同じかそれ以上
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
よくある質問
Sqlike MCPは安全ですか?
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
どんなキーやコードが必要ですか?
入力が必要なもの:SQLIKE_API_KEY
パソコンで動きますか、それともクラウドですか?
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
今もメンテナンスされていますか?
GitHubリポジトリの最終更新は–、最新バージョン(0.2.3)がレジストリに届いたのは12 日前です。
どのアプリで使えますか?
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
代わりに使えるものは?
同じカテゴリには:Supabase, MongoDB MCP Server, Elasticsearch MCP Server
代わりの候補
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
作者のREADME
READMEを開く
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
sqlike: MCP server and CLI
Check your SQL before it runs, and check whether a rewrite still returns the same results.
sqlike reads a query and tells you what is wrong with it: validity errors, anti-patterns, rewrites it can apply for you, and index advice. It also compares two queries and reports whether the second one still returns the same results. There is no model anywhere in the analysis, so the same query always gets the same answer.
This repository holds the clients: an MCP server, a CLI, and the library they share. They tokenize your SQL locally, so identifiers and literals are masked before anything leaves your machine, and forward only the tokenized query. The analysis engine is not in this repo. It runs server-side and is closed.
Dialects: Postgres, MySQL, MariaDB, SQLite, SQL Server, and DuckDB. Each rule carries a verdict measured on that engine, so the severity you get is that database's behaviour and not Postgres by inheritance. DuckDB is the columnar one: it has no general-purpose secondary index, so the ten index advisors are replaced there by four columnar ones.
Why
A lot of SQL is written by an AI now, and the SQL it writes reads well more often than it runs correctly. A LEFT JOIN turns into an INNER and rows quietly disappear. A WHERE goes missing and the UPDATE hits every row. Two tables get joined on the wrong key. None of it looks wrong on the page, and none of it shows up until it has already done something.
sqlike is the check in between. It flags unsafe patterns from a catalog of 172 rules, each one verified against a real database before it ships, and it decides whether a rewrite preserves results. That second check is sound rather than complete: it certifies the rewrites it can prove, and when it cannot prove one it answers Undecided instead of guessing. Undecided never means equivalent.
Because nothing is generated, there is no retry loop, no per-token cost, and no variance between two runs on the same input. The equivalence check normalizes rather than solves, so it answers in about a millisecond where the state-of-the-art academic prover takes hundreds. That is measured head to head, including the queries where the prover wins.
Install the MCP server
Add it to any MCP client (Claude Code, Claude Desktop, Cursor, and so on):
{
"mcpServers": { "sqlike": { "command": "npx", "args": ["-y", "@sqlike/mcp"] } } }
Or install it through Smithery. Set SQLIKE_API_KEY if you have a key and want the higher rate limits. Without one you get the anonymous tier, which needs no signup.
Tools
analyze
Static analysis of one query: validity, anti-patterns, suggested rewrites, and schema and index advice. Returns the JSON analysis envelope.
| Argument | Type | Description |
|---|---|---|
sql | string | The query to analyze. Required. |
schema | string | Optional DDL (CREATE TABLE / CREATE INDEX) for column and type aware checks. |
stats | string | Optional JSON map of table to row count, e.g. {"orders": 2000000}. Severity and index advice follow volume. |
explain | string | Optional query plan (Postgres EXPLAIN (ANALYZE, FORMAT JSON), MySQL EXPLAIN FORMAT=JSON, SQLite EXPLAIN QUERY PLAN as .mode json rows, SQL Server SHOWPLAN_XML, DuckDB EXPLAIN (FORMAT JSON)). Confirms or dismisses index findings by what the planner did. |
dialect | string | postgres (default), mysql, mariadb, sqlite, mssql, or duckdb. |
allow_raw | boolean | Only used when a query fails to parse, and so cannot be tokenized: send the raw SQL to get a parse diagnostic. Default false. |
diff
Checks whether two queries are equivalent, which is the judgement an LLM cannot reliably make about its own rewrite. Returns a verdict (Equivalent, EquivalentWithNotes, Differs, or Undecided), a confidence level, and a report per property (columns, rows, cardinality, order), so you see what changed rather than a single yes or no.
| Argument | Type | Description |
|---|---|---|
sql_a | string | The original query. Required. |
sql_b | string | The rewritten query to check against sql_a. Required. |
schema | string | Optional DDL both queries resolve against (one shared schema). |
dialect | string | postgres (default), mysql, mariadb, sqlite, mssql, duckdb. |
CLI
The same checks from a terminal or a CI job. Run it with no install, or put it on the path:
npx -y @sqlike/cli --help
npm i -g @sqlike/cli brew install orifisher2/sqlike/sqlike
# analyze a query — the hosted API is the default, so no flags are needed
sqlike check query.sql
several files at once, with a schema
sqlike check migrations/*.sql --schema schema.sql
reading from stdin, machine-readable output (one JSON record per file)
cat query.sql | sqlike check - --schema schema.sql --json
check that a rewrite is equivalent
sqlike diff before.sql after.sql
Point it elsewhere with --remote or SQLIKE_URL, and authenticate with --key or SQLIKE_API_KEY.
If you have the query's EXPLAIN output, pass it with --explain plan.json and the real access paths will confirm or dismiss the index findings. The plan is tokenized before it leaves the machine, same as the query and the schema.
Exit codes are a contract, so each one means exactly one thing:
check | diff | |
|---|---|---|
| 0 | clean, or nothing at or above --fail-on | equivalent |
| 1 | a warning, when --fail-on warn asks for it | differs |
| 2 | a blocking defect: invalid SQL, or a high-severity correctness problem | undecided |
| 3 | operational — unreachable, rate-limited, or unparseable | same |
| 4 | usage error (a bad flag) | same |
check defaults to --fail-on block, so advisory findings report without failing a build. Ask for --fail-on warn to be strict, or never to only report. 3 is never a verdict about your SQL — a pipeline can tell "this query is bad" from "the call did not go through".
In CI, and on commit
Gate SQL where it is written. Both run the same checks as the CLI, and both tokenize locally first.
GitHub Actions. Findings land inline on the pull-request diff. The workflow authenticates as your repository owner using GitHub's own OIDC token — no signup, no API key to store or leak.
permissions:
id-token: write # authenticate as this repo's owner pull-requests: read # check only the files this PR changes contents: read # mode: diff, to read the earlier version of a file steps:
- uses: actions/checkout@v5
- uses: orifisher2/sqlike@cli-v0.4.2 with: dialect: postgres schema: db/schema.sql
Set mode: diff and it answers a different question on every pull request: *did this rewrite change what the query returns?* Only modified files are compared, and a verdict of "cannot prove either way" never fails a build.
Pull requests from forks run anonymously. GitHub does not issue OIDC tokens to workflows a fork triggers, so a contributor's pull request cannot authenticate as your repository — it falls back to an anonymous, per-IP rate limit. Nothing is broken and there is nothing to configure; your own branches still authenticate normally. The action says so rather than suggesting a permission that would not help.
Outside a pull request there is no set of changed files, so changed-only cannot apply and every matching file is checked. The action warns when that happens, because on a large repository it is enough requests to reach a rate limit.
pre-commit. Same checks before the commit lands:
repos:
- repo: https://github.com/orifisher2/sqlike rev: cli-v0.4.2 hooks:
- id: sqlike args: [--dialect, postgres]
The hook blocks a commit on a real defect, not on a bad connection: if sqlike cannot be reached it says so and lets the commit through.
Private by design
Tokenization happens here, on your machine, before any request goes out. sqlike never sees your real table names, columns, or values, so there is nothing to leak and nothing to train on. An AI assistant needs the real thing to help you; sqlike does not.
If a query cannot be parsed it cannot be tokenized, and the client refuses to send it rather than transmit raw SQL. Sending it anyway is an explicit opt-in (allow_raw on the tools, --allow-raw on the CLI).
See THREAT-MODEL.md for what that does and does not cover.
What is in this repo
- `crates/mcp`:
sqlike-mcp, the MCP server. Ships to npm as@sqlike/mcp. - `crates/cli`:
sqlike, the command-line client. Ships to npm as@sqlike/cli. - `crates/client`: the shared forwarder, with no engine in it: tokenize, call the API, detokenize.
- `crates/core-parse`: the SQL parser, stage model, tokenizer, and result types.
- `packages/`: the npm packaging, with a prebuilt binary per platform.
- `skills/`: the agent skill, so a coding agent knows when to reach for sqlike on its own.
Learn more
Try it at [sqlike.com](https://sqlike.com). The equivalence checker is measured in public against the standard academic benchmark, including a head-to-head with the state-of-the-art prover, at [sqlike.com/benchmark](https://sqlike.com/benchmark).
Note
This repository is generated from the upstream monorepo, which is the source of truth. Please file issues here. Code changes are made upstream and mirrored back.
License
Apache-2.0. See LICENSE.
crates/sqlparser is a vendored copy of sqlparser-rs, also Apache-2.0. Its NOTICE file records the upstream version and lists every file changed since.