mcptesis
Provides read-only access to a PostgreSQL database, with tools to list schema tables, describe table details, and run SELECT/WITH queries.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcptesisWhat's the number of vehicles currently out of service?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcptesis — MCP server (solo lectura) sobre la base de flota
Servidor MCP que expone la base de datos del sistema de
gestión de flota como tools de solo lectura. Lo consume el chatbot del backend
(/api/chatbot), que corre el agent loop contra un LLM (vía OpenRouter) y usa estas tools
para responder preguntas en lenguaje natural.
backend /api/chatbot ──HTTP + Bearer──► mcptesis (:4000/mcp) ──SELECT──► PostgreSQL (rol read-only)Tools expuestas
Tool | Args | Qué hace |
|
| Esquema completo como DDL: columnas con tipo exacto, PK, FKs, valores permitidos, CHECKs, índices con semántica y cantidad real de filas. |
|
| Lo mismo para una sola tabla. Sugiere nombres parecidos si no existe. |
| — | Invalida el cache de introspección. |
|
| Filas reales + valores distintos de cada columna de baja cardinalidad. |
|
| Busca cómo está escrito un valor (ignora mayúsculas y tildes). |
|
| Corre |
|
| Ejecuta una consulta |
| — | Glosario del dominio + consultas verificadas para adaptar. |
Por qué estas tools y no sólo run_query
El esquema le dice al modelo qué columnas existen, pero no cómo se ven los datos.
La mayoría de las consultas mal formuladas no son errores de sintaxis: son
literales inventados ('activo' en vez de 'en_progreso'), joins por la columna
equivocada, y filtros de negocio omitidos. Cada tool ataca una de esas causas:
Valores permitidos en el esquema. Los
CHECK ... IN (...)y los enums se muestran inline en cada columna, así que el modelo no tiene que adivinarlos.sample_table/search_values. Para los valores que ningúnCHECKdeclara (un apellido, una localidad, una marca), le muestran el literal exacto.get_query_examples. Trae los joins canónicos y las reglas que el esquema no dice: quevehiculosse identifica porpatentey no por un id, queactividades.id_empresaapunta aempresas.rut, que las métricas de viaje sólo existen cuandoactividad_confirmada.estado = 'cerrada'.Errores con contexto. Si un
SELECTfalla, el mensaje incluye las columnas reales de la tabla y sugerencias por cercanía, para que el reintento del agente sea dirigido en vez de otra adivinanza.instructions. Elinitializedevuelve el método de trabajo y el glosario; el backend los inyecta en el system prompt (verchatbot.mcp.ts).
El conocimiento de dominio vive en src/domain.ts. Es el archivo
a mantener cuando cambia el modelo de negocio.
Candados de solo lectura (defensa en profundidad)
Rol Postgres read-only — el server se conecta con
DATABASE_URL_READONLY, un rol que solo tieneSELECT.Validación estructural (
src/guards.ts) — una sola sentencia, debe empezar conSELECT/WITH, sin;, y rechaza palabras clave de escritura/DDL.Transacción
READ ONLYconstatement_timeoutyLIMITforzado (src/db.ts).
Related MCP server: MCP PostgreSQL
Requisitos
Node.js 20+ (probado en 22).
Acceso a la base PostgreSQL del sistema de flota.
Setup
npm install
cp .env.example .env # y completá los valores (ver abajo).env:
PORT=4000
DATABASE_URL_READONLY=postgresql://fleet_readonly:PASSWORD@host:5432/db
DB_SSL=true # true en Render/RDS
MCP_AUTH_TOKEN=<mismo token que el backend>
QUERY_TIMEOUT_MS=5000
MAX_ROWS=500Crear el rol de solo lectura
Automático (usa un usuario owner para crear el rol):
ADMIN_DATABASE_URL="postgresql://OWNER:PASS@host:5432/db" \
READONLY_PASSWORD="una-password-fuerte" \
DB_SSL=true \
npm run create-readonly-roleO manual: ver sql/create_readonly_role.sql.
En bases administradas (Render) el usuario provisto puede no tener permiso para
CREATE ROLE. Si es el caso, apuntáDATABASE_URL_READONLYa la conexión normal: los guards de la app fuerzan solo lectura igual (candados 2 y 3), aunque perdés el candado 1.
Correr
npm run dev # desarrollo (tsx watch)
npm run build && npm start # producción
npm run smoke # con el server corriendo: lista tools + prueba list_schema/run_queryHealth check: GET http://localhost:4000/health.
Estructura
src/
config.ts # env validado con zod
db.ts # pool pg + runReadOnlyQuery (txn read-only, timeout, limit)
guards.ts # validación SELECT-only (ignora literales y comentarios)
introspection.ts # esquema desde pg_catalog (cacheado con TTL)
render.ts # esquema como DDL + resultados como tabla
errors.ts # errores de Postgres traducidos con sugerencias
domain.ts # glosario del negocio + consultas de referencia
tools.ts # registro de las 8 tools MCP
server.ts # McpServer + instructions
index.ts # Express + Streamable HTTP transport + auth Bearer
scripts/
create-readonly-role.ts
smoke.ts
sql/
create_readonly_role.sqlThis server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityBmaintenanceAn MCP server that gives AI agents direct read-only access to PostgreSQL databases, enabling natural language analytics through tools for schema exploration, querying, trend analysis, and data quality checks.115MIT
- AlicenseNot gradedqualityDmaintenanceA read-only MCP server for PostgreSQL that enables safe database introspection and querying via natural language.751MIT
- FlicenseNot gradedqualityCmaintenancePostgreSQL MCP server that converts natural language to SQL and executes queries, with multi-database support and robust read-only safety checks.
- FlicenseNot gradedqualityBmaintenanceA read-only PostgreSQL MCP server that translates natural language queries into SQL, enforcing database routing, table/column whitelists, and safety checks. It offers schema inspection and query tools with optional output as SQL or results.
Related MCP Connectors
GibsonAI MCP server: manage your databases with natural language
Analytical memory for AI agents: a real Postgres queried in plain English over MCP. One command.
MCP server for managing Prisma Postgres.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Juanma519/mcp_tesis'
If you have feedback or need assistance with the MCP directory API, please join our Discord server