Class: PostgresToolBuilder
- Inherits:
-
Object
- Object
- PostgresToolBuilder
- Defined in:
- app/mcp/postgres_tool_builder.rb
Overview
Builds MCP tool classes for direct PostgreSQL database access.
Creates tools for each configured database connection (app_db, versions).
All queries are executed READ-ONLY. No DDL or DML mutations allowed.
Tools are namespaced by database:
app_db_list_schemas
app_db_execute_sql
postgres_versions_list_schemas
etc.
Access control: each tool checks Thread.current[:mcp_auth_result]
for the appropriate service key (app_db, postgres_versions).
Constant Summary collapse
- DATABASES =
{ 'app_db' => { label: 'App DB', connection_class: 'ActiveRecord::Base', description: 'Application database (read-only)' }, 'postgres_versions' => { label: 'Versions', connection_class: 'RecordVersionBase', description: 'Audit trail / versions database (read-only)' } }.freeze
Class Method Summary collapse
-
.build(tool_service_map) ⇒ Array<Class>
Build all PostgreSQL tool classes for all configured databases.
Class Method Details
.build(tool_service_map) ⇒ Array<Class>
Build all PostgreSQL tool classes for all configured databases.
36 37 38 39 40 41 42 43 44 45 46 |
# File 'app/mcp/postgres_tool_builder.rb', line 36 def self.build(tool_service_map) tools = [] DATABASES.each do |service_key, config| db_tools = build_for_database(service_key, config) db_tools.each { |t| tool_service_map[t.tool_name] = service_key } tools.concat(db_tools) end tools end |