valv runs on your own machine — the client starts it, so there is no endpoint to ping. 45 installs a week from npm. Last commit 2 Oct 2026.
Let coding agents query any SQL database safely. Read-only by default and scoped by your policies.
We read the source, 3 d ago · rules 995398eba69f
Things with no honest explanation: a promise that contradicts the code, code that runs at install time while hiding what it does, data leaving the machine.
execFileSync(process.execPath, [cliPath, ...args], {
What this server is able to do. For an MCP server this is often the job itself — a terminal server runs commands because that is what it is for. Listed so you know what you are plugging in, not as an accusation.
execFileSync(process.execPath, [cliPath, ...args], {
Is this your server and something here is wrong? Tell us — corrections are free and do not require a plan.
Code changes quietly between releases, and nobody reads the diff of a dependency. We do, on every release — watch valv and you get told the day something new turns up.
This server runs on your own machine — install it with the package manager and the client starts it for you. Package name taken from the official registry entry.
claude mcp add mcp -e 'DATABASE_URL=<DATABASE_URL>' -- npx -y @valv/mcp
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@valv/mcp"
],
"env": {
"DATABASE_URL": "<DATABASE_URL>"
}
}
}
}
[mcp_servers.mcp]
command = "npx"
args = ["-y", "@valv/mcp"]
env = { DATABASE_URL = "<DATABASE_URL>" }
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@valv/mcp"
],
"env": {
"DATABASE_URL": "<DATABASE_URL>"
}
}
}
}
{
"servers": {
"mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@valv/mcp"
],
"env": {
"DATABASE_URL": "<DATABASE_URL>"
}
}
}
}
Put your own value in place of
<DATABASE_URL> (Database connection string. PostgreSQL, MySQL, SQLite, CockroachDB, or a ClickHouse HTTP URL).
The author’s registry entry marks it as required.
Optional settings from the registry entry, left out of the block above:
VALV_PROVIDER (Datasource provider: postgresql, mysql, sqlite, or clickhouse. Inferred from DATABASE_URL when omitted), VALV_DATABASE (Database name. Required for ClickHouse, whose URL does not carry one), VALV_TABLES (Comma-separated allow-list of tables. When set, only these are exposed to the agent), VALV_EXCLUDE (Comma-separated deny-list of tables, applied after the allow-list), VALV_POLICY_FILE (Path to a policy module that takes full control of access. Without it, the server is read-only across all tables), VALV_CONTEXT (JSON context object the policy reads, e.g. {"tenant":{"id":"acme"}}), VALV_HTTP_PORT (Serve over Streamable HTTP on this port instead of stdio).
Safety-railed database access: Postgres, MySQL, SQLite, Redis. Read-only by default.
Safe, read-only database access for AI agents. 5 databases, batch queries, SQLGlot.
Drizzle Studio for agents: explore your database through your Drizzle schema. Read-only by default.
Agent-safe MCP sidecar for one live SQLite database: read-only default, bounded writes.
Read-only SQL queries against a PostgreSQL database.
Query, monitor and schedule SQL across your databases: schemas, read-only SQL, alerts, hosts.
Safe, read-only-by-default MySQL, PostgreSQL & SQLite access for AI agents. TOON output.
Run code, query databases, call any LLM, and commit to GitHub from your AI, safely. Free tier.
Answers built from our own checks of this server.