Permite que los agentes de programación consulten bases de datos SQL y NoSQL de forma segura mediante herramientas de solo lectura y control de acceso basado en políticas.
También conocido como valv-dev/valv, mcp, @valv/mcp
- Stars
- 5
- Herramientas
- —
- Descargas, 30 días
- —
- Última versión
- 0.6.2
- Último commit
- 2 oct 2026
- Licencia
- MIT
¿Qué es valv MCP?
valv es un MCP server. Permite que los agentes de programación consulten bases de datos SQL y NoSQL de forma segura mediante herramientas de solo lectura y control de acceso basado en políticas.
Resumen generado a partir del README del proyecto
Acerca del MCP server de valv
valv permite consultar bases de datos en vivo a través de agentes de programación sin exponer SQL puro ni arriesgarse a la modificación de datos. Los desarrolladores pueden conectar este servidor a PostgreSQL, MySQL, SQLite, CockroachDB, ClickHouse o MongoDB mediante una cadena de conexión. Funciona como un puente de solo lectura que realiza la introspección de tu esquema y proporciona cuatro herramientas específicas: list_resources, search_resources, describe_resource y query.
La configuración se realiza mediante npx o de forma manual en archivos como .mcp.json para clientes como Claude Desktop, Claude Code, Cursor o Codex. Puedes controlar el acceso mediante variables de entorno como VALV_TABLES para crear una lista de permitidos de tablas específicas o VALV_EXCLUDE para crear una lista de denegados. Para una seguridad más granular, un archivo de políticas puede ocultar columnas específicas o restringir el acceso a filas basándose en un contexto JSON proporcionado. Esto asegura que el modelo solo interactúe con los datos que permites explícitamente, evitando que vea o ejecute comandos SQL puros.
Qué puedes hacer con él
- 1Exploración segura del esquema de la base de datosPide a un agente de IA que descubra la estructura y las tablas disponibles dentro de una base de datos de producción.
- 2Recuperación de datos restringidaInstruye a un agente para que obtenga registros específicos asegurando que las columnas sensibles permanezcan ocultas para el modelo.
- 3Informes de datos automatizadosHaz que un agente de programación transforme los resultados de las consultas de la base de datos en gráficos e informes HTML interactivos.
- 4Aislamiento de datos multi-tenantUsa archivos de políticas para asegurar que un agente solo acceda a los datos que pertenecen a un inquilino o usuario específico.
Escrito a partir del README del proyecto. Cada caso de uso se verifica con una cita del mismo.
Cómo instalar valv MCP
Formatos verificados el 10 nov 2026Añadir a CursorAñadir a GooseInstalar valv MCP en Claude Code
$ claude mcp add --env 'DATABASE_URL=<YOUR_DATABASE_URL>' mcp -- npx -y @valv/mcpInstalar valv MCP en Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@valv/mcp"
],
"env": {
"DATABASE_URL": "<YOUR_DATABASE_URL>"
}
}
}
}Instalar valv MCP en VS Code
.vscode/mcp.json
{
"servers": {
"mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@valv/mcp"
],
"env": {
"DATABASE_URL": "<YOUR_DATABASE_URL>"
}
}
}
}Instalar valv MCP en VS Code CLI
$ code --add-mcp '{"name":"mcp","type":"stdio","command":"npx","args":["-y","@valv/mcp"],"env":{"DATABASE_URL":"<YOUR_DATABASE_URL>"}}'Instalar valv MCP en Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@valv/mcp"
],
"env": {
"DATABASE_URL": "<YOUR_DATABASE_URL>"
}
}
}
}Instalar valv MCP en Codex
$ codex mcp add mcp --env 'DATABASE_URL=<YOUR_DATABASE_URL>' -- npx -y @valv/mcpInstalar valv MCP en Codex config.toml
~/.codex/config.toml
[mcp_servers.mcp] command = "npx" args = ["-y", "@valv/mcp"] [mcp_servers.mcp.env] DATABASE_URL = "<YOUR_DATABASE_URL>"
Instalar valv MCP en Gemini CLI
$ gemini mcp add -s user -e 'DATABASE_URL=<YOUR_DATABASE_URL>' mcp npx -- -y @valv/mcpInstalar valv MCP en Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"-y",
"@valv/mcp"
],
"env": {
"DATABASE_URL": "<YOUR_DATABASE_URL>"
}
}
}
}Configuración
DATABASE_URLObligatorioSecretoDatabase 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.
| Nombre | Descripción | Tipo |
|---|---|---|
| DATABASE_URL | Database connection string. PostgreSQL, MySQL, SQLite, CockroachDB, or a ClickHouse HTTP URL. | ObligatorioSecreto |
| 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. |
Verificaciones automáticas
Ejecutado 14 nov 2026Informe completo →Pasó nuestras verificaciones automáticas. Esto no es una auditoría de seguridad: lee el código y dale al servidor el acceso más limitado que necesite. Cómo funcionan las verificaciones
- Repositorio de origen vinculado y accesiblevalv-dev/valv is public and reachablegithub.com/valv-dev/valv ↗Aprobado
- El paquete indica este repositorio como su origen@valv/mcp names valv-dev/valv as sourcenpmjs.com/package/@valv/mcp ↗Aprobado
- Procedencia de la compilación (atestación de Sigstore)No build attestation published for this releaseNo verificado
- Licencia de código abierto (OSI)MITspdx.org/licenses/MIT.html ↗Aprobado
- Commit o lanzamiento en el último añoLast commit or release 2026-10-02github.com/valv-dev/valv ↗Aprobado
- OpenSSF ScorecardNo verificado
- El nombre del paquete no es similar a un paquete popularNo popular package one edit away from @valv/mcpAprobado
- No hay avisos críticos en el paquete ni en sus dependencias130 resolved dependencies checked; no critical advisoryosv.dev ↗Aprobado
- Sin instrucciones ocultas para el modelo0 tool descriptions and the README read; no override phrases, credential paths or hidden charactersAprobado
- Las herramientas destructivas están etiquetadasNo verificado
- El endpoint remoto responde al handshake de MCPNo verificado
README
Ver en 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
Preguntas sobre valv MCP
¿Cómo agrego valv MCP a Claude Code?
Ejecuta claude mcp add --env 'DATABASE_URL=<YOUR_DATABASE_URL>' mcp -- npx -y @valv/mcp en tu terminal. Añade --scope user para que esté disponible en todos los proyectos.
¿Cómo agrego valv MCP a Cursor?
Abre ~/.cursor/mcp.json y añade el servidor en mcpServers, usando la configuración de Cursor que se muestra en la sección de instalación de arriba.
¿Qué bases de datos son compatibles?
El servidor funciona con PostgreSQL, MySQL, SQLite, CockroachDB, ClickHouse y MongoDB.
¿El acceso a la base de datos es de solo lectura?
Sí, el servidor proporciona herramientas que son de solo lectura por defecto para garantizar la seguridad.
¿Cómo puedo restringir qué tablas o columnas puede ver un agente?
Puedes usar un archivo de políticas para definir reglas de acceso específicas, como permitir lecturas en ciertas tablas o denegar columnas específicas.
¿Puedo usar esto con MongoDB?
Sí, puedes usar una cadena de conexión estándar para MongoDB y configurar la variable VALV_DATABASE si la URL no selecciona una base de datos.