sqlfluff-mcp-server
An MCP server that exposes SQLFluff's linting, fixing, and parsing over the Model Context Protocol, so any MCP-aware client (Claude, other agents, IDE integrations) can lint and fix SQL directly.
This project is independent of the SQLFluff maintainers — it's a thin wrapper
around the public sqlfluff Python package.
Tools
| Tool | Input | Config resolution |
|---|---|---|
lint_file |
path on disk | walks up from the file for .sqlfluff / pyproject.toml / etc. |
fix_file |
path on disk (+ write flag) |
same directory walk |
parse_file |
path on disk | same directory walk |
lint_sql |
raw SQL text + dialect |
none — dialect supplied explicitly |
fix_sql |
raw SQL text + dialect |
none — dialect supplied explicitly |
parse_sql |
raw SQL text + dialect |
none — dialect supplied explicitly |
list_dialects |
— | lists supported dialect names |
clear_config_cache |
— | clears SQLFluff's cached config-file contents |
The *_file tools honor project config the same way the sqlfluff CLI does
(via FluffConfig.from_path, which walks up the directory tree looking for
.sqlfluff, pyproject.toml, setup.cfg, or tox.ini). The *_sql tools
are for content that hasn't been written to disk (e.g. streamed from an
editor buffer) and require you to pass dialect explicitly since there's no
file location to resolve config from.
Config caching
SQLFluff caches the contents of config files it reads while walking a
directory tree, for the lifetime of the process. Because this server is
long-running (unlike the sqlfluff CLI, which is a fresh process per
invocation), editing a .sqlfluff file after the server has started won't
be picked up by lint_file / fix_file / parse_file until you call
clear_config_cache. Call it whenever config on disk changes, or just
proactively before a lint/fix/parse call if you're unsure.
Requirements
- Python 3.10+
- uv (recommended) or
pipx/pip
Registering with an MCP client
This package is published on PyPI,
so there's nothing to clone or install ahead of time. Point your MCP
client's config (e.g. .claude.json / .mcp.json for Claude Code, or
Claude Desktop's config file) at it via uvx, and it's fetched into an
isolated cache and launched on demand:
{
"mcpServers": {
"sqlfluff": {
"command": "uvx",
"args": ["sqlfluff-mcp-server"]
}
}
}
No uv? pipx run sqlfluff-mcp-server as the command/args works the
same way.
For stdio-based servers like this one, the client itself launches the process — automatically, when the client session starts, not when a prompt first needs it. Once it's registered, just ask the client to lint or fix a SQL file; the server is already running in the background and the tools are already available. If the server process crashes, the client restarts it for you.
Running it manually (for local testing/debugging)
uvx sqlfluff-mcp-server
This starts the server over stdio and blocks, waiting for an MCP client to speak the protocol to it on stdin/stdout — it's not something you'd run interactively day to day, just useful for sanity-checking the install or piping through the MCP Inspector.
Development
Clone the repo to work on the server itself (rather than just consuming it
via uvx):
git clone <this-repo-url>
cd sqlfluff-mcp-server
uv sync --extra dev
uv run pytest
uv run ruff check .
To point an MCP client at your local checkout instead of the PyPI release (e.g. to test unreleased changes):
{
"mcpServers": {
"sqlfluff": {
"command": "uv",
"args": ["--directory", "/path/to/sqlfluff-mcp-server", "run", "sqlfluff-mcp-server"]
}
}
}
Notes on dependencies
mcpis pinned to>=2.0.0,<3.0.0. The SDK's 2.0 line renamedmcp.server.fastmcp.FastMCPtomcp.server.mcpserver.MCPServerand moved transport selection torun(transport=...); the@mcp.tool()decorator API is unchanged.sqlfluffis left unpinned above3.0.0— SQLFluff releases fairly often and this server only depends on its stableLinter/FluffConfigAPI.
License
MIT — see LICENSE.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sqlfluff_mcp_server-0.2.0.tar.gz.
File metadata
- Download URL: sqlfluff_mcp_server-0.2.0.tar.gz
- Upload date:
- Size: 108.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
76043574aea8badec09c325945344fb68f7437c7b59757fe120c0fb25a6a1c41
|
|
| MD5 |
40dedc390b55108ed609ebc81fc2d48c
|
|
| BLAKE2b-256 |
02b77f1d4766d5da58b6e6d090917c61794c0b6cea30ab09d44d327441c0b955
|
Provenance
The following attestation bundles were made for sqlfluff_mcp_server-0.2.0.tar.gz:
Publisher:
publish.yml on gswartwood/sqlfluff-mcp-server
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sqlfluff_mcp_server-0.2.0.tar.gz -
Subject digest:
76043574aea8badec09c325945344fb68f7437c7b59757fe120c0fb25a6a1c41 - Sigstore transparency entry: 2466081149
- Sigstore integration time:
-
Permalink:
gswartwood/sqlfluff-mcp-server@7ae0da3aef7c186d4aa0aa645443f6b9b3aec3d9 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/gswartwood
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7ae0da3aef7c186d4aa0aa645443f6b9b3aec3d9 -
Trigger Event:
release
-
Statement type:
File details
Details for the file sqlfluff_mcp_server-0.2.0-py3-none-any.whl.
File metadata
- Download URL: sqlfluff_mcp_server-0.2.0-py3-none-any.whl
- Upload date:
- Size: 7.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e36135fcb996bced4bc48297368d0694373331d100a24f4bad3f33acc22e513
|
|
| MD5 |
54697a6b4ffb0a1c9d3a485bf3c97d29
|
|
| BLAKE2b-256 |
7e1782da3121a6f8dd44d53ab33d6c3207c83b941c25e1febab477e412863918
|
Provenance
The following attestation bundles were made for sqlfluff_mcp_server-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on gswartwood/sqlfluff-mcp-server
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sqlfluff_mcp_server-0.2.0-py3-none-any.whl -
Subject digest:
8e36135fcb996bced4bc48297368d0694373331d100a24f4bad3f33acc22e513 - Sigstore transparency entry: 2466081162
- Sigstore integration time:
-
Permalink:
gswartwood/sqlfluff-mcp-server@7ae0da3aef7c186d4aa0aa645443f6b9b3aec3d9 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/gswartwood
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7ae0da3aef7c186d4aa0aa645443f6b9b3aec3d9 -
Trigger Event:
release
-
Statement type: