- • The Application is a DI Context.
- • Controllers, tools, services, config, and the servers are all bindings.
- • New capability = new binding; you never edit a central registry.
- • Swap any dependency for tests with one
app.bind(...).
- • RestServer finds
restController-tagged bindings.
- • MCPServer finds
MCP_SERVERS extensions.
- • Discovery happens at
app.start() — no router file.
- • Run REST, MCP, or both from one process.
- • A Zod schema is the validator and the
z.infer type.
- • …the OpenAPI 3.1 parameter/response.
- • …the MCP tool input/output.
- • …and the rendered docs. Change it once; all move together.