Permet aux agents de codage d'interroger des bases de données SQL et NoSQL en toute sécurité grâce à des outils en lecture seule et un contrôle d'accès basé sur des politiques.
Aussi connu sous valv-dev/valv, mcp, @valv/mcp
- Étoiles
- 5
- Outils
- —
- Téléchargements, 30 jours
- —
- Dernière version
- 0.6.2
- Dernier commit
- 2 oct. 2026
- Licence
- MIT
Qu'est-ce que valv MCP ?
valv est un serveur MCP. Permet aux agents de codage d'interroger des bases de données SQL et NoSQL en toute sécurité grâce à des outils en lecture seule et un contrôle d'accès basé sur des politiques.
Résumé généré à partir du README du projet
À propos du MCP server valv
valv permet d'interroger des bases de données en direct via des agents de codage sans exposer de SQL brut ni risquer de modifier les données. Les développeurs peuvent connecter ce serveur à PostgreSQL, MySQL, SQLite, CockroachDB, ClickHouse ou MongoDB à l'aide d'une chaîne de connexion. Il fonctionne comme un pont en lecture seule qui inspecte votre schéma et fournit quatre outils spécifiques : list_resources, search_resources, describe_resource et query.
L'installation s'effectue via npx ou par configuration manuelle dans des fichiers tels que .mcp.json pour des clients comme Claude Desktop, Claude Code, Cursor ou Codex. Vous pouvez contrôler l'accès via des variables d'environnement comme VALV_TABLES pour autoriser des tables spécifiques ou VALV_EXCLUDE pour les exclure. Pour une sécurité plus granulaire, un fichier de politique peut masquer des colonnes spécifiques ou restreindre l'accès aux lignes en fonction d'un contexte JSON fourni. Cela garantit que le modèle n'interagit qu'avec les données que vous autorisez explicitement, tout en l'empêchant de voir ou d'exécuter des commandes SQL brutes.
Ce que vous pouvez faire avec
- 1Exploration sécurisée du schéma de la base de donnéesDemandez à un agent IA de découvrir la structure et les tables disponibles au sein d'une base de données de production.
- 2Récupération de données restreinteDonnez l'instruction à un agent de récupérer des enregistrements spécifiques tout en garantissant que les colonnes sensibles restent cachées au modèle.
- 3Reporting de données automatiséUtilisez un agent de codage pour transformer les résultats de requêtes de base de données en graphiques HTML et rapports interactifs.
- 4Isolation des données multi-tenantsUtilisez des fichiers de politique pour garantir qu'un agent accède uniquement aux données appartenant à un tenant ou un utilisateur spécifique.
Extrait du README du projet. Chaque cas d'utilisation est vérifié par rapport à une citation du document.
Comment installer valv MCP
Formats vérifiés le 10 nov. 2026Ajouter à CursorAjouter à GooseInstaller valv MCP dans Claude Code
$ claude mcp add --env 'DATABASE_URL=<YOUR_DATABASE_URL>' mcp -- npx -y @valv/mcpInstaller valv MCP dans Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@valv/mcp"
],
"env": {
"DATABASE_URL": "<YOUR_DATABASE_URL>"
}
}
}
}Installer valv MCP dans VS Code
.vscode/mcp.json
{
"servers": {
"mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@valv/mcp"
],
"env": {
"DATABASE_URL": "<YOUR_DATABASE_URL>"
}
}
}
}Installer valv MCP dans VS Code CLI
$ code --add-mcp '{"name":"mcp","type":"stdio","command":"npx","args":["-y","@valv/mcp"],"env":{"DATABASE_URL":"<YOUR_DATABASE_URL>"}}'Installer valv MCP dans Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@valv/mcp"
],
"env": {
"DATABASE_URL": "<YOUR_DATABASE_URL>"
}
}
}
}Installer valv MCP dans Codex
$ codex mcp add mcp --env 'DATABASE_URL=<YOUR_DATABASE_URL>' -- npx -y @valv/mcpInstaller valv MCP dans Codex config.toml
~/.codex/config.toml
[mcp_servers.mcp] command = "npx" args = ["-y", "@valv/mcp"] [mcp_servers.mcp.env] DATABASE_URL = "<YOUR_DATABASE_URL>"
Installer valv MCP dans Gemini CLI
$ gemini mcp add -s user -e 'DATABASE_URL=<YOUR_DATABASE_URL>' mcp npx -- -y @valv/mcpInstaller valv MCP dans Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@valv/mcp"
],
"env": {
"DATABASE_URL": "<YOUR_DATABASE_URL>"
}
}
}
}Configuration
DATABASE_URLRequisSecretDatabase connection string. PostgreSQL, MySQL, SQLite, CockroachDB, or a ClickHouse HTTP URL.
VALV_CONTEXTJSON context object the policy reads, e.g. {"tenant":{"id":"acme"}}.
VALV_DATABASEDatabase name. Required for ClickHouse, whose URL does not carry one.
VALV_EXCLUDEComma-separated deny-list of tables, applied after the allow-list.
VALV_HTTP_PORTServe over Streamable HTTP on this port instead of stdio.
VALV_POLICY_FILEPath to a policy module that takes full control of access. Without it, the server is read-only across all tables.
VALV_PROVIDERDatasource provider: postgresql, mysql, sqlite, or clickhouse. Inferred from DATABASE_URL when omitted.
VALV_TABLESComma-separated allow-list of tables. When set, only these are exposed to the agent.
| Nom | Description | Type |
|---|---|---|
| DATABASE_URL | Database connection string. PostgreSQL, MySQL, SQLite, CockroachDB, or a ClickHouse HTTP URL. | RequisSecret |
| VALV_CONTEXT | JSON context object the policy reads, e.g. {"tenant":{"id":"acme"}}. | |
| VALV_DATABASE | Database name. Required for ClickHouse, whose URL does not carry one. | |
| VALV_EXCLUDE | Comma-separated deny-list of tables, applied after the allow-list. | |
| VALV_HTTP_PORT | Serve over Streamable HTTP on this port instead of stdio. | |
| 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_PROVIDER | Datasource provider: postgresql, mysql, sqlite, or clickhouse. Inferred from DATABASE_URL when omitted. | |
| VALV_TABLES | Comma-separated allow-list of tables. When set, only these are exposed to the agent. |
Vérifications automatisées
Exécuté le 14 nov. 2026Rapport complet →A passé nos vérifications automatisées. Il ne s'agit pas d'un audit de sécurité : lisez le code et donnez au serveur l'accès le plus restreint dont il a besoin. Fonctionnement des vérifications
- Dépôt source lié et accessiblevalv-dev/valv is public and reachablegithub.com/valv-dev/valv ↗Réussi
- Le nom du package correspond au dépôt source@valv/mcp names valv-dev/valv as sourcenpmjs.com/package/@valv/mcp ↗Réussi
- Provenance du build (attestation Sigstore)No build attestation published for this releaseNon vérifié
- Licence open source (OSI)MITspdx.org/licenses/MIT.html ↗Réussi
- Commit ou version publiée au cours de l'année écouléeLast commit or release 2026-10-02github.com/valv-dev/valv ↗Réussi
- OpenSSF ScorecardNon vérifié
- Nom du package non proche d'un package populaireNo popular package one edit away from @valv/mcpRéussi
- Aucun avis critique dans le package ou ses dépendances130 resolved dependencies checked; no critical advisoryosv.dev ↗Réussi
- Aucune instruction cachée destinée au modèle0 tool descriptions and the README read; no override phrases, credential paths or hidden charactersRéussi
- Les outils destructifs sont étiquetésNon vérifié
- Le point de terminaison distant répond à la poignée de main MCPNon vérifié
README
Voir sur GitHub@valv/mcp
Point it at a database URL. Your agent queries it safely. No SQL, no code.
A zero-config MCP server built on valv. Give it a connection string and it introspects your live schema, serves four tools (list_resources, search_resources, describe_resource, query) read-only by default, and enforces your policies — no SQL ever reaches the model, and it can only read what you allow.
Works with PostgreSQL, MySQL, SQLite, CockroachDB, ClickHouse, and MongoDB.
Guided setup
The fastest way in — it probes your database, lets you choose access, and writes the config:
npx @valv/mcp init
It takes either a connection string or individual fields (host, port, user, password, database), confirms the dialect, connects and shows your tables, then offers read-only / pick-tables / a policy-file stub. It then merges the server entry into the client of your choice — Claude Code, Claude Desktop, Cursor, or Codex — at project or global scope, leaving any existing config in place. Lastly it offers to install the valv skill, which teaches the agent how to query valv and turn results into interactive chart-report HTML files — as a skill for Claude Code (.claude/skills), Codex (.agents/skills), or Cursor (.cursor/skills), at project or global scope. Finally it can copy a kickstart prompt to your clipboard — paste it into your agent to explore the schema (seeding .valv/notes.md for future queries) and generate a single interactive valv-map.html overview of the database.
Manual setup
Add it to your .mcp.json (or Claude Desktop config):
{
"mcpServers": {
"db": {
"command": "npx",
"args": ["-y", "@valv/mcp"],
"env": { "DATABASE_URL": "postgresql://user:pass@localhost:5432/mydb" }
}
}
}
For ClickHouse, use its HTTP URL and a database name:
"env": { "DATABASE_URL": "http://localhost:8123", "VALV_DATABASE": "analytics" }
For MongoDB, use a standard connection string. Set VALV_DATABASE when the
URL does not select a database:
"env": { "DATABASE_URL": "mongodb://localhost:27017", "VALV_DATABASE": "analytics" }
Configuration
All via environment variables:
| Variable | Description |
|---|---|
DATABASE_URL |
Connection string (required; or pass as the first CLI arg). |
VALV_PROVIDER |
postgresql | mysql | sqlite | mongodb | clickhouse. Inferred from the URL when omitted. |
VALV_DATABASE |
Database name for ClickHouse or MongoDB. |
VALV_TABLES |
Comma-separated allow-list — only these tables are exposed. |
VALV_EXCLUDE |
Comma-separated deny-list, applied after the allow-list. |
VALV_POLICY_FILE |
Path to a policy module (below) for tenant scoping / hidden fields. |
VALV_CONTEXT |
JSON context the policy reads (e.g. {"tenant":{"id":"acme"}}). |
VALV_HTTP_PORT |
Serve over Streamable HTTP on this port instead of stdio. |
Policy file
Without one, access is read-only across all tables. To restrict what the agent can see — which tables, which columns — point VALV_POLICY_FILE at a module that receives the configured valv instance:
// valv.policy.cjs
module.exports = (valv) => {
valv.policy("orders", () => ({
read: true, // allow reads (or { column: value } to filter rows)
fields: { deny: ["internal_notes"] }, // hide columns from the agent
}))
// Tables without a policy are denied (deny-all).
}
Need per-request row scoping by tenant/user? That belongs in the app-controlled path, where your code supplies real identity per request — use @valv/mcp-sdk (or pass a fixed VALV_CONTEXT and read it in the policy here).
License
MIT
Questions sur valv MCP
Comment ajouter valv MCP à Claude Code ?
Exécutez claude mcp add --env 'DATABASE_URL=<YOUR_DATABASE_URL>' mcp -- npx -y @valv/mcp dans votre terminal. Ajoutez --scope user pour le rendre disponible dans tous les projets.
Comment ajouter valv MCP à Cursor ?
Ouvrez ~/.cursor/mcp.json et ajoutez le serveur sous mcpServers, avec la configuration Cursor indiquée dans la section d'installation ci-dessus.
Quelles bases de données sont prises en charge ?
Le serveur fonctionne avec PostgreSQL, MySQL, SQLite, CockroachDB, ClickHouse et MongoDB.
L'accès à la base de données est-il en lecture seule ?
Oui, le serveur fournit des outils qui sont en lecture seule par défaut pour garantir la sécurité.
Comment puis-je restreindre les tables ou colonnes qu'un agent peut voir ?
Vous pouvez utiliser un fichier de politique pour définir des règles d'accès spécifiques, comme autoriser la lecture sur certaines tables ou interdire des colonnes spécifiques.
Puis-je l'utiliser avec MongoDB ?
Oui, vous pouvez utiliser une chaîne de connexion standard pour MongoDB et définir la variable VALV_DATABASE si l'URL ne sélectionne pas de base de données.