# alessandro-massarotti-jr/mcp-gateway architecture

> Architecture diagram of the GitHub repository alessandro-massarotti-jr/mcp-gateway, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/alessandro-massarotti-jr/mcp-gateway
- Repository: https://github.com/alessandro-massarotti-jr/mcp-gateway

## Overview

MCP Gateway exposes infrastructure operations as MCP tools over stateless HTTP. An agent calls the HTTP endpoint; the server builds an MCP tool set, dispatches the requested operation to a configured provider, and returns a structured response. Providers cover PostgreSQL, MongoDB, RabbitMQ, Redis, and Oracle, plus a gateway health diagnostic. Shared configuration and tool-response handling support this runtime. Provider operations are summarized by subsystem; the README documents capabilities beyond the sampled implementation excerpts.

Main entry points: [`src/index.ts`](https://github.com/alessandro-massarotti-jr/mcp-gateway/blob/main/src/index.ts) (Runtime startup), [`src/server/mcp-server.ts`](https://github.com/alessandro-massarotti-jr/mcp-gateway/blob/main/src/server/mcp-server.ts) (MCP server), [`src/tools/check-providers-status.tool.ts`](https://github.com/alessandro-massarotti-jr/mcp-gateway/blob/main/src/tools/check-providers-status.tool.ts) (Provider status), [`src/providers/PostgresProvider.ts`](https://github.com/alessandro-massarotti-jr/mcp-gateway/blob/main/src/providers/PostgresProvider.ts) (PostgreSQL tools)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Gateway entry"]
  node_http["HTTP transport<br/>[http.ts]"]
  node_bootstrap["Runtime startup<br/>[index.ts]"]
end

subgraph group_dispatch["MCP dispatch"]
  node_mcp["MCP server<br/>[mcp-server.ts]"]
  node_status["Provider status"]
end

subgraph group_providers["Backend providers"]
  node_postgres["PostgreSQL tools"]
  node_mongo["MongoDB tools<br/>[MongoProvider.ts]"]
  node_rabbit["RabbitMQ tools"]
  node_redis["Redis tools<br/>[RedisProvider.ts]"]
  node_oracle["Oracle tools<br/>[OracleProvider.ts]"]
end

subgraph group_shared["Shared runtime"]
  node_config["Configuration<br/>[Config.ts]"]
  node_tool["Tool execution<br/>[Tool.ts]"]
  node_errors["Error contract<br/>[CustomError.ts]"]
  node_logger["Logging<br/>[Logger.ts]"]
end

node_agent(("MCP client"))
node_pgdb[("PostgreSQL")]
node_mongodb[("MongoDB")]
node_broker["RabbitMQ"]
node_redisstore[("Redis")]
node_oracledb[("Oracle")]

node_agent -->|"calls endpoint"| node_http
node_bootstrap -->|"loads settings"| node_config
node_bootstrap -->|"creates app"| node_http
node_bootstrap -->|"initializes provider"| node_postgres
node_bootstrap -->|"initializes provider"| node_mongo
node_bootstrap -->|"initializes provider"| node_rabbit
node_bootstrap -->|"initializes provider"| node_redis
node_bootstrap -->|"initializes provider"| node_oracle
node_http -->|"routes requests"| node_mcp
node_mcp -->|"registers diagnostic"| node_status
node_mcp -->|"registers tools"| node_postgres
node_mcp -->|"registers tools"| node_mongo
node_mcp -->|"registers tools"| node_rabbit
node_mcp -->|"registers tools"| node_redis
node_mcp -->|"registers tools"| node_oracle
node_status -->|"checks status"| node_postgres
node_status -->|"checks status"| node_mongo
node_status -->|"checks status"| node_rabbit
node_status -->|"checks status"| node_redis
node_status -->|"checks status"| node_oracle
node_postgres -->|"queries database"| node_pgdb
node_mongo -->|"operates database"| node_mongodb
node_rabbit -->|"publishes and peeks"| node_broker
node_redis -->|"reads and writes"| node_redisstore
node_oracle -->|"executes queries"| node_oracledb
node_postgres -->|"reads settings"| node_config
node_mongo -->|"reads settings"| node_config
node_rabbit -->|"reads settings"| node_config
node_redis -->|"reads settings"| node_config
node_oracle -->|"reads settings"| node_config
node_postgres -->|"defines operations"| node_tool
node_mongo -->|"defines operations"| node_tool
node_rabbit -->|"defines operations"| node_tool
node_redis -->|"defines operations"| node_tool
node_oracle -->|"defines operations"| node_tool
node_tool -->|"maps exceptions"| node_errors
node_bootstrap -->|"initializes logger"| node_logger

click node_http "https://github.com/alessandro-massarotti-jr/mcp-gateway/blob/main/src/server/http.ts"
click node_bootstrap "https://github.com/alessandro-massarotti-jr/mcp-gateway/blob/main/src/index.ts"
click node_mcp "https://github.com/alessandro-massarotti-jr/mcp-gateway/blob/main/src/server/mcp-server.ts"
click node_status "https://github.com/alessandro-massarotti-jr/mcp-gateway/blob/main/src/tools/check-providers-status.tool.ts"
click node_postgres "https://github.com/alessandro-massarotti-jr/mcp-gateway/blob/main/src/providers/PostgresProvider.ts"
click node_mongo "https://github.com/alessandro-massarotti-jr/mcp-gateway/blob/main/src/providers/MongoProvider.ts"
click node_rabbit "https://github.com/alessandro-massarotti-jr/mcp-gateway/blob/main/src/providers/RabbitMqProvider.ts"
click node_redis "https://github.com/alessandro-massarotti-jr/mcp-gateway/blob/main/src/providers/RedisProvider.ts"
click node_oracle "https://github.com/alessandro-massarotti-jr/mcp-gateway/blob/main/src/providers/OracleProvider.ts"
click node_config "https://github.com/alessandro-massarotti-jr/mcp-gateway/blob/main/src/core/Config.ts"
click node_tool "https://github.com/alessandro-massarotti-jr/mcp-gateway/blob/main/src/core/Tool.ts"
click node_errors "https://github.com/alessandro-massarotti-jr/mcp-gateway/blob/main/src/errors/CustomError.ts"
click node_logger "https://github.com/alessandro-massarotti-jr/mcp-gateway/blob/main/src/core/Logger.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_http,node_bootstrap,node_agent toneBlue
class node_mcp,node_status,node_pgdb,node_mongodb,node_redisstore,node_oracledb toneAmber
class node_postgres,node_mongo,node_rabbit,node_redis,node_oracle toneMint
class node_config,node_tool,node_errors,node_logger toneRose
class node_broker toneIndigo
```

## Components

### Gateway entry

- [HTTP transport](https://github.com/alessandro-massarotti-jr/mcp-gateway/blob/main/src/server/http.ts): `src/server/http.ts`
- [Runtime startup](https://github.com/alessandro-massarotti-jr/mcp-gateway/blob/main/src/index.ts): `src/index.ts`

### MCP dispatch

- [MCP server](https://github.com/alessandro-massarotti-jr/mcp-gateway/blob/main/src/server/mcp-server.ts): `src/server/mcp-server.ts`
- [Provider status](https://github.com/alessandro-massarotti-jr/mcp-gateway/blob/main/src/tools/check-providers-status.tool.ts): `src/tools/check-providers-status.tool.ts`

### Backend providers

- [PostgreSQL tools](https://github.com/alessandro-massarotti-jr/mcp-gateway/blob/main/src/providers/PostgresProvider.ts): `src/providers/PostgresProvider.ts`
- [MongoDB tools](https://github.com/alessandro-massarotti-jr/mcp-gateway/blob/main/src/providers/MongoProvider.ts): `src/providers/MongoProvider.ts`
- [RabbitMQ tools](https://github.com/alessandro-massarotti-jr/mcp-gateway/blob/main/src/providers/RabbitMqProvider.ts): `src/providers/RabbitMqProvider.ts`
- [Redis tools](https://github.com/alessandro-massarotti-jr/mcp-gateway/blob/main/src/providers/RedisProvider.ts): `src/providers/RedisProvider.ts`
- [Oracle tools](https://github.com/alessandro-massarotti-jr/mcp-gateway/blob/main/src/providers/OracleProvider.ts): `src/providers/OracleProvider.ts`

### Shared runtime

- [Configuration](https://github.com/alessandro-massarotti-jr/mcp-gateway/blob/main/src/core/Config.ts): `src/core/Config.ts`
- [Tool execution](https://github.com/alessandro-massarotti-jr/mcp-gateway/blob/main/src/core/Tool.ts): `src/core/Tool.ts`
- [Error contract](https://github.com/alessandro-massarotti-jr/mcp-gateway/blob/main/src/errors/CustomError.ts): `src/errors/CustomError.ts`
- [Logging](https://github.com/alessandro-massarotti-jr/mcp-gateway/blob/main/src/core/Logger.ts): `src/core/Logger.ts`

### Other components

- **MCP client**
- **PostgreSQL**
- **MongoDB**
- **RabbitMQ**
- **Redis**
- **Oracle**

## Connections

- MCP client → HTTP transport: calls endpoint (evidence: `README.md`)
- Runtime startup → Configuration: loads settings (evidence: `src/index.ts`)
- Runtime startup → HTTP transport: creates app (evidence: `src/index.ts`)
- Runtime startup → PostgreSQL tools: initializes provider (evidence: `src/index.ts`)
- Runtime startup → MongoDB tools: initializes provider (evidence: `src/index.ts`)
- Runtime startup → RabbitMQ tools: initializes provider (evidence: `src/index.ts`)
- Runtime startup → Redis tools: initializes provider (evidence: `src/index.ts`)
- Runtime startup → Oracle tools: initializes provider (evidence: `src/index.ts`)
- HTTP transport → MCP server: routes requests (evidence: `src/server/http.ts`)
- MCP server → Provider status: registers diagnostic (evidence: `src/server/mcp-server.ts`)
- MCP server → PostgreSQL tools: registers tools (evidence: `src/server/mcp-server.ts`)
- MCP server → MongoDB tools: registers tools (evidence: `src/server/mcp-server.ts`)
- MCP server → RabbitMQ tools: registers tools (evidence: `src/server/mcp-server.ts`)
- MCP server → Redis tools: registers tools (evidence: `src/server/mcp-server.ts`)
- MCP server → Oracle tools: registers tools (evidence: `src/server/mcp-server.ts`)
- Provider status → PostgreSQL tools: checks status (evidence: `src/tools/check-providers-status.tool.ts`)
- Provider status → MongoDB tools: checks status (evidence: `src/tools/check-providers-status.tool.ts`)
- Provider status → RabbitMQ tools: checks status (evidence: `src/tools/check-providers-status.tool.ts`)
- Provider status → Redis tools: checks status (evidence: `src/tools/check-providers-status.tool.ts`)
- Provider status → Oracle tools: checks status (evidence: `src/tools/check-providers-status.tool.ts`)
- PostgreSQL tools → PostgreSQL: queries database (evidence: `src/providers/PostgresProvider.ts`)
- MongoDB tools → MongoDB: operates database (evidence: `README.md`)
- RabbitMQ tools → RabbitMQ: publishes and peeks (evidence: `src/providers/RabbitMqProvider.ts`)
- Redis tools → Redis: reads and writes (evidence: `README.md`)
- Oracle tools → Oracle: executes queries (evidence: `src/providers/OracleProvider.ts`)
- PostgreSQL tools → Configuration: reads settings (evidence: `src/providers/PostgresProvider.ts`)
- MongoDB tools → Configuration: reads settings (evidence: `src/providers/MongoProvider.ts`)
- RabbitMQ tools → Configuration: reads settings (evidence: `src/providers/RabbitMqProvider.ts`)
- Redis tools → Configuration: reads settings (evidence: `src/providers/RedisProvider.ts`)
- Oracle tools → Configuration: reads settings (evidence: `src/providers/OracleProvider.ts`)
- PostgreSQL tools → Tool execution: defines operations (evidence: `src/providers/PostgresProvider.ts`)
- MongoDB tools → Tool execution: defines operations (evidence: `src/providers/MongoProvider.ts`)
- RabbitMQ tools → Tool execution: defines operations (evidence: `src/providers/RabbitMqProvider.ts`)
- Redis tools → Tool execution: defines operations (evidence: `src/providers/RedisProvider.ts`)
- Oracle tools → Tool execution: defines operations (evidence: `src/providers/OracleProvider.ts`)
- Tool execution → Error contract: maps exceptions (evidence: `src/core/Tool.ts`)
- Runtime startup → Logging: initializes logger (evidence: `src/index.ts`)
