Rails PG Extras MCP
Una interfaz MCP para la gema rails-pg-extras, que proporciona metadatos de PostgreSQL y análisis de rendimiento a través de indicaciones de LLM.
Documentación
Rails PG Extras MCP

Interfaz MCP (Model Context Protocol) para la gema rails-pg-extras. Explora fácilmente los metadatos de PostgreSQL y depura problemas de rendimiento. Verifica la hinchazón de tablas, consultas lentas, índices no utilizados y más. Ejecuta EXPLAIN ANALYZE en los cuellos de botella y obtén información clara y potenciada por LLM para optimizar tu base de datos.
Usa un usuario de solo lectura con privilegios mínimos para eliminar el riesgo de modificación o exposición de datos.
Consulta esta publicación para obtener información más detallada sobre el proyecto.

Instalación
bundle add rails-pg-extras-mcp
La biblioteca admite el protocolo MCP a través de la interfaz HTTP SSE.
config/routes.rb
mount RailsPgExtrasMcp::App.build, at: "pg_extras_mcp"
con autorización opcional:
opts = { auth_token: "secret" }
mount RailsPgExtrasMcp::App.build(opts), at: "pg_extras_mcp"
Consulta la documentación de fast-mcp para obtener una lista completa de opciones admitidas (el hash opts se pasa directamente tal cual). Para implementaciones en producción, probablemente necesites una configuración similar:
opts = { allowed_origins: [ /.*./ ], allowed_ips: [ "*" ], auth_token: "secret", localhost_only: false }
mount RailsPgExtrasMcp::App.build(opts) at: "pg_extras_mcp"
A continuación, instala mcp-remote:
npm install -g mcp-remote
y en el LLM de tu elección:
{
"mcpServers": {
"pg-extras": {
"command": "npx",
"args": [
"mcp-remote",
"http://localhost:3000/pg_extras_mcp/sse",
"--header",
"Authorization: secret"
]
}
}
}
Ahora puedes hacer preguntas al LLM sobre los metadatos y las métricas de rendimiento de tu base de datos.
Soporte opcional de EXPLAIN ANALYZE
Los métodos calls y outliers devuelven una lista de consultas de cuello de botella. El LLM puede obtener mejores conocimientos sobre estas consultas realizando análisis EXPLAIN y EXPLAIN ANALYZE. El servidor MCP expone dos métodos opcionales para este propósito: explain y explain_analyze.
Puedes habilitarlos configurando las siguientes variables ENV:
ENV['PG_EXTRAS_MCP_EXPLAIN_ENABLED'] = 'true'
ENV['PG_EXTRAS_MCP_EXPLAIN_ANALYZE_ENABLED'] = 'true'
Habilitar estas funciones significa que un LLM puede ejecutar consultas arbitrarias en tu base de datos. El contexto de ejecución se envuelve en una transacción y se revierte, por lo que, en teoría, cualquier modificación de datos no debería ser posible. Pero se recomienda configurar un permiso de solo lectura si deseas usar estas funciones. Al especificar ENV['RAILS_PG_EXTRAS_MCP_DATABASE_URL'] puedes sobrescribir la conexión predeterminada de la base de datos de Rails ActiveRecord para restringir el alcance del acceso:
Mínima responsabilidad
Si no planeas usar las funciones EXPLAIN ANALYZE, debes configurar un usuario con acceso de solo lectura a las tablas de metadatos:
CREATE ROLE extras_viewer NOLOGIN;
CREATE USER extras_user WITH PASSWORD 'your_password';
GRANT extras_viewer TO extras_user;
GRANT CONNECT ON DATABASE your_db_name TO extras_user;
GRANT USAGE ON SCHEMA public TO extras_user;
GRANT SELECT ON pg_stat_statements TO extras_user;
GRANT SELECT ON pg_stat_activity, pg_locks TO extras_user;
GRANT SELECT ON pg_stat_user_indexes, pg_index TO extras_user;
GRANT SELECT ON pg_stat_all_tables, pg_stat_database, pg_settings, pg_namespace TO extras_user;
GRANT EXECUTE ON FUNCTION pg_relation_size(regclass) TO extras_user;
GRANT EXECUTE ON FUNCTION pg_indexes_size(regclass) TO extras_user;
GRANT EXECUTE ON FUNCTION pg_table_size(regclass) TO extras_user;
GRANT EXECUTE ON FUNCTION pg_total_relation_size(regclass) TO extras_user;
Puedes pedirle a un LLM que verifique con qué usuario de base de datos está conectado usando la herramienta connections.
Estado
El proyecto está en una beta temprana, así que procede con precaución.